@vechain/vechain-kit 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/blakejs/util.js","../../../node_modules/blakejs/blake2b.js","../../../node_modules/blakejs/blake2s.js","../../../node_modules/blakejs/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/rlp/src/index.ts","../../../node_modules/elliptic/package.json","../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-assert/index.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/inherits/inherits_browser.js","../../../node_modules/inherits/inherits.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/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/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","../src/assets/abi.ts","../src/assets/icons/GoogleLogo/GoogleLogo.tsx","../src/assets/svg.ts","../src/assets/icons/TwitterLogo/TwitterLogo.tsx","../src/assets/icons/VechainLogo/VechainLogo.tsx","../src/assets/icons/VechainLogoHorizontal/VechainLogoHorizontal.tsx","../src/components/ConnectModal/ConnectModal.tsx","../src/components/ConnectModal/Contents/MainContent.tsx","../src/providers/DAppKitPrivyProvider.tsx","../src/hooks/index.ts","../src/hooks/useWallet.ts","../src/hooks/useSmartAccount.tsx","../node_modules/viem/accounts/utils/publicKeyToAddress.ts","../node_modules/viem/utils/encoding/toRlp.ts","../node_modules/viem/experimental/eip7702/utils/hashAuthorization.ts","../node_modules/viem/utils/blob/blobsToCommitments.ts","../node_modules/viem/utils/blob/blobsToProofs.ts","../node_modules/viem/utils/hash/sha256.ts","../node_modules/viem/utils/blob/commitmentToVersionedHash.ts","../node_modules/viem/utils/blob/commitmentsToVersionedHashes.ts","../node_modules/viem/errors/blob.ts","../node_modules/viem/utils/blob/toBlobs.ts","../node_modules/viem/utils/blob/toBlobSidecars.ts","../node_modules/viem/utils/transaction/getTransactionType.ts","../node_modules/viem/utils/regex.ts","../node_modules/viem/errors/typedData.ts","../node_modules/viem/utils/signature/hashTypedData.ts","../node_modules/viem/utils/typedData.ts","../node_modules/viem/constants/strings.ts","../node_modules/viem/utils/signature/toPrefixedMessage.ts","../node_modules/viem/utils/signature/hashMessage.ts","../node_modules/viem/utils/transaction/assertTransaction.ts","../node_modules/viem/experimental/eip7702/utils/serializeAuthorizationList.ts","../node_modules/viem/utils/transaction/serializeAccessList.ts","../node_modules/viem/utils/transaction/serializeTransaction.ts","../node_modules/viem/utils/signature/serializeSignature.ts","../src/utils/Constants.tsx","../src/utils/FormattingUtils.tsx","../node_modules/viem/accounts/generatePrivateKey.ts","../node_modules/viem/accounts/toAccount.ts","../node_modules/viem/accounts/utils/sign.ts","../node_modules/viem/accounts/utils/signAuthorization.ts","../node_modules/viem/accounts/utils/signMessage.ts","../node_modules/viem/accounts/utils/signTransaction.ts","../node_modules/viem/accounts/utils/signTypedData.ts","../node_modules/viem/accounts/privateKeyToAccount.ts","../src/utils/RandomTxForwarder.tsx","../../../node_modules/thor-devkit/src/keccak.ts","../../../node_modules/thor-devkit/src/address.ts","../../../node_modules/thor-devkit/src/blake2b.ts","../../../node_modules/bignumber.js/bignumber.mjs","../../../node_modules/thor-devkit/src/rlp.ts","../../../node_modules/thor-devkit/src/secp256k1.ts","../../../node_modules/thor-devkit/src/transaction.ts","../src/utils/HexUtils.ts","../src/utils/AddressUtils.ts","../src/hooks/useTxReceipt.ts","../src/hooks/api/smartAccount/useGetSmartAccountAddress.tsx","../src/hooks/api/useAccountBalance.ts","../src/hooks/api/oracle/useGetTokenUsdPrice.ts","../src/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts","../src/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts","../src/contracts/typechain-types/factories/contracts/deprecated/V1/interfaces/IB3TR__factory.ts","../src/contracts/typechain-types/factories/contracts/interfaces/IVOT3__factory.ts","../src/contracts/typechain-types/factories/contracts/interfaces/IVechainEnergyOracleV1__factory.ts","../src/hooks/api/vebetterdao/useGetB3trBalance.ts","../src/hooks/api/vebetterdao/useGetVot3Balance.ts","../src/hooks/api/useBalances.ts","../src/hooks/api/veDelegate/useGetVeDelegateBalance.ts","../src/hooks/api/privy/useFetchAppInfo.ts","../src/hooks/api/vetDomains/useGetVetDomain.ts","../src/hooks/api/vetDomains/useCachedVechainDomain.ts","../src/hooks/modals/useConnectModal.tsx","../src/hooks/modals/useAccountModal.tsx","../src/hooks/transactions/useSendTransaction.ts","../src/hooks/transactions/useTransferERC20.ts","../src/hooks/transactions/useTransferVET.ts","../src/hooks/useRefreshBalances.ts","../src/theme/theme.ts","../../../node_modules/@chakra-ui/anatomy/src/anatomy.ts","../../../node_modules/@chakra-ui/anatomy/src/components.ts","../src/theme/modal.ts","../src/theme/card.ts","../src/theme/button.ts","../src/providers/EnsureQueryClient.tsx","../src/components/common/Motion/FadeInView.tsx","../src/components/common/Motion/FadeInViewFromBottom.tsx","../src/components/common/Motion/FadeInViewFromLeft.tsx","../src/components/common/Motion/FadeInViewFromRight.tsx","../src/components/common/ModalBackButton.tsx","../src/components/common/AddressDisplay.tsx","../src/components/common/VersionFooter.tsx","../package.json","../src/components/common/StickyHeaderContainer.tsx","../src/components/common/StickyFooterContainer.tsx","../src/components/ConnectModal/Contents/EcosystemContent.tsx","../src/components/ConnectModal/Components/ConnectionButton.tsx","../src/components/ConnectModal/Components/EmailLoginButton.tsx","../src/components/EmailCodeVerificationModal/EmailCodeVerificationModal.tsx","../src/components/WalletButton/WalletButton.tsx","../src/components/TransactionModal/TransactionModal.tsx","../src/components/TransactionModal/Contents/ConfirmationModalContent.tsx","../src/components/TransactionModal/Contents/CustomModalContent.tsx","../src/components/TransactionModal/Contents/ErrorModalContent.tsx","../src/components/TransactionModal/Contents/LoadingModalContent.tsx","../src/components/TransactionModal/Contents/SuccessModalContent.tsx","../src/components/TransactionModal/Components/ShareButtons.tsx","../src/components/TransactionToast/TransactionToast.tsx","../src/components/AccountModal/AccountModal.tsx","../src/components/AccountModal/Contents/Account/AccountMainContent.tsx","../src/components/AccountModal/Contents/Account/AccountsListContent.tsx","../src/components/AccountModal/Contents/Account/SmartAccountContent.tsx","../src/components/AccountModal/Contents/Account/WalletSettingsContent.tsx","../src/components/AccountModal/Contents/SendToken/SendTokenContent.tsx","../src/components/AccountModal/Contents/SendToken/SelectTokenContent.tsx","../src/components/AccountModal/Contents/SendToken/SendTokenSummaryContent.tsx","../src/components/AccountModal/Contents/Receive/ReceiveTokenContent.tsx","../src/components/AccountModal/Components/AccountDetailsButton.tsx","../src/components/AccountModal/Components/ActionButton.tsx","../src/components/AccountModal/Components/AccountSelector.tsx","../src/components/AccountModal/Components/BalanceSection.tsx","../src/components/AccountModal/Components/Tabs/AssetsSection.tsx","../src/components/AccountModal/Components/Tabs/Contents/AssetsTabPanel.tsx","../src/components/AccountModal/Components/Tabs/Contents/AssetRow.tsx","../src/components/AccountModal/Components/Tabs/Contents/NFTsTabPanel.tsx","../src/components/AccountModal/Components/Tabs/Contents/ActivityTabPanel.tsx","../src/components/AccountModal/Components/QuickActionsSection.tsx","../src/components/LoginLoadingModal/LoginLoadingModal.tsx"],"sourcesContent":["/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n","const ERROR_MSG_INPUT = 'Input must be an string, Buffer or Uint8Array'\n\n// For convenience, let people hash a string, not just a Uint8Array\nfunction normalizeInput (input) {\n let ret\n if (input instanceof Uint8Array) {\n ret = input\n } else if (typeof input === 'string') {\n const encoder = new TextEncoder()\n ret = encoder.encode(input)\n } else {\n throw new Error(ERROR_MSG_INPUT)\n }\n return ret\n}\n\n// Converts a Uint8Array to a hexadecimal string\n// For example, toHex([255, 0, 255]) returns \"ff00ff\"\nfunction toHex (bytes) {\n return Array.prototype.map\n .call(bytes, function (n) {\n return (n < 16 ? '0' : '') + n.toString(16)\n })\n .join('')\n}\n\n// Converts any value in [0...2^32-1] to an 8-character hex string\nfunction uint32ToHex (val) {\n return (0x100000000 + val).toString(16).substring(1)\n}\n\n// For debugging: prints out hash state in the same format as the RFC\n// sample computation exactly, so that you can diff\nfunction debugPrint (label, arr, size) {\n let msg = '\\n' + label + ' = '\n for (let i = 0; i < arr.length; i += 2) {\n if (size === 32) {\n msg += uint32ToHex(arr[i]).toUpperCase()\n msg += ' '\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n } else if (size === 64) {\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n msg += uint32ToHex(arr[i]).toUpperCase()\n } else throw new Error('Invalid size ' + size)\n if (i % 6 === 4) {\n msg += '\\n' + new Array(label.length + 4).join(' ')\n } else if (i < arr.length - 2) {\n msg += ' '\n }\n }\n console.log(msg)\n}\n\n// For performance testing: generates N bytes of input, hashes M times\n// Measures and prints MB/second hash performance each time\nfunction testSpeed (hashFn, N, M) {\n let startMs = new Date().getTime()\n\n const input = new Uint8Array(N)\n for (let i = 0; i < N; i++) {\n input[i] = i % 256\n }\n const genMs = new Date().getTime()\n console.log('Generated random input in ' + (genMs - startMs) + 'ms')\n startMs = genMs\n\n for (let i = 0; i < M; i++) {\n const hashHex = hashFn(input)\n const hashMs = new Date().getTime()\n const ms = hashMs - startMs\n startMs = hashMs\n console.log('Hashed in ' + ms + 'ms: ' + hashHex.substring(0, 20) + '...')\n console.log(\n Math.round((N / (1 << 20) / (ms / 1000)) * 100) / 100 + ' MB PER SECOND'\n )\n }\n}\n\nmodule.exports = {\n normalizeInput: normalizeInput,\n toHex: toHex,\n debugPrint: debugPrint,\n testSpeed: testSpeed\n}\n","// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n const o0 = v[a] + v[b]\n let o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n let o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n let o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24)\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n const x0 = m[ix]\n const x1 = m[ix + 1]\n const y0 = m[iy]\n const y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n let xor0 = v[d] ^ v[a]\n let xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nconst BLAKE2B_IV32 = new Uint32Array([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372,\n 0x5f1d36f1, 0xa54ff53a, 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c,\n 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\n])\n\nconst SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13,\n 6, 1, 12, 0, 2, 11, 7, 5, 3, 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1,\n 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5, 7, 2, 4,\n 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5,\n 15, 14, 1, 9, 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7,\n 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11, 3, 0, 8, 12, 2,\n 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0,\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6,\n 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nconst SIGMA82 = new Uint8Array(\n SIGMA8.map(function (x) {\n return x * 2\n })\n)\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nconst v = new Uint32Array(32)\nconst m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n let i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// reusable parameterBlock\nconst parameterBlock = new Uint8Array([\n 0,\n 0,\n 0,\n 0, // 0: outlen, keylen, fanout, depth\n 0,\n 0,\n 0,\n 0, // 4: leaf length, sequential mode\n 0,\n 0,\n 0,\n 0, // 8: node offset\n 0,\n 0,\n 0,\n 0, // 12: node offset\n 0,\n 0,\n 0,\n 0, // 16: node depth, inner length, rfu\n 0,\n 0,\n 0,\n 0, // 20: rfu\n 0,\n 0,\n 0,\n 0, // 24: rfu\n 0,\n 0,\n 0,\n 0, // 28: rfu\n 0,\n 0,\n 0,\n 0, // 32: salt\n 0,\n 0,\n 0,\n 0, // 36: salt\n 0,\n 0,\n 0,\n 0, // 40: salt\n 0,\n 0,\n 0,\n 0, // 44: salt\n 0,\n 0,\n 0,\n 0, // 48: personal\n 0,\n 0,\n 0,\n 0, // 52: personal\n 0,\n 0,\n 0,\n 0, // 56: personal\n 0,\n 0,\n 0,\n 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\n// Takes an optinal Uint8Array salt\n// Takes an optinal Uint8Array personal\nfunction blake2bInit (outlen, key, salt, personal) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n if (salt && salt.length !== 16) {\n throw new Error('Illegal salt, expected Uint8Array with length is 16')\n }\n if (personal && personal.length !== 16) {\n throw new Error('Illegal personal, expected Uint8Array with length is 16')\n }\n\n // state, 'param block'\n const ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize parameterBlock before usage\n parameterBlock.fill(0)\n parameterBlock[0] = outlen\n if (key) parameterBlock[1] = key.length\n parameterBlock[2] = 1 // fanout\n parameterBlock[3] = 1 // depth\n if (salt) parameterBlock.set(salt, 32)\n if (personal) parameterBlock.set(personal, 48)\n\n // initialize hash state\n for (let i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameterBlock, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 128) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2b (input, key, outlen, salt, personal) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n if (salt) {\n salt = util.normalizeInput(salt)\n }\n if (personal) {\n personal = util.normalizeInput(personal)\n }\n\n // do the math\n const ctx = blake2bInit(outlen, key, salt, personal)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2bHex (input, key, outlen, salt, personal) {\n const output = blake2b(input, key, outlen, salt, personal)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n","// BLAKE2s hash function in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// Little-endian byte access.\n// Expects a Uint8Array and an index\n// Returns the little-endian uint32 at v[i..i+3]\nfunction B2S_GET32 (v, i) {\n return v[i] ^ (v[i + 1] << 8) ^ (v[i + 2] << 16) ^ (v[i + 3] << 24)\n}\n\n// Mixing function G.\nfunction B2S_G (a, b, c, d, x, y) {\n v[a] = v[a] + v[b] + x\n v[d] = ROTR32(v[d] ^ v[a], 16)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 12)\n v[a] = v[a] + v[b] + y\n v[d] = ROTR32(v[d] ^ v[a], 8)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 7)\n}\n\n// 32-bit right rotation\n// x should be a uint32\n// y must be between 1 and 31, inclusive\nfunction ROTR32 (x, y) {\n return (x >>> y) ^ (x << (32 - y))\n}\n\n// Initialization Vector.\nconst BLAKE2S_IV = new Uint32Array([\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n])\n\nconst SIGMA = new Uint8Array([\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 14,\n 10,\n 4,\n 8,\n 9,\n 15,\n 13,\n 6,\n 1,\n 12,\n 0,\n 2,\n 11,\n 7,\n 5,\n 3,\n 11,\n 8,\n 12,\n 0,\n 5,\n 2,\n 15,\n 13,\n 10,\n 14,\n 3,\n 6,\n 7,\n 1,\n 9,\n 4,\n 7,\n 9,\n 3,\n 1,\n 13,\n 12,\n 11,\n 14,\n 2,\n 6,\n 5,\n 10,\n 4,\n 0,\n 15,\n 8,\n 9,\n 0,\n 5,\n 7,\n 2,\n 4,\n 10,\n 15,\n 14,\n 1,\n 11,\n 12,\n 6,\n 8,\n 3,\n 13,\n 2,\n 12,\n 6,\n 10,\n 0,\n 11,\n 8,\n 3,\n 4,\n 13,\n 7,\n 5,\n 15,\n 14,\n 1,\n 9,\n 12,\n 5,\n 1,\n 15,\n 14,\n 13,\n 4,\n 10,\n 0,\n 7,\n 6,\n 3,\n 9,\n 2,\n 8,\n 11,\n 13,\n 11,\n 7,\n 14,\n 12,\n 1,\n 3,\n 9,\n 5,\n 0,\n 15,\n 4,\n 8,\n 6,\n 2,\n 10,\n 6,\n 15,\n 14,\n 9,\n 11,\n 3,\n 0,\n 8,\n 12,\n 2,\n 13,\n 7,\n 1,\n 4,\n 10,\n 5,\n 10,\n 2,\n 8,\n 4,\n 7,\n 6,\n 1,\n 5,\n 15,\n 11,\n 9,\n 14,\n 3,\n 12,\n 13,\n 0\n])\n\n// Compression function. \"last\" flag indicates last block\nconst v = new Uint32Array(16)\nconst m = new Uint32Array(16)\nfunction blake2sCompress (ctx, last) {\n let i = 0\n for (i = 0; i < 8; i++) {\n // init work variables\n v[i] = ctx.h[i]\n v[i + 8] = BLAKE2S_IV[i]\n }\n\n v[12] ^= ctx.t // low 32 bits of offset\n v[13] ^= ctx.t / 0x100000000 // high 32 bits\n if (last) {\n // last block flag set ?\n v[14] = ~v[14]\n }\n\n for (i = 0; i < 16; i++) {\n // get little-endian words\n m[i] = B2S_GET32(ctx.b, 4 * i)\n }\n\n // ten rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 32)\n for (i = 0; i < 10; i++) {\n // util.debugPrint(' (i=' + i + ') v[16]', v, 32)\n B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]])\n B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]])\n B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]])\n B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]])\n B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]])\n B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]])\n B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]])\n B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]])\n }\n // util.debugPrint(' (i=10) v[16]', v, 32)\n\n for (i = 0; i < 8; i++) {\n ctx.h[i] ^= v[i] ^ v[i + 8]\n }\n // util.debugPrint('h[8]', ctx.h, 32)\n}\n\n// Creates a BLAKE2s hashing context\n// Requires an output length between 1 and 32 bytes\n// Takes an optional Uint8Array key\nfunction blake2sInit (outlen, key) {\n if (!(outlen > 0 && outlen <= 32)) {\n throw new Error('Incorrect output length, should be in [1, 32]')\n }\n const keylen = key ? key.length : 0\n if (key && !(keylen > 0 && keylen <= 32)) {\n throw new Error('Incorrect key length, should be in [1, 32]')\n }\n\n const ctx = {\n h: new Uint32Array(BLAKE2S_IV), // hash state\n b: new Uint8Array(64), // input block\n c: 0, // pointer within block\n t: 0, // input count\n outlen: outlen // output length in bytes\n }\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n if (keylen > 0) {\n blake2sUpdate(ctx, key)\n ctx.c = 64 // at the end\n }\n\n return ctx\n}\n\n// Updates a BLAKE2s streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2sUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 64) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2sCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2s streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2sFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n while (ctx.c < 64) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2sCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = (ctx.h[i >> 2] >> (8 * (i & 3))) & 0xff\n }\n return out\n}\n\n// Computes the BLAKE2S hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2s (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 32\n input = util.normalizeInput(input)\n\n // do the math\n const ctx = blake2sInit(outlen, key)\n blake2sUpdate(ctx, input)\n return blake2sFinal(ctx)\n}\n\n// Computes the BLAKE2S hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2sHex (input, key, outlen) {\n const output = blake2s(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2s: blake2s,\n blake2sHex: blake2sHex,\n blake2sInit: blake2sInit,\n blake2sUpdate: blake2sUpdate,\n blake2sFinal: blake2sFinal\n}\n","const b2b = require('./blake2b')\nconst b2s = require('./blake2s')\n\nmodule.exports = {\n blake2b: b2b.blake2b,\n blake2bHex: b2b.blake2bHex,\n blake2bInit: b2b.blake2bInit,\n blake2bUpdate: b2b.blake2bUpdate,\n blake2bFinal: b2b.blake2bFinal,\n blake2s: b2s.blake2s,\n blake2sHex: b2s.blake2sHex,\n blake2sInit: b2s.blake2sInit,\n blake2sUpdate: b2s.blake2sUpdate,\n blake2sFinal: b2s.blake2sFinal\n}\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 // '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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","import BN from 'bn.js'\n\nimport { Decoded, Input, List } from './types'\n\n// Types exported outside of this package\nexport { Decoded, Input, List }\n\n/**\n * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP\n * This function takes in a data, convert it to buffer if not, and a length for recursion\n * @param input - will be converted to buffer\n * @returns returns buffer of encoded data\n **/\nexport function encode(input: Input): Buffer {\n if (Array.isArray(input)) {\n const output: Buffer[] = []\n for (let i = 0; i < input.length; i++) {\n output.push(encode(input[i]))\n }\n const buf = Buffer.concat(output)\n return Buffer.concat([encodeLength(buf.length, 192), buf])\n } else {\n const inputBuf = toBuffer(input)\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf])\n }\n}\n\n/**\n * Parse integers. Check if there is no leading zeros\n * @param v The value to parse\n * @param base The base to parse the integer into\n */\nfunction safeParseInt(v: string, base: number): number {\n if (v[0] === '0' && v[1] === '0') {\n throw new Error('invalid RLP: extra zeros')\n }\n\n return parseInt(v, base)\n}\n\nfunction encodeLength(len: number, offset: number): Buffer {\n if (len < 56) {\n return Buffer.from([len + offset])\n } else {\n const hexLength = intToHex(len)\n const lLength = hexLength.length / 2\n const firstByte = intToHex(offset + 55 + lLength)\n return Buffer.from(firstByte + hexLength, 'hex')\n }\n}\n\n/**\n * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}\n * @param input - will be converted to buffer\n * @param stream - Is the input a stream (false by default)\n * @returns - returns decode Array of Buffers containg the original message\n **/\nexport function decode(input: Buffer, stream?: boolean): Buffer\nexport function decode(input: Buffer[], stream?: boolean): Buffer[]\nexport function decode(input: Input, stream?: boolean): Buffer[] | Buffer | Decoded\nexport function decode(input: Input, stream: boolean = false): Buffer[] | Buffer | Decoded {\n if (!input || (input as any).length === 0) {\n return Buffer.from([])\n }\n\n const inputBuffer = toBuffer(input)\n const decoded = _decode(inputBuffer)\n\n if (stream) {\n return decoded\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder')\n }\n\n return decoded.data\n}\n\n/**\n * Get the length of the RLP input\n * @param input\n * @returns The length of the input or an empty Buffer if no input\n */\nexport function getLength(input: Input): Buffer | number {\n if (!input || (input as any).length === 0) {\n return Buffer.from([])\n }\n\n const inputBuffer = toBuffer(input)\n const firstByte = inputBuffer[0]\n\n if (firstByte <= 0x7f) {\n return inputBuffer.length\n } else if (firstByte <= 0xb7) {\n return firstByte - 0x7f\n } else if (firstByte <= 0xbf) {\n return firstByte - 0xb6\n } else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf\n } else {\n // a list over 55 bytes long\n const llength = firstByte - 0xf6\n const length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16)\n return llength + length\n }\n}\n\n/** Decode an input with RLP */\nfunction _decode(input: Buffer): Decoded {\n let length, llength, data, innerRemainder, d\n const decoded = []\n const firstByte = input[0]\n\n if (firstByte <= 0x7f) {\n // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.\n return {\n data: input.slice(0, 1),\n remainder: input.slice(1),\n }\n } else if (firstByte <= 0xb7) {\n // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string\n // The range of the first byte is [0x80, 0xb7]\n length = firstByte - 0x7f\n\n // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([])\n } else {\n data = input.slice(1, length)\n }\n\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80')\n }\n\n return {\n data: data,\n remainder: input.slice(length),\n }\n } else if (firstByte <= 0xbf) {\n // string is greater than 55 bytes long. A single byte with the value (0xb7 plus the length of the length),\n // followed by the length, followed by the string\n llength = firstByte - 0xb6\n if (input.length - 1 < llength) {\n throw new Error('invalid RLP: not enough bytes for string length')\n }\n length = safeParseInt(input.slice(1, llength).toString('hex'), 16)\n if (length <= 55) {\n throw new Error('invalid RLP: expected string length to be greater than 55')\n }\n data = input.slice(llength, length + llength)\n if (data.length < length) {\n throw new Error('invalid RLP: not enough bytes for string')\n }\n\n return {\n data: data,\n remainder: input.slice(length + llength),\n }\n } else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n length = firstByte - 0xbf\n innerRemainder = input.slice(1, length)\n while (innerRemainder.length) {\n d = _decode(innerRemainder)\n decoded.push(d.data as Buffer)\n innerRemainder = d.remainder\n }\n\n return {\n data: decoded,\n remainder: input.slice(length),\n }\n } else {\n // a list over 55 bytes long\n llength = firstByte - 0xf6\n length = safeParseInt(input.slice(1, llength).toString('hex'), 16)\n const totalLength = llength + length\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data')\n }\n\n innerRemainder = input.slice(llength, totalLength)\n if (innerRemainder.length === 0) {\n throw new Error('invalid rlp, List has a invalid length')\n }\n\n while (innerRemainder.length) {\n d = _decode(innerRemainder)\n decoded.push(d.data as Buffer)\n innerRemainder = d.remainder\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n }\n }\n}\n\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str: string): boolean {\n return str.slice(0, 2) === '0x'\n}\n\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer: number | bigint): string {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!')\n }\n const hex = integer.toString(16)\n return hex.length % 2 ? `0${hex}` : hex\n}\n\n/** Pad a string to be even */\nfunction padToEven(a: string): string {\n return a.length % 2 ? `0${a}` : a\n}\n\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer: number | bigint): Buffer {\n const hex = intToHex(integer)\n return Buffer.from(hex, 'hex')\n}\n\n/** Transform anything into a Buffer */\nfunction toBuffer(v: Input): Buffer {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n } else {\n return Buffer.from(v)\n }\n } else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([])\n } else {\n return intToBuffer(v)\n }\n } else if (v === null || v === undefined) {\n return Buffer.from([])\n } else if (v instanceof Uint8Array) {\n return Buffer.from(v as any)\n } else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n } else {\n throw new Error('invalid type')\n }\n }\n return v\n}\n","{\n \"name\": \"elliptic\",\n \"version\": \"6.5.4\",\n \"description\": \"EC cryptography\",\n \"main\": \"lib/elliptic.js\",\n \"files\": [\n \"lib\"\n ],\n \"scripts\": {\n \"lint\": \"eslint lib test\",\n \"lint:fix\": \"npm run lint -- --fix\",\n \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n \"test\": \"npm run lint && npm run unit\",\n \"version\": \"grunt dist && git add dist/\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git@github.com:indutny/elliptic\"\n },\n \"keywords\": [\n \"EC\",\n \"Elliptic\",\n \"curve\",\n \"Cryptography\"\n ],\n \"author\": \"Fedor Indutny <fedor@indutny.com>\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/indutny/elliptic/issues\"\n },\n \"homepage\": \"https://github.com/indutny/elliptic\",\n \"devDependencies\": {\n \"brfs\": \"^2.0.2\",\n \"coveralls\": \"^3.1.0\",\n \"eslint\": \"^7.6.0\",\n \"grunt\": \"^1.2.1\",\n \"grunt-browserify\": \"^5.3.0\",\n \"grunt-cli\": \"^1.3.2\",\n \"grunt-contrib-connect\": \"^3.0.0\",\n \"grunt-contrib-copy\": \"^1.0.0\",\n \"grunt-contrib-uglify\": \"^5.0.0\",\n \"grunt-mocha-istanbul\": \"^5.0.2\",\n \"grunt-saucelabs\": \"^9.0.1\",\n \"istanbul\": \"^0.4.5\",\n \"mocha\": \"^8.0.1\"\n },\n \"dependencies\": {\n \"bn.js\": \"^4.11.9\",\n \"brorand\": \"^1.1.0\",\n \"hash.js\": \"^1.0.0\",\n \"hmac-drbg\": \"^1.0.1\",\n \"inherits\": \"^2.0.4\",\n \"minimalistic-assert\": \"^1.0.1\",\n \"minimalistic-crypto-utils\": \"^1.0.1\"\n }\n}\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","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","'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 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","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","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","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\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 '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\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","'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","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 '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\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 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 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.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<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [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<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [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 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 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","export const SimpleAccountABI = [\n {\n inputs: [],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'target',\n type: 'address',\n },\n ],\n name: 'AddressEmptyCode',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ECDSAInvalidSignature',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'length',\n type: 'uint256',\n },\n ],\n name: 'ECDSAInvalidSignatureLength',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'ECDSAInvalidSignatureS',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'implementation',\n type: 'address',\n },\n ],\n name: 'ERC1967InvalidImplementation',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ERC1967NonPayable',\n type: 'error',\n },\n {\n inputs: [],\n name: 'FailedCall',\n type: 'error',\n },\n {\n inputs: [],\n name: 'InvalidInitialization',\n type: 'error',\n },\n {\n inputs: [],\n name: 'NotInitializing',\n type: 'error',\n },\n {\n inputs: [],\n name: 'UUPSUnauthorizedCallContext',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'slot',\n type: 'bytes32',\n },\n ],\n name: 'UUPSUnsupportedProxiableUUID',\n type: 'error',\n },\n {\n anonymous: false,\n inputs: [],\n name: 'EIP712DomainChanged',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint64',\n name: 'version',\n type: 'uint64',\n },\n ],\n name: 'Initialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'SimpleAccountInitialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'implementation',\n type: 'address',\n },\n ],\n name: 'Upgraded',\n type: 'event',\n },\n {\n inputs: [],\n name: 'UPGRADE_INTERFACE_VERSION',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n {\n internalType: 'bytes1',\n name: 'fields',\n type: 'bytes1',\n },\n {\n internalType: 'string',\n name: 'name',\n type: 'string',\n },\n {\n internalType: 'string',\n name: 'version',\n type: 'string',\n },\n {\n internalType: 'uint256',\n name: 'chainId',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'verifyingContract',\n type: 'address',\n },\n {\n internalType: 'bytes32',\n name: 'salt',\n type: 'bytes32',\n },\n {\n internalType: 'uint256[]',\n name: 'extensions',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'dest',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'func',\n type: 'bytes',\n },\n ],\n name: 'execute',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'dest',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'value',\n type: 'uint256[]',\n },\n {\n internalType: 'bytes[]',\n name: 'func',\n type: 'bytes[]',\n },\n ],\n name: 'executeBatch',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n {\n internalType: 'uint256',\n name: 'validAfter',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'validBefore',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'signature',\n type: 'bytes',\n },\n ],\n name: 'executeWithAuthorization',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'anOwner',\n type: 'address',\n },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256[]',\n name: '',\n type: 'uint256[]',\n },\n {\n internalType: 'uint256[]',\n name: '',\n type: 'uint256[]',\n },\n {\n internalType: 'bytes',\n name: '',\n type: 'bytes',\n },\n ],\n name: 'onERC1155BatchReceived',\n outputs: [\n {\n internalType: 'bytes4',\n name: '',\n type: 'bytes4',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: '',\n type: 'bytes',\n },\n ],\n name: 'onERC1155Received',\n outputs: [\n {\n internalType: 'bytes4',\n name: '',\n type: 'bytes4',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: '',\n type: 'bytes',\n },\n ],\n name: 'onERC721Received',\n outputs: [\n {\n internalType: 'bytes4',\n name: '',\n type: 'bytes4',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'proxiableUUID',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes4',\n name: 'interfaceId',\n type: 'bytes4',\n },\n ],\n name: 'supportsInterface',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newImplementation',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'upgradeToAndCall',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n stateMutability: 'payable',\n type: 'receive',\n },\n] as const;\n\nexport const SimpleAccountFactoryABI = [\n {\n inputs: [],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [],\n name: 'AccessControlBadConfirmation',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n internalType: 'bytes32',\n name: 'neededRole',\n type: 'bytes32',\n },\n ],\n name: 'AccessControlUnauthorizedAccount',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'target',\n type: 'address',\n },\n ],\n name: 'AddressEmptyCode',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'implementation',\n type: 'address',\n },\n ],\n name: 'ERC1967InvalidImplementation',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ERC1967NonPayable',\n type: 'error',\n },\n {\n inputs: [],\n name: 'FailedCall',\n type: 'error',\n },\n {\n inputs: [],\n name: 'InvalidInitialization',\n type: 'error',\n },\n {\n inputs: [],\n name: 'NotInitializing',\n type: 'error',\n },\n {\n inputs: [],\n name: 'UUPSUnauthorizedCallContext',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'slot',\n type: 'bytes32',\n },\n ],\n name: 'UUPSUnsupportedProxiableUUID',\n type: 'error',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'contract SimpleAccount',\n name: 'account',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'salt',\n type: 'uint256',\n },\n ],\n name: 'AccountCreated',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint64',\n name: 'version',\n type: 'uint64',\n },\n ],\n name: 'Initialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n indexed: true,\n internalType: 'bytes32',\n name: 'previousAdminRole',\n type: 'bytes32',\n },\n {\n indexed: true,\n internalType: 'bytes32',\n name: 'newAdminRole',\n type: 'bytes32',\n },\n ],\n name: 'RoleAdminChanged',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n ],\n name: 'RoleGranted',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n ],\n name: 'RoleRevoked',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'implementation',\n type: 'address',\n },\n ],\n name: 'Upgraded',\n type: 'event',\n },\n {\n inputs: [],\n name: 'DEFAULT_ADMIN_ROLE',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'UPGRADE_INTERFACE_VERSION',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accountImplementation',\n outputs: [\n {\n internalType: 'contract SimpleAccount',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'createAccount',\n outputs: [\n {\n internalType: 'contract SimpleAccount',\n name: 'ret',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'getAccountAddress',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n ],\n name: 'getRoleAdmin',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'grantRole',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'hasRole',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'proxiableUUID',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: 'callerConfirmation',\n type: 'address',\n },\n ],\n name: 'renounceRole',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'role',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'revokeRole',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes4',\n name: 'interfaceId',\n type: 'bytes4',\n },\n ],\n name: 'supportsInterface',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newImplementation',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'upgradeToAndCall',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'version',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n] as const;\n","import { Box, BoxProps } from '@chakra-ui/react';\nimport React from 'react';\nimport { googleSvg } from '../../svg';\n\ntype Props = {\n boxSize?: string | number;\n} & Omit<BoxProps, 'dangerouslySetInnerHTML'>;\n\nexport const GoogleLogo: React.FC<Props> = ({ boxSize = '20px', ...props }) => {\n return (\n <Box\n as=\"span\"\n display=\"inline-block\"\n width={boxSize}\n height={boxSize}\n dangerouslySetInnerHTML={{\n __html: googleSvg,\n }}\n {...props}\n />\n );\n};\n","export const twitterSvg = {\n dark: `<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\" shape-rendering=\"geometricPrecision\" text-rendering=\"geometricPrecision\" image-rendering=\"optimizeQuality\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" viewBox=\"0 0 512 462.799\"><path fill=\"#fff\" fill-rule=\"nonzero\" d=\"M403.229 0h78.506L310.219 196.04 512 462.799H354.002L230.261 301.007 88.669 462.799h-78.56l183.455-209.683L0 0h161.999l111.856 147.88L403.229 0zm-27.556 415.805h43.505L138.363 44.527h-46.68l283.99 371.278z\"/></svg>`,\n light: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"height: 24px; width: 24px;\"><path d=\"M 14.285156 10.171875 L 23.222656 0 L 21.105469 0 L 13.34375 8.832031 L 7.148438 0 L 0 0 L 9.371094 13.355469 L 0 24.019531 L 2.117188 24.019531 L 10.308594 14.691406 L 16.851562 24.019531 L 24 24.019531 M 2.878906 1.5625 L 6.132812 1.5625 L 21.101562 22.535156 L 17.851562 22.535156\" fill=\"currentColor\"></path></svg>`,\n};\n\nexport const googleSvg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"#4285F4\" d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"/>\n <path fill=\"#34A853\" d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"/>\n <path fill=\"#FBBC05\" d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"/>\n <path fill=\"#EA4335\" d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"/>\n</svg>`;\n","import { Box, BoxProps } from '@chakra-ui/react';\nimport React from 'react';\nimport { twitterSvg } from '../../svg';\n\ntype Props = {\n isDark?: boolean;\n boxSize?: string | number;\n} & Omit<BoxProps, 'dangerouslySetInnerHTML'>;\n\nexport const TwitterLogo: React.FC<Props> = ({\n isDark,\n boxSize = '20px',\n ...props\n}) => {\n return (\n <Box\n as=\"span\"\n display=\"inline-block\"\n width={boxSize}\n height={boxSize}\n dangerouslySetInnerHTML={{\n __html: isDark ? twitterSvg.dark : twitterSvg.light,\n }}\n {...props}\n />\n );\n};\n","import { Icon, IconProps } from '@chakra-ui/react';\nimport React from 'react';\n\ntype Props = {\n isDark?: boolean;\n} & Omit<IconProps, 'dangerouslySetInnerHTML'>;\n\nexport const VechainLogo: React.FC<Props> = ({ isDark = false, ...props }) => {\n return (\n <Icon viewBox=\"0 0 320 292\" {...props}>\n <path\n d=\"M320 0H291.94c-7 0-13.34 4-15.94 10.3L198.83 167.26l-0.08-0.17-20 41.65 0.08 0.17-20 41.65-100-208.17h28.52c7 0 13.34 4 15.94 10.3l65.2 135.15 20-41.65L137.91 37C127.23 14.72 104.74 0 80.07 0H0l20 41.65h0.06L140.41 292h40L320 0Z\"\n fill={isDark ? 'white' : 'black'}\n />\n </Icon>\n );\n};\n","import { Image, ImageProps } from '@chakra-ui/react';\nimport React from 'react';\n\ntype Props = {\n isDark?: boolean;\n} & Omit<ImageProps, 'dangerouslySetInnerHTML'>;\n\nexport const VechainLogoHorizontal: React.FC<Props> = ({\n isDark = false,\n ...props\n}) => {\n return (\n <Image\n src={\n isDark\n ? 'https://i.ibb.co/zGdf6FS/01-Logo-Orizzontale-Negativo-RGB.png'\n : 'https://i.ibb.co/KNVyJTM/01-Logo-Orizzontale-Positivo-RGB.png'\n }\n alt=\"Vechain Logo Horizontal\"\n {...props}\n />\n );\n};\n","'use client';\n\nimport {\n Modal,\n ModalContent,\n ModalContentProps,\n ModalOverlay,\n useMediaQuery,\n} from '@chakra-ui/react';\nimport { useState, useEffect } from 'react';\nimport { MainContent } from './Contents/MainContent';\nimport { EcosystemContent } from './Contents/EcosystemContent';\nimport { useWallet } from '@/hooks';\nimport { useWallet as useDappKitWallet } from '@vechain/dapp-kit-react';\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n logo?: string;\n};\n\nexport type ConnectModalContents = 'main' | 'ecosystem' | 'email-verification';\n\nexport const ConnectModal = ({ isOpen, onClose, logo }: Props) => {\n const [isDesktop] = useMediaQuery('(min-width: 768px)');\n const _modalContentProps = isDesktop\n ? {}\n : {\n position: 'fixed',\n bottom: '0px',\n mb: '0',\n maxW: '2xl',\n borderRadius: '24px 24px 0px 0px',\n overflowY: 'scroll',\n overflowX: 'hidden',\n };\n const [currentContent, setCurrentContent] =\n useState<ConnectModalContents>('main');\n\n const { connection } = useWallet();\n const { setSource, connect } = useDappKitWallet();\n\n useEffect(() => {\n if (isOpen) {\n setCurrentContent('main');\n }\n }, [isOpen]);\n\n // Social login does not work inside veworld explorer, so we need to force connection to veworld\n useEffect(() => {\n if (connection.isInAppBrowser && !connection.isConnected) {\n // close the modal\n onClose();\n\n // open connection to veworld\n setSource('veworld');\n connect();\n }\n }, [connection.isInAppBrowser, connection.isConnected]);\n\n const renderContent = () => {\n switch (currentContent) {\n case 'main':\n return (\n <MainContent\n setCurrentContent={setCurrentContent}\n onClose={onClose}\n logo={logo}\n />\n );\n case 'ecosystem':\n return (\n <EcosystemContent\n setCurrentContent={setCurrentContent}\n onClose={onClose}\n />\n );\n }\n };\n\n return (\n <Modal\n motionPreset={isDesktop ? 'none' : 'slideInBottom'}\n isOpen={isOpen}\n onClose={onClose}\n isCentered\n size={'md'}\n trapFocus={false}\n >\n <ModalOverlay />\n <ModalContent {...(_modalContentProps as ModalContentProps)}>\n {renderContent()}\n </ModalContent>\n </Modal>\n );\n};\n","import {\n Grid,\n GridItem,\n HStack,\n Icon,\n Image,\n ModalBody,\n ModalCloseButton,\n ModalFooter,\n ModalHeader,\n Stack,\n Text,\n useColorMode,\n} from '@chakra-ui/react';\nimport {\n useCrossAppAccounts,\n usePrivy,\n useLoginWithOAuth,\n useLoginWithPasskey,\n} from '@privy-io/react-auth';\nimport { useDAppKitPrivyConfig } from '@/providers';\nimport { FadeInViewFromBottom, VersionFooter } from '@/components/common';\nimport { HiOutlineWallet } from 'react-icons/hi2';\nimport { FcGoogle } from 'react-icons/fc';\nimport { VechainLogo } from '@/assets';\nimport { CiCircleMore } from 'react-icons/ci';\nimport { ConnectModalContents } from '../ConnectModal';\nimport { IoIosFingerPrint } from 'react-icons/io';\nimport { IoPlanet } from 'react-icons/io5';\nimport { useWalletModal } from '@vechain/dapp-kit-react';\nimport { VECHAIN_PRIVY_APP_ID } from '../../../utils';\nimport { useEffect } from 'react';\nimport { useWallet } from '@/hooks';\n// import { EmailLoginButton } from '../Components/EmailLoginButton';\nimport { ConnectionButton } from '@/components';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<ConnectModalContents>\n >;\n onClose: () => void;\n logo?: string;\n};\n\nexport const MainContent = ({ setCurrentContent, onClose, logo }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n const { connection } = useWallet();\n const { privyConfig } = useDAppKitPrivyConfig();\n\n // View more login\n const { login: viewMoreLogin } = usePrivy();\n\n // Open DappKit modal\n const { open: openDappKitModal } = useWalletModal();\n\n // Login with Vechain - Cross app account login\n const { loginWithCrossAppAccount } = useCrossAppAccounts();\n // Passkey login\n const { loginWithPasskey } = useLoginWithPasskey();\n const handleLoginWithPasskey = async () => {\n try {\n await loginWithPasskey();\n } catch (error) {\n console.error(error);\n }\n };\n\n /**\n * Login with Google\n * Logic for loggin in with OAuth with whitelabel privy\n */\n const {\n // When the OAuth provider redirects back to your app, the `loading`\n // value can be used to show an intermediate state while login completes.\n initOAuth,\n } = useLoginWithOAuth();\n\n useEffect(() => {\n if (connection.isConnected) {\n onClose();\n }\n }, [connection.isConnected]);\n\n return (\n <FadeInViewFromBottom>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n {'Log in or sign up'}\n </ModalHeader>\n <HStack justify={'center'}>\n <Image\n src={logo || '/images/favicon.png'}\n maxW={'180px'}\n maxH={'90px'}\n m={10}\n alt=\"logo\"\n />\n </HStack>\n\n <ModalCloseButton mt={'5px'} />\n <ModalBody>\n <HStack spacing={4} w={'full'} justify={'center'} mb={'24px'}>\n <Text\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n fontSize={'sm'}\n fontWeight={'200'}\n >\n {'Select a login method'}\n </Text>\n </HStack>\n <Stack spacing={4} w={'full'} align={'center'}>\n <Grid templateColumns=\"repeat(4, 1fr)\" gap={2} w={'full'}>\n {/* {privyConfig?.loginMethods?.includes('email') && (\n <>\n <GridItem colSpan={4} w={'full'}>\n <EmailLoginButton />\n </GridItem>\n <GridItem colSpan={4} w={'full'}>\n <HStack>\n <Divider />\n <Text fontSize={'xs'}>or</Text>\n <Divider />\n </HStack>\n </GridItem>\n </>\n )} */}\n {privyConfig?.loginMethods?.includes('google') && (\n <GridItem colSpan={4} w={'full'}>\n <ConnectionButton\n isDark={isDark}\n onClick={() => {\n initOAuth({ provider: 'google' });\n }}\n leftIcon={\n <Icon\n as={FcGoogle}\n w={'25px'}\n h={'25px'}\n />\n }\n text=\"Continue with Google\"\n />\n </GridItem>\n )}\n\n <GridItem colSpan={4} w={'full'}>\n <ConnectionButton\n isDark={isDark}\n onClick={async () => {\n await loginWithCrossAppAccount({\n appId: VECHAIN_PRIVY_APP_ID,\n // appId: 'clz41gcg00e4ay75dmq3uzzgr',\n });\n onClose();\n }}\n leftIcon={\n <VechainLogo\n boxSize={'20px'}\n isDark={isDark}\n />\n }\n text=\"Login with VeChain\"\n />\n </GridItem>\n\n <ConnectionButton\n isDark={isDark}\n onClick={handleLoginWithPasskey}\n icon={IoIosFingerPrint}\n />\n\n <ConnectionButton\n isDark={isDark}\n onClick={openDappKitModal}\n icon={HiOutlineWallet}\n />\n\n <ConnectionButton\n isDark={isDark}\n onClick={() => {\n setCurrentContent('ecosystem');\n }}\n icon={IoPlanet}\n />\n\n <ConnectionButton\n isDark={isDark}\n onClick={viewMoreLogin}\n icon={CiCircleMore}\n />\n </Grid>\n </Stack>\n </ModalBody>\n\n <ModalFooter>\n <VersionFooter />\n </ModalFooter>\n </FadeInViewFromBottom>\n );\n};\n","import {\n createContext,\n ReactNode,\n useContext,\n useState,\n useCallback,\n} from 'react';\nimport {\n PrivyProvider as BasePrivyProvider,\n WalletListEntry,\n} from '@privy-io/react-auth';\nimport { DAppKitProvider, DAppKitUIOptions } from '@vechain/dapp-kit-react';\nimport { SmartAccountProvider } from '../hooks';\nimport { ChakraProvider } from '@chakra-ui/react';\nimport { Theme } from '../theme';\nimport { PrivyLoginMethod } from '../utils';\nimport { ConnectModal, AccountModal } from '../components';\nimport { EnsureQueryClient } from './EnsureQueryClient';\n\ntype Props = {\n children: ReactNode;\n privyConfig: {\n appId: string;\n clientId: string;\n appearance: {\n walletList: WalletListEntry[];\n theme: 'dark' | 'light';\n accentColor: `#${string}`;\n loginMessage: string;\n logo: string;\n };\n embeddedWallets?: {\n createOnLogin: 'users-without-wallets' | 'all-users' | 'off';\n };\n loginMethods: PrivyLoginMethod[];\n ecosystemAppsID?: string[];\n allowPasskeyLinking?: boolean;\n };\n feeDelegationConfig: {\n delegatorUrl: string;\n delegateAllTransactions: boolean;\n };\n dappKitConfig: DAppKitUIOptions;\n};\n\ntype DAppKitPrivyConfig = {\n privyConfig: Props['privyConfig'];\n feeDelegationConfig: Props['feeDelegationConfig'];\n dappKitConfig: Props['dappKitConfig'];\n // Connect Modal\n openConnectModal: () => void;\n closeConnectModal: () => void;\n isConnectModalOpen: boolean;\n // Account Modal\n openAccountModal: () => void;\n closeAccountModal: () => void;\n isAccountModalOpen: boolean;\n};\n\n/**\n * Context to store the Privy and DAppKit configs so that they can be used by the hooks/components\n */\nexport const DAppKitPrivyContext = createContext<DAppKitPrivyConfig | null>(\n null,\n);\n\n/**\n * Hook to get the Privy and DAppKit configs\n */\nexport const useDAppKitPrivyConfig = () => {\n const context = useContext(DAppKitPrivyContext);\n if (!context) {\n throw new Error(\n 'useDAppKitPrivyConfig must be used within DAppKitPrivyProvider',\n );\n }\n return context;\n};\n\n/**\n * Provider to wrap the application with Privy and DAppKit\n */\nexport const DAppKitPrivyProvider = ({\n children,\n privyConfig,\n feeDelegationConfig,\n dappKitConfig,\n}: Omit<Props, 'queryClient'>) => {\n const [isConnectModalOpen, setIsConnectModalOpen] = useState(false);\n const openConnectModal = useCallback(() => setIsConnectModalOpen(true), []);\n const closeConnectModal = useCallback(\n () => setIsConnectModalOpen(false),\n [],\n );\n\n const [isAccountModalOpen, setIsAccountModalOpen] = useState(false);\n const openAccountModal = useCallback(() => setIsAccountModalOpen(true), []);\n const closeAccountModal = useCallback(\n () => setIsAccountModalOpen(false),\n [],\n );\n\n const loginMethods = [\n ...privyConfig.loginMethods,\n ...(privyConfig.ecosystemAppsID ?? []).map((appID) => `privy:${appID}`),\n ];\n\n // Set the color mode in localStorage to match the Privy theme\n if (\n !localStorage.getItem('chakra-ui-color-mode') ||\n localStorage.getItem('chakra-ui-color-mode') !==\n privyConfig.appearance.theme\n ) {\n localStorage.setItem(\n 'chakra-ui-color-mode',\n privyConfig.appearance.theme,\n );\n localStorage.setItem('chakra-ui-color-mode-default', 'set');\n }\n\n return (\n <EnsureQueryClient>\n <DAppKitPrivyContext.Provider\n value={{\n privyConfig,\n feeDelegationConfig,\n dappKitConfig,\n openConnectModal,\n closeConnectModal,\n isConnectModalOpen,\n openAccountModal,\n closeAccountModal,\n isAccountModalOpen,\n }}\n >\n <ChakraProvider theme={Theme}>\n <BasePrivyProvider\n appId={privyConfig.appId}\n clientId={privyConfig.clientId}\n config={{\n loginMethodsAndOrder: {\n // @ts-ignore\n primary: loginMethods,\n },\n appearance: privyConfig.appearance,\n embeddedWallets: {\n createOnLogin:\n privyConfig.embeddedWallets\n ?.createOnLogin ?? 'all-users',\n },\n }}\n allowPasskeyLinking={privyConfig.allowPasskeyLinking}\n >\n <DAppKitProvider\n nodeUrl={dappKitConfig.nodeUrl}\n genesis={dappKitConfig.genesis}\n usePersistence\n walletConnectOptions={\n dappKitConfig.walletConnectOptions\n }\n themeMode={dappKitConfig.themeMode}\n themeVariables={{\n '--vdk-modal-z-index': '1000000',\n }}\n >\n <SmartAccountProvider\n nodeUrl={dappKitConfig.nodeUrl}\n delegatorUrl={feeDelegationConfig.delegatorUrl}\n delegateAllTransactions={\n feeDelegationConfig.delegateAllTransactions\n }\n >\n {children}\n <ConnectModal\n isOpen={isConnectModalOpen}\n onClose={closeConnectModal}\n logo={privyConfig.appearance.logo}\n />\n <AccountModal\n isOpen={isAccountModalOpen}\n onClose={closeAccountModal}\n />\n </SmartAccountProvider>\n </DAppKitProvider>\n </BasePrivyProvider>\n </ChakraProvider>\n </DAppKitPrivyContext.Provider>\n </EnsureQueryClient>\n );\n};\n","export { usePrivy, useCrossAppAccounts } from '@privy-io/react-auth';\nexport { useConnex } from '@vechain/dapp-kit-react';\nexport { useColorMode as useDAppKitPrivyColorMode } from '@chakra-ui/react';\nexport * from './useWallet';\nexport * from './useTxReceipt';\nexport * from './useSmartAccount';\nexport * from './api/smartAccount/useGetSmartAccountAddress';\nexport * from './api';\nexport * from './modals';\nexport * from './transactions';\nexport * from './useRefreshBalances';\n","'use client';\n\nimport { usePrivy, User } from '@privy-io/react-auth';\nimport { useWallet as useDappKitWallet } from '@vechain/dapp-kit-react';\nimport { useSmartAccount } from './useSmartAccount';\nimport { useCachedVeChainDomain } from '@/hooks';\nimport { getPicassoImage } from '../utils';\n\nexport type Wallet = {\n address: string;\n domain: string | undefined;\n image: string;\n};\n\nexport type SmartAccount = Wallet & {\n isDeployed: boolean;\n owner: string;\n};\n\nexport type ConnectionSource = {\n type: 'privy' | 'wallet' | 'privy-cross-app';\n displayName: string;\n};\n\nexport type UseWalletReturnType = {\n // When user connects with a wallet\n wallet: Wallet;\n\n // wallet created by the social login provider\n embeddedWallet: Wallet;\n\n // Wallet of the user connected with a cross app provider\n crossAppWallet: Wallet;\n\n // Every user connected with privy has one\n smartAccount: SmartAccount;\n\n // Currently is always the smart account if connected with privy\n selectedAccount: Wallet;\n // Privy wallet or veworld wallet\n connectedWallet: Wallet;\n\n // Privy user if user is connected with privy\n privyUser: User | null;\n\n // Connection status\n connection: {\n isConnected: boolean;\n isConnectedWithPrivy: boolean;\n isConnectedWithDappKit: boolean;\n isConnectedWithCrossAppPrivy: boolean;\n isLoadingPrivyConnection: boolean;\n source: ConnectionSource;\n isInAppBrowser: boolean;\n };\n\n // Disconnect function\n disconnect: () => Promise<void>;\n};\n\nexport const useWallet = (): UseWalletReturnType => {\n const { user, authenticated, logout, ready } = usePrivy();\n const { account: dappKitAccount, disconnect: dappKitDisconnect } =\n useDappKitWallet();\n const smartAccount = useSmartAccount();\n\n // Connection states\n const isConnectedWithDappKit = !!dappKitAccount;\n const isConnectedWithPrivy = authenticated && !!user;\n const isConnected = isConnectedWithDappKit || isConnectedWithPrivy;\n const isCrossAppPrivyAccount = Boolean(\n user?.linkedAccounts?.some((account) => account.type === 'cross_app'),\n );\n\n // Connection type\n const connectionSource: ConnectionSource = isCrossAppPrivyAccount\n ? {\n type: 'privy-cross-app',\n displayName: 'App',\n }\n : isConnectedWithDappKit\n ? {\n type: 'wallet',\n displayName: 'Wallet',\n }\n : {\n type: 'privy',\n displayName: 'Social',\n };\n\n // Get cross app account\n const crossAppAccount = user?.linkedAccounts.find(\n (account) => account.type === 'cross_app',\n );\n\n // Get embedded wallet\n const privyEmbeddedWallet = user?.wallet?.address;\n\n // Get connected and selected accounts\n const connectedWalletAddress = isConnectedWithDappKit\n ? dappKitAccount\n : smartAccount.owner;\n\n const selectedAddress = isConnectedWithDappKit\n ? dappKitAccount\n : smartAccount.address;\n\n // Use cached domain lookups for each address\n const walletDomain = useCachedVeChainDomain(dappKitAccount ?? '')\n .domainResult.domain;\n const smartAccountDomain = useCachedVeChainDomain(\n smartAccount.address ?? '',\n ).domainResult.domain;\n const embeddedWalletDomain = useCachedVeChainDomain(\n privyEmbeddedWallet ?? '',\n ).domainResult.domain;\n const crossAppAccountDomain = useCachedVeChainDomain(\n crossAppAccount?.embeddedWallets?.[0]?.address ?? '',\n ).domainResult.domain;\n\n const selectedAccount = {\n address: selectedAddress ?? '',\n domain: useCachedVeChainDomain(selectedAddress ?? '').domainResult\n .domain,\n image: getPicassoImage(selectedAddress ?? ''),\n };\n\n const connectedWallet = {\n address: connectedWalletAddress ?? '',\n domain: useCachedVeChainDomain(connectedWalletAddress ?? '')\n .domainResult.domain,\n image: getPicassoImage(connectedWalletAddress ?? ''),\n };\n\n // Disconnect function\n const disconnect = async () => {\n if (isConnectedWithDappKit) {\n dappKitDisconnect();\n } else {\n await logout();\n }\n };\n\n return {\n wallet: {\n address: dappKitAccount ?? '',\n domain: walletDomain ?? '',\n image: getPicassoImage(selectedAccount.address),\n },\n smartAccount: {\n address: smartAccount.address ?? '',\n domain: smartAccountDomain ?? '',\n image: getPicassoImage(selectedAccount.address),\n isDeployed: smartAccount.isDeployed,\n owner: smartAccount.owner ?? '',\n },\n embeddedWallet: {\n address: privyEmbeddedWallet ?? '',\n domain: embeddedWalletDomain ?? '',\n image: getPicassoImage(selectedAccount.address),\n },\n crossAppWallet: {\n address: crossAppAccount?.embeddedWallets?.[0]?.address ?? '',\n domain: crossAppAccountDomain ?? '',\n image: getPicassoImage(selectedAccount.address),\n },\n selectedAccount,\n connectedWallet,\n privyUser: user,\n connection: {\n isConnected,\n isConnectedWithPrivy,\n isConnectedWithDappKit,\n isConnectedWithCrossAppPrivy: isCrossAppPrivyAccount,\n isLoadingPrivyConnection: !ready,\n source: connectionSource,\n isInAppBrowser:\n (window.vechain && window.vechain.isInAppBrowser) ?? false,\n },\n disconnect,\n };\n};\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect } from 'react';\nimport {\n useCrossAppAccounts,\n usePrivy,\n useWallets,\n type ConnectedWallet,\n} from '@privy-io/react-auth';\nimport { encodeFunctionData } from 'viem';\nimport { ABIContract, Address, Clause } from '@vechain/sdk-core';\nimport {\n ThorClient,\n VeChainProvider,\n ProviderInternalBaseWallet,\n signerUtils,\n} from '@vechain/sdk-network';\nimport { SimpleAccountABI, SimpleAccountFactoryABI } from '../assets';\nimport {\n ExecuteWithAuthorizationSignData,\n randomTransactionUser,\n ACCOUNT_FACTORY_ADDRESSES,\n} from '../utils';\n\nexport interface SmartAccountContextType {\n address: string | undefined;\n owner: string | undefined;\n embeddedWallet: ConnectedWallet | undefined;\n isDeployed: boolean;\n sendTransaction: (tx: {\n txClauses: Connex.VM.Clause[];\n title?: string;\n description?: string;\n buttonText?: string;\n }) => Promise<string>;\n exportWallet: () => Promise<void>;\n thor: ThorClient;\n nodeUrl: string;\n delegatorUrl: string;\n accountFactory: string;\n delegateAllTransactions: boolean;\n chainId: string;\n}\n\nconst VechainAccountContext = createContext<SmartAccountContextType | null>(\n null,\n);\n\n/**\n * This provider is responsible for retrieving the smart account address\n * of a Privy wallet and providing the necessary context for the smart account.\n * Upon initialization this provider will execute a few useEffect hooks to:\n * - retrieve the smart account address of the embedded wallet\n * - retrieve the chain id\n * - check if the smart account is deployed\n *\n * It also provides a function to send transactions on vechain by asking the privy wallet\n * to sign the transaction and then forwarding the transaction to the node api.\n * When sending a transaction this provider will check if the smart account is deployed and if not,\n * it will deploy it.\n */\nexport const SmartAccountProvider = ({\n children,\n nodeUrl,\n delegatorUrl,\n delegateAllTransactions,\n}: {\n children: React.ReactNode;\n nodeUrl: string;\n delegatorUrl: string;\n delegateAllTransactions: boolean;\n}) => {\n const { signTypedData, exportWallet, user } = usePrivy();\n const { signTypedData: signTypedDataCrossApp } = useCrossAppAccounts();\n const { wallets } = useWallets();\n const embeddedWallet = wallets.find(\n (wallet) => wallet.walletClientType === 'privy',\n );\n const [smartAccountAddress, setSmartAccountAddress] = useState<\n string | undefined\n >();\n const [owner, setOwner] = useState<string | undefined>();\n const [chainId, setChainId] = useState('');\n const thor = ThorClient.at(nodeUrl);\n const [isDeployed, setIsDeployed] = useState(false);\n const [accountFactory, setAccountFactory] = useState<string>();\n\n const isCrossAppPrivyAccount = Boolean(\n user?.linkedAccounts?.some((account) => account.type === 'cross_app'),\n );\n\n const connectedAccount = isCrossAppPrivyAccount\n ? //@ts-ignore\n user?.linkedAccounts?.[0]?.embeddedWallets?.[0]?.address\n : //@ts-ignore\n user?.linkedAccounts?.[0]?.address ?? user?.wallet?.address;\n\n /**\n * Set the owner address to the connected account\n */\n useEffect(() => {\n setOwner(connectedAccount);\n }, [connectedAccount]);\n\n /**\n * Load the smartAccountAddress of the account abstraction wallet identified by\n * the embedded wallet of Privy.\n */\n useEffect(() => {\n if (\n !embeddedWallet ||\n !accountFactory ||\n !nodeUrl ||\n !delegatorUrl ||\n !connectedAccount\n ) {\n setSmartAccountAddress(undefined);\n setIsDeployed(false);\n return;\n }\n\n thor.contracts\n .executeCall(\n accountFactory,\n ABIContract.ofAbi(SimpleAccountFactoryABI).getFunction(\n 'getAccountAddress',\n ),\n [connectedAccount],\n )\n .then((accountAddress) => {\n setSmartAccountAddress(String(accountAddress.result.plain));\n })\n .catch((e) => {\n console.error('error', e);\n /* ignore */\n });\n }, [\n embeddedWallet,\n thor,\n accountFactory,\n nodeUrl,\n delegatorUrl,\n connectedAccount,\n ]);\n\n /**\n * Identify the current chain id from its genesis block\n */\n useEffect(() => {\n thor.blocks\n .getGenesisBlock()\n .then((genesis) => {\n if (genesis?.id) {\n const chainIdValue = BigInt(genesis.id).toString();\n setChainId(chainIdValue);\n }\n })\n .catch((error) => {\n console.error('Failed to get genesis block:', error);\n });\n }, [thor]);\n\n /**\n * Reset smartAccountAddress when embedded wallet vanishes\n */\n useEffect(() => {\n if (!embeddedWallet) {\n setSmartAccountAddress(undefined);\n }\n }, [embeddedWallet]);\n\n /**\n * Check if the smart account is deployed\n */\n useEffect(() => {\n if (!smartAccountAddress) {\n return;\n }\n\n thor.accounts\n .getAccount(Address.of(smartAccountAddress))\n .then((account) => {\n setIsDeployed(account.hasCode);\n });\n }, [smartAccountAddress, thor]);\n\n /**\n * Set the account factory address based on the chain ID\n */\n useEffect(() => {\n if (!chainId) return;\n\n setAccountFactory(\n ACCOUNT_FACTORY_ADDRESSES[\n chainId as keyof typeof ACCOUNT_FACTORY_ADDRESSES\n ],\n );\n }, [chainId]);\n\n /**\n * Send a transaction on vechain by asking the privy wallet to sign a typed data content\n * that will allow us the execute the action with his smart account through the executeWithAuthorization\n * function of the smart account.\n */\n const sendTransaction = async ({\n txClauses = [],\n title = 'Sign Transaction',\n description,\n buttonText = 'Sign',\n }: {\n txClauses: Connex.VM.Clause[];\n title?: string;\n description?: string;\n buttonText?: string;\n }): Promise<string> => {\n if (!smartAccountAddress || !embeddedWallet || !connectedAccount) {\n throw new Error('Address or embedded wallet is missing');\n }\n\n // build the object to be signed, containing all information & instructions\n const dataToSign: ExecuteWithAuthorizationSignData[] = txClauses.map(\n (txData) => ({\n domain: {\n name: 'Wallet',\n version: '1',\n chainId: chainId as unknown as number, // convert chainId to a number\n verifyingContract: smartAccountAddress,\n },\n types: {\n ExecuteWithAuthorization: [\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n ],\n },\n primaryType: 'ExecuteWithAuthorization',\n message: {\n validAfter: 0,\n validBefore: Math.floor(Date.now() / 1000) + 60, // 1 minute\n to: txData.to,\n value: String(txData.value),\n data:\n (typeof txData.data === 'object' && 'abi' in txData.data\n ? encodeFunctionData(txData.data)\n : txData.data) || '0x',\n },\n }),\n );\n\n // request signatures using privy\n const signatures: string[] = await Promise.all(\n dataToSign.map((data, index) => {\n const txClause = txClauses[index];\n if (!txClause) {\n throw new Error(\n `Transaction clause at index ${index} is undefined`,\n );\n }\n\n if (isCrossAppPrivyAccount) {\n return signTypedDataCrossApp(data, {\n address: connectedAccount,\n });\n } else {\n const funcData = txClause.data;\n return signTypedData(data, {\n title,\n description:\n description ??\n (typeof funcData === 'object' &&\n funcData !== null &&\n 'functionName' in funcData\n ? (funcData as { functionName: string })\n .functionName\n : ' '),\n buttonText,\n });\n }\n }),\n );\n\n // start building the clauses for the transaction\n const clauses = [];\n\n // if the account smartAccountAddress has no code yet, it's not been deployed/created yet\n const { hasCode: isDeployed } = await thor.accounts.getAccount(\n Address.of(smartAccountAddress),\n );\n setIsDeployed(isDeployed);\n if (!isDeployed) {\n clauses.push(\n Clause.callFunction(\n Address.of(accountFactory ?? ''),\n ABIContract.ofAbi(SimpleAccountFactoryABI).getFunction(\n 'createAccount',\n ),\n [connectedAccount], // set the Privy wallet address as the owner of the smart account\n ),\n );\n }\n\n dataToSign.forEach((data, index) => {\n clauses.push(\n Clause.callFunction(\n Address.of(smartAccountAddress),\n ABIContract.ofAbi(SimpleAccountABI).getFunction(\n 'executeWithAuthorization',\n ),\n [\n data.message.to as `0x${string}`,\n BigInt(data.message.value),\n data.message.data as `0x${string}`,\n BigInt(data.message.validAfter),\n BigInt(data.message.validBefore),\n signatures[index] as `0x${string}`,\n ],\n ),\n );\n });\n\n // estimate the gas fees for the transaction\n const gasResult = await thor.gas.estimateGas(\n clauses,\n connectedAccount,\n {\n gasPadding: 1,\n },\n );\n\n // build the transaction in VeChain format, with delegation enabled\n const txBody = await thor.transactions.buildTransactionBody(\n clauses,\n gasResult.totalGas,\n { isDelegated: true },\n );\n\n // sign the transaction and request the fee delegator to pay the gas fees in the process\n const wallet = new ProviderInternalBaseWallet(\n [\n {\n privateKey: Buffer.from(\n randomTransactionUser.privateKey.slice(2),\n 'hex',\n ),\n address: randomTransactionUser.address,\n },\n ],\n { delegator: { delegatorUrl } },\n );\n const providerWithDelegationEnabled = new VeChainProvider(\n thor,\n wallet,\n true,\n );\n const signer = await providerWithDelegationEnabled.getSigner(\n randomTransactionUser.address,\n );\n const txInput = signerUtils.transactionBodyToTransactionRequestInput(\n txBody,\n randomTransactionUser.address,\n );\n const rawDelegateSigned = await signer!.signTransaction(txInput);\n\n // publish the hexlified signed transaction directly on the node api\n const { id } = (await fetch(`${nodeUrl}/transactions`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n raw: rawDelegateSigned,\n }),\n }).then((res) => res.json())) as { id: string };\n\n return id;\n };\n\n return (\n <VechainAccountContext.Provider\n value={{\n address: smartAccountAddress,\n owner,\n accountFactory: accountFactory ?? '',\n nodeUrl,\n delegatorUrl,\n embeddedWallet,\n sendTransaction,\n exportWallet,\n thor,\n isDeployed,\n delegateAllTransactions,\n chainId,\n }}\n >\n {children}\n </VechainAccountContext.Provider>\n );\n};\n\nexport const useSmartAccount = () => {\n const context = useContext(VechainAccountContext);\n if (!context) {\n throw new Error(\n 'useSmartAccount must be used within a SmartAccountProvider',\n );\n }\n return context;\n};\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../../utils/address/getAddress.js'\nimport {\n type Keccak256ErrorType,\n keccak256,\n} from '../../utils/hash/keccak256.js'\n\nexport type PublicKeyToAddressErrorType =\n | ChecksumAddressErrorType\n | Keccak256ErrorType\n | ErrorType\n\n/**\n * @description Converts an ECDSA public key to an address.\n *\n * @param publicKey The public key to convert.\n *\n * @returns The address.\n */\nexport function publicKeyToAddress(publicKey: Hex): Address {\n const address = keccak256(`0x${publicKey.substring(4)}`).substring(26)\n return checksumAddress(`0x${address}`) as Address\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport {\n type CreateCursorErrorType,\n type Cursor,\n createCursor,\n} from '../cursor.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from './toHex.js'\n\nexport type RecursiveArray<T> = T | readonly RecursiveArray<T>[]\n\ntype To = 'hex' | 'bytes'\n\ntype Encodable = {\n length: number\n encode(cursor: Cursor): void\n}\n\nexport type ToRlpReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type ToRlpErrorType =\n | CreateCursorErrorType\n | BytesToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\nexport function toRlp<to extends To = 'hex'>(\n bytes: RecursiveArray<ByteArray> | RecursiveArray<Hex>,\n to: to | To | undefined = 'hex',\n): ToRlpReturnType<to> {\n const encodable = getEncodable(bytes)\n const cursor = createCursor(new Uint8Array(encodable.length))\n encodable.encode(cursor)\n\n if (to === 'hex') return bytesToHex(cursor.bytes) as ToRlpReturnType<to>\n return cursor.bytes as ToRlpReturnType<to>\n}\n\nexport type BytesToRlpErrorType = ToRlpErrorType | ErrorType\n\nexport function bytesToRlp<to extends To = 'bytes'>(\n bytes: RecursiveArray<ByteArray>,\n to: to | To | undefined = 'bytes',\n): ToRlpReturnType<to> {\n return toRlp(bytes, to)\n}\n\nexport type HexToRlpErrorType = ToRlpErrorType | ErrorType\n\nexport function hexToRlp<to extends To = 'hex'>(\n hex: RecursiveArray<Hex>,\n to: to | To | undefined = 'hex',\n): ToRlpReturnType<to> {\n return toRlp(hex, to)\n}\n\nfunction getEncodable(\n bytes: RecursiveArray<ByteArray> | RecursiveArray<Hex>,\n): Encodable {\n if (Array.isArray(bytes))\n return getEncodableList(bytes.map((x) => getEncodable(x)))\n return getEncodableBytes(bytes as any)\n}\n\nfunction getEncodableList(list: Encodable[]): Encodable {\n const bodyLength = list.reduce((acc, x) => acc + x.length, 0)\n\n const sizeOfBodyLength = getSizeOfLength(bodyLength)\n const length = (() => {\n if (bodyLength <= 55) return 1 + bodyLength\n return 1 + sizeOfBodyLength + bodyLength\n })()\n\n return {\n length,\n encode(cursor: Cursor) {\n if (bodyLength <= 55) {\n cursor.pushByte(0xc0 + bodyLength)\n } else {\n cursor.pushByte(0xc0 + 55 + sizeOfBodyLength)\n if (sizeOfBodyLength === 1) cursor.pushUint8(bodyLength)\n else if (sizeOfBodyLength === 2) cursor.pushUint16(bodyLength)\n else if (sizeOfBodyLength === 3) cursor.pushUint24(bodyLength)\n else cursor.pushUint32(bodyLength)\n }\n for (const { encode } of list) {\n encode(cursor)\n }\n },\n }\n}\n\nfunction getEncodableBytes(bytesOrHex: ByteArray | Hex): Encodable {\n const bytes =\n typeof bytesOrHex === 'string' ? hexToBytes(bytesOrHex) : bytesOrHex\n\n const sizeOfBytesLength = getSizeOfLength(bytes.length)\n const length = (() => {\n if (bytes.length === 1 && bytes[0] < 0x80) return 1\n if (bytes.length <= 55) return 1 + bytes.length\n return 1 + sizeOfBytesLength + bytes.length\n })()\n\n return {\n length,\n encode(cursor: Cursor) {\n if (bytes.length === 1 && bytes[0] < 0x80) {\n cursor.pushBytes(bytes)\n } else if (bytes.length <= 55) {\n cursor.pushByte(0x80 + bytes.length)\n cursor.pushBytes(bytes)\n } else {\n cursor.pushByte(0x80 + 55 + sizeOfBytesLength)\n if (sizeOfBytesLength === 1) cursor.pushUint8(bytes.length)\n else if (sizeOfBytesLength === 2) cursor.pushUint16(bytes.length)\n else if (sizeOfBytesLength === 3) cursor.pushUint24(bytes.length)\n else cursor.pushUint32(bytes.length)\n cursor.pushBytes(bytes)\n }\n },\n }\n}\n\nfunction getSizeOfLength(length: number) {\n if (length < 2 ** 8) return 1\n if (length < 2 ** 16) return 2\n if (length < 2 ** 24) return 3\n if (length < 2 ** 32) return 4\n throw new BaseError('Length is too large.')\n}\n","import type { ErrorType } from '../../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../../types/misc.js'\nimport {\n type ConcatHexErrorType,\n concatHex,\n} from '../../../utils/data/concat.js'\nimport {\n type HexToBytesErrorType,\n hexToBytes,\n} from '../../../utils/encoding/toBytes.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../../utils/encoding/toHex.js'\nimport { type ToRlpErrorType, toRlp } from '../../../utils/encoding/toRlp.js'\nimport {\n type Keccak256ErrorType,\n keccak256,\n} from '../../../utils/hash/keccak256.js'\nimport type { Authorization } from '../types/authorization.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type HashAuthorizationParameters<to extends To> = Authorization & {\n /** Output format. @default \"hex\" */\n to?: to | To | undefined\n}\n\nexport type HashAuthorizationReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type HashAuthorizationErrorType =\n | Keccak256ErrorType\n | ConcatHexErrorType\n | ToRlpErrorType\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Computes an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n */\nexport function hashAuthorization<to extends To = 'hex'>(\n parameters: HashAuthorizationParameters<to>,\n): HashAuthorizationReturnType<to> {\n const { chainId, contractAddress, nonce, to } = parameters\n const hash = keccak256(\n concatHex([\n '0x05',\n toRlp([\n chainId ? numberToHex(chainId) : '0x',\n contractAddress,\n nonce ? numberToHex(nonce) : '0x',\n ]),\n ]),\n )\n if (to === 'bytes') return hexToBytes(hash) as HashAuthorizationReturnType<to>\n return hash as HashAuthorizationReturnType<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Kzg } from '../../types/kzg.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type BlobsToCommitmentsParameters<\n blobs extends readonly ByteArray[] | readonly Hex[] =\n | readonly ByteArray[]\n | readonly Hex[],\n to extends To | undefined = undefined,\n> = {\n /** Blobs to transform into commitments. */\n blobs: blobs | readonly ByteArray[] | readonly Hex[]\n /** KZG implementation. */\n kzg: Pick<Kzg, 'blobToKzgCommitment'>\n /** Return type. */\n to?: to | To | undefined\n}\n\nexport type BlobsToCommitmentsReturnType<to extends To> =\n | (to extends 'bytes' ? readonly ByteArray[] : never)\n | (to extends 'hex' ? readonly Hex[] : never)\n\nexport type BlobsToCommitmentsErrorType =\n | HexToBytesErrorType\n | BytesToHexErrorType\n | ErrorType\n\n/**\n * Compute commitments from a list of blobs.\n *\n * @example\n * ```ts\n * import { blobsToCommitments, toBlobs } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * ```\n */\nexport function blobsToCommitments<\n const blobs extends readonly ByteArray[] | readonly Hex[],\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: BlobsToCommitmentsParameters<blobs, to>,\n): BlobsToCommitmentsReturnType<to> {\n const { kzg } = parameters\n\n const to =\n parameters.to ?? (typeof parameters.blobs[0] === 'string' ? 'hex' : 'bytes')\n const blobs = (\n typeof parameters.blobs[0] === 'string'\n ? parameters.blobs.map((x) => hexToBytes(x as any))\n : parameters.blobs\n ) as ByteArray[]\n\n const commitments: ByteArray[] = []\n for (const blob of blobs)\n commitments.push(Uint8Array.from(kzg.blobToKzgCommitment(blob)))\n\n return (to === 'bytes'\n ? commitments\n : commitments.map((x) =>\n bytesToHex(x),\n )) as {} as BlobsToCommitmentsReturnType<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Kzg } from '../../types/kzg.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type blobsToProofsParameters<\n blobs extends readonly ByteArray[] | readonly Hex[],\n commitments extends readonly ByteArray[] | readonly Hex[],\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n ///\n _blobsType =\n | (blobs extends readonly Hex[] ? readonly Hex[] : never)\n | (blobs extends readonly ByteArray[] ? readonly ByteArray[] : never),\n> = {\n /** Blobs to transform into proofs. */\n blobs: blobs\n /** Commitments for the blobs. */\n commitments: commitments &\n (commitments extends _blobsType\n ? {}\n : `commitments must be the same type as blobs`)\n /** KZG implementation. */\n kzg: Pick<Kzg, 'computeBlobKzgProof'>\n /** Return type. */\n to?: to | To | undefined\n}\n\nexport type blobsToProofsReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray[] : never)\n | (to extends 'hex' ? Hex[] : never)\n\nexport type blobsToProofsErrorType =\n | BytesToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Compute the proofs for a list of blobs and their commitments.\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const proofs = blobsToProofs({ blobs, commitments, kzg })\n * ```\n */\nexport function blobsToProofs<\n const blobs extends readonly ByteArray[] | readonly Hex[],\n const commitments extends readonly ByteArray[] | readonly Hex[],\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: blobsToProofsParameters<blobs, commitments, to>,\n): blobsToProofsReturnType<to> {\n const { kzg } = parameters\n\n const to =\n parameters.to ?? (typeof parameters.blobs[0] === 'string' ? 'hex' : 'bytes')\n\n const blobs = (\n typeof parameters.blobs[0] === 'string'\n ? parameters.blobs.map((x) => hexToBytes(x as any))\n : parameters.blobs\n ) as ByteArray[]\n const commitments = (\n typeof parameters.commitments[0] === 'string'\n ? parameters.commitments.map((x) => hexToBytes(x as any))\n : parameters.commitments\n ) as ByteArray[]\n\n const proofs: ByteArray[] = []\n for (let i = 0; i < blobs.length; i++) {\n const blob = blobs[i]\n const commitment = commitments[i]\n proofs.push(Uint8Array.from(kzg.computeBlobKzgProof(blob, commitment)))\n }\n\n return (to === 'bytes'\n ? proofs\n : proofs.map((x) => bytesToHex(x))) as {} as blobsToProofsReturnType<to>\n}\n","import { sha256 as noble_sha256 } from '@noble/hashes/sha256'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Sha256Hash<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Sha256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function sha256<to extends To = 'hex'>(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Sha256Hash<to> {\n const to = to_ || 'hex'\n const bytes = noble_sha256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Sha256Hash<to>\n return toHex(bytes) as Sha256Hash<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { type Sha256ErrorType, sha256 } from '../hash/sha256.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type CommitmentToVersionedHashParameters<\n commitment extends Uint8Array | Hex = Uint8Array | Hex,\n to extends To | undefined = undefined,\n> = {\n /** Commitment from blob. */\n commitment: commitment | Uint8Array | Hex\n /** Return type. */\n to?: to | To | undefined\n /** Version to tag onto the hash. */\n version?: number | undefined\n}\n\nexport type CommitmentToVersionedHashReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type CommitmentToVersionedHashErrorType =\n | Sha256ErrorType\n | BytesToHexErrorType\n | ErrorType\n\n/**\n * Transform a commitment to it's versioned hash.\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * commitmentToVersionedHash,\n * toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const [commitment] = blobsToCommitments({ blobs, kzg })\n * const versionedHash = commitmentToVersionedHash({ commitment })\n * ```\n */\nexport function commitmentToVersionedHash<\n const commitment extends Hex | ByteArray,\n to extends To =\n | (commitment extends Hex ? 'hex' : never)\n | (commitment extends ByteArray ? 'bytes' : never),\n>(\n parameters: CommitmentToVersionedHashParameters<commitment, to>,\n): CommitmentToVersionedHashReturnType<to> {\n const { commitment, version = 1 } = parameters\n const to = parameters.to ?? (typeof commitment === 'string' ? 'hex' : 'bytes')\n\n const versionedHash = sha256(commitment, 'bytes')\n versionedHash.set([version], 0)\n return (\n to === 'bytes' ? versionedHash : bytesToHex(versionedHash)\n ) as CommitmentToVersionedHashReturnType<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport {\n type CommitmentToVersionedHashErrorType,\n commitmentToVersionedHash,\n} from './commitmentToVersionedHash.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type CommitmentsToVersionedHashesParameters<\n commitments extends readonly Uint8Array[] | readonly Hex[] =\n | readonly Uint8Array[]\n | readonly Hex[],\n to extends To | undefined = undefined,\n> = {\n /** Commitments from blobs. */\n commitments: commitments | readonly Uint8Array[] | readonly Hex[]\n /** Return type. */\n to?: to | To | undefined\n /** Version to tag onto the hashes. */\n version?: number | undefined\n}\n\nexport type CommitmentsToVersionedHashesReturnType<to extends To> =\n | (to extends 'bytes' ? readonly ByteArray[] : never)\n | (to extends 'hex' ? readonly Hex[] : never)\n\nexport type CommitmentsToVersionedHashesErrorType =\n | CommitmentToVersionedHashErrorType\n | ErrorType\n\n/**\n * Transform a list of commitments to their versioned hashes.\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * commitmentsToVersionedHashes,\n * toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const versionedHashes = commitmentsToVersionedHashes({ commitments })\n * ```\n */\nexport function commitmentsToVersionedHashes<\n const commitments extends readonly Uint8Array[] | readonly Hex[],\n to extends To =\n | (commitments extends readonly Hex[] ? 'hex' : never)\n | (commitments extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: CommitmentsToVersionedHashesParameters<commitments, to>,\n): CommitmentsToVersionedHashesReturnType<to> {\n const { commitments, version } = parameters\n\n const to =\n parameters.to ?? (typeof commitments[0] === 'string' ? 'hex' : 'bytes')\n\n const hashes: Uint8Array[] | Hex[] = []\n for (const commitment of commitments) {\n hashes.push(\n commitmentToVersionedHash({\n commitment,\n to,\n version,\n }) as any,\n )\n }\n return hashes as any\n}\n","import { versionedHashVersionKzg } from '../constants/kzg.js'\nimport type { Hash } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type BlobSizeTooLargeErrorType = BlobSizeTooLargeError & {\n name: 'BlobSizeTooLargeError'\n}\nexport class BlobSizeTooLargeError extends BaseError {\n constructor({ maxSize, size }: { maxSize: number; size: number }) {\n super('Blob size is too large.', {\n metaMessages: [`Max: ${maxSize} bytes`, `Given: ${size} bytes`],\n name: 'BlobSizeTooLargeError',\n })\n }\n}\n\nexport type EmptyBlobErrorType = EmptyBlobError & {\n name: 'EmptyBlobError'\n}\nexport class EmptyBlobError extends BaseError {\n constructor() {\n super('Blob data must not be empty.', { name: 'EmptyBlobError' })\n }\n}\n\nexport type InvalidVersionedHashSizeErrorType =\n InvalidVersionedHashSizeError & {\n name: 'InvalidVersionedHashSizeError'\n }\nexport class InvalidVersionedHashSizeError extends BaseError {\n constructor({\n hash,\n size,\n }: {\n hash: Hash\n size: number\n }) {\n super(`Versioned hash \"${hash}\" size is invalid.`, {\n metaMessages: ['Expected: 32', `Received: ${size}`],\n name: 'InvalidVersionedHashSizeError',\n })\n }\n}\n\nexport type InvalidVersionedHashVersionErrorType =\n InvalidVersionedHashVersionError & {\n name: 'InvalidVersionedHashVersionError'\n }\nexport class InvalidVersionedHashVersionError extends BaseError {\n constructor({\n hash,\n version,\n }: {\n hash: Hash\n version: number\n }) {\n super(`Versioned hash \"${hash}\" version is invalid.`, {\n metaMessages: [\n `Expected: ${versionedHashVersionKzg}`,\n `Received: ${version}`,\n ],\n name: 'InvalidVersionedHashVersionError',\n })\n }\n}\n","import {\n bytesPerBlob,\n bytesPerFieldElement,\n fieldElementsPerBlob,\n maxBytesPerTransaction,\n} from '../../constants/blob.js'\nimport {\n BlobSizeTooLargeError,\n type BlobSizeTooLargeErrorType,\n EmptyBlobError,\n type EmptyBlobErrorType,\n} from '../../errors/blob.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type CreateCursorErrorType, createCursor } from '../cursor.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type ToBlobsParameters<\n data extends Hex | ByteArray = Hex | ByteArray,\n to extends To | undefined = undefined,\n> = {\n /** Data to transform to a blob. */\n data: data | Hex | ByteArray\n /** Return type. */\n to?: to | To | undefined\n}\n\nexport type ToBlobsReturnType<to extends To> =\n | (to extends 'bytes' ? readonly ByteArray[] : never)\n | (to extends 'hex' ? readonly Hex[] : never)\n\nexport type ToBlobsErrorType =\n | BlobSizeTooLargeErrorType\n | BytesToHexErrorType\n | CreateCursorErrorType\n | EmptyBlobErrorType\n | HexToBytesErrorType\n | SizeErrorType\n | ErrorType\n\n/**\n * Transforms arbitrary data to blobs.\n *\n * @example\n * ```ts\n * import { toBlobs, stringToHex } from 'viem'\n *\n * const blobs = toBlobs({ data: stringToHex('hello world') })\n * ```\n */\nexport function toBlobs<\n const data extends Hex | ByteArray,\n to extends To =\n | (data extends Hex ? 'hex' : never)\n | (data extends ByteArray ? 'bytes' : never),\n>(parameters: ToBlobsParameters<data, to>): ToBlobsReturnType<to> {\n const to =\n parameters.to ?? (typeof parameters.data === 'string' ? 'hex' : 'bytes')\n const data = (\n typeof parameters.data === 'string'\n ? hexToBytes(parameters.data)\n : parameters.data\n ) as ByteArray\n\n const size_ = size(data)\n if (!size_) throw new EmptyBlobError()\n if (size_ > maxBytesPerTransaction)\n throw new BlobSizeTooLargeError({\n maxSize: maxBytesPerTransaction,\n size: size_,\n })\n\n const blobs = []\n\n let active = true\n let position = 0\n while (active) {\n const blob = createCursor(new Uint8Array(bytesPerBlob))\n\n let size = 0\n while (size < fieldElementsPerBlob) {\n const bytes = data.slice(position, position + (bytesPerFieldElement - 1))\n\n // Push a zero byte so the field element doesn't overflow the BLS modulus.\n blob.pushByte(0x00)\n\n // Push the current segment of data bytes.\n blob.pushBytes(bytes)\n\n // If we detect that the current segment of data bytes is less than 31 bytes,\n // we can stop processing and push a terminator byte to indicate the end of the blob.\n if (bytes.length < 31) {\n blob.pushByte(0x80)\n active = false\n break\n }\n\n size++\n position += 31\n }\n\n blobs.push(blob)\n }\n\n return (\n to === 'bytes'\n ? blobs.map((x) => x.bytes)\n : blobs.map((x) => bytesToHex(x.bytes))\n ) as any\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { BlobSidecars } from '../../types/eip4844.js'\nimport type { Kzg } from '../../types/kzg.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport type { OneOf } from '../../types/utils.js'\nimport {\n type BlobsToCommitmentsErrorType,\n blobsToCommitments,\n} from './blobsToCommitments.js'\nimport { blobsToProofs, type blobsToProofsErrorType } from './blobsToProofs.js'\nimport { type ToBlobsErrorType, toBlobs } from './toBlobs.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type ToBlobSidecarsParameters<\n data extends Hex | ByteArray | undefined = undefined,\n blobs extends readonly Hex[] | readonly ByteArray[] | undefined = undefined,\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n ///\n _blobsType =\n | (blobs extends readonly Hex[] ? readonly Hex[] : never)\n | (blobs extends readonly ByteArray[] ? readonly ByteArray[] : never),\n> = {\n /** Return type. */\n to?: to | To | undefined\n} & OneOf<\n | {\n /** Data to transform into blobs. */\n data: data | Hex | ByteArray\n /** KZG implementation. */\n kzg: Kzg\n }\n | {\n /** Blobs. */\n blobs: blobs | readonly Hex[] | readonly ByteArray[]\n /** Commitment for each blob. */\n commitments: _blobsType | readonly Hex[] | readonly ByteArray[]\n /** Proof for each blob. */\n proofs: _blobsType | readonly Hex[] | readonly ByteArray[]\n }\n>\n\nexport type ToBlobSidecarsReturnType<to extends To> =\n | (to extends 'bytes' ? BlobSidecars<ByteArray> : never)\n | (to extends 'hex' ? BlobSidecars<Hex> : never)\n\nexport type ToBlobSidecarsErrorType =\n | BlobsToCommitmentsErrorType\n | ToBlobsErrorType\n | blobsToProofsErrorType\n | ErrorType\n\n/**\n * Transforms arbitrary data (or blobs, commitments, & proofs) into a sidecar array.\n *\n * @example\n * ```ts\n * import { toBlobSidecars, stringToHex } from 'viem'\n *\n * const sidecars = toBlobSidecars({ data: stringToHex('hello world') })\n * ```\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * toBlobs,\n * blobsToProofs,\n * toBlobSidecars,\n * stringToHex\n * } from 'viem'\n *\n * const blobs = toBlobs({ data: stringToHex('hello world') })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const proofs = blobsToProofs({ blobs, commitments, kzg })\n *\n * const sidecars = toBlobSidecars({ blobs, commitments, proofs })\n * ```\n */\nexport function toBlobSidecars<\n const data extends Hex | ByteArray | undefined = undefined,\n const blobs extends\n | readonly Hex[]\n | readonly ByteArray[]\n | undefined = undefined,\n to extends To =\n | (data extends Hex ? 'hex' : never)\n | (data extends ByteArray ? 'bytes' : never)\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: ToBlobSidecarsParameters<data, blobs, to>,\n): ToBlobSidecarsReturnType<to> {\n const { data, kzg, to } = parameters\n const blobs = parameters.blobs ?? toBlobs({ data: data!, to })\n const commitments =\n parameters.commitments ?? blobsToCommitments({ blobs, kzg: kzg!, to })\n const proofs =\n parameters.proofs ?? blobsToProofs({ blobs, commitments, kzg: kzg!, to })\n\n const sidecars: BlobSidecars = []\n for (let i = 0; i < blobs.length; i++)\n sidecars.push({\n blob: blobs[i],\n commitment: commitments[i],\n proof: proofs[i],\n })\n\n return sidecars as ToBlobSidecarsReturnType<to>\n}\n","import {\n InvalidSerializableTransactionError,\n type InvalidSerializableTransactionErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n FeeValuesEIP1559,\n FeeValuesEIP4844,\n FeeValuesLegacy,\n} from '../../index.js'\nimport type {\n TransactionRequestGeneric,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableGeneric,\n} from '../../types/transaction.js'\nimport type { Assign, ExactPartial, IsNever, OneOf } from '../../types/utils.js'\n\nexport type GetTransactionType<\n transaction extends OneOf<\n TransactionSerializableGeneric | TransactionRequestGeneric\n > = TransactionSerializableGeneric,\n result =\n | (transaction extends LegacyProperties ? 'legacy' : never)\n | (transaction extends EIP1559Properties ? 'eip1559' : never)\n | (transaction extends EIP2930Properties ? 'eip2930' : never)\n | (transaction extends EIP4844Properties ? 'eip4844' : never)\n | (transaction extends EIP7702Properties ? 'eip7702' : never)\n | (transaction['type'] extends TransactionSerializableGeneric['type']\n ? Extract<transaction['type'], string>\n : never),\n> = IsNever<keyof transaction> extends true\n ? string\n : IsNever<result> extends false\n ? result\n : string\n\nexport type GetTransactionTypeErrorType =\n | InvalidSerializableTransactionErrorType\n | ErrorType\n\nexport function getTransactionType<\n const transaction extends OneOf<\n TransactionSerializableGeneric | TransactionRequestGeneric\n >,\n>(transaction: transaction): GetTransactionType<transaction> {\n if (transaction.type)\n return transaction.type as GetTransactionType<transaction>\n\n if (typeof transaction.authorizationList !== 'undefined')\n return 'eip7702' as any\n\n if (\n typeof transaction.blobs !== 'undefined' ||\n typeof transaction.blobVersionedHashes !== 'undefined' ||\n typeof transaction.maxFeePerBlobGas !== 'undefined' ||\n typeof transaction.sidecars !== 'undefined'\n )\n return 'eip4844' as any\n\n if (\n typeof transaction.maxFeePerGas !== 'undefined' ||\n typeof transaction.maxPriorityFeePerGas !== 'undefined'\n ) {\n return 'eip1559' as any\n }\n\n if (typeof transaction.gasPrice !== 'undefined') {\n if (typeof transaction.accessList !== 'undefined') return 'eip2930' as any\n return 'legacy' as any\n }\n\n throw new InvalidSerializableTransactionError({ transaction })\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////\n// Types\n\ntype BaseProperties = {\n accessList?: undefined\n authorizationList?: undefined\n blobs?: undefined\n blobVersionedHashes?: undefined\n gasPrice?: undefined\n maxFeePerBlobGas?: undefined\n maxFeePerGas?: undefined\n maxPriorityFeePerGas?: undefined\n sidecars?: undefined\n}\n\ntype LegacyProperties = Assign<BaseProperties, FeeValuesLegacy>\ntype EIP1559Properties = Assign<\n BaseProperties,\n OneOf<\n | {\n maxFeePerGas: FeeValuesEIP1559['maxFeePerGas']\n }\n | {\n maxPriorityFeePerGas: FeeValuesEIP1559['maxPriorityFeePerGas']\n },\n FeeValuesEIP1559\n > & {\n accessList?: TransactionSerializableEIP2930['accessList'] | undefined\n }\n>\ntype EIP2930Properties = Assign<\n ExactPartial<LegacyProperties>,\n {\n accessList: TransactionSerializableEIP2930['accessList']\n }\n>\ntype EIP4844Properties = Assign<\n ExactPartial<EIP1559Properties>,\n ExactPartial<FeeValuesEIP4844> &\n OneOf<\n | {\n blobs: TransactionSerializableEIP4844['blobs']\n }\n | {\n blobVersionedHashes: TransactionSerializableEIP4844['blobVersionedHashes']\n }\n | {\n sidecars: TransactionSerializableEIP4844['sidecars']\n },\n TransactionSerializableEIP4844\n >\n>\ntype EIP7702Properties = Assign<\n ExactPartial<EIP1559Properties>,\n {\n authorizationList: TransactionSerializableEIP7702['authorizationList']\n }\n>\n","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/\n\n// `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n","import type { TypedData } from 'abitype'\n\nimport { stringify } from '../utils/stringify.js'\nimport { BaseError } from './base.js'\n\nexport type InvalidDomainErrorType = InvalidDomainError & {\n name: 'InvalidDomainError'\n}\nexport class InvalidDomainError extends BaseError {\n constructor({ domain }: { domain: unknown }) {\n super(`Invalid domain \"${stringify(domain)}\".`, {\n metaMessages: ['Must be a valid EIP-712 domain.'],\n })\n }\n}\n\nexport type InvalidPrimaryTypeErrorType = InvalidPrimaryTypeError & {\n name: 'InvalidPrimaryTypeError'\n}\nexport class InvalidPrimaryTypeError extends BaseError {\n constructor({\n primaryType,\n types,\n }: { primaryType: string; types: TypedData | Record<string, unknown> }) {\n super(\n `Invalid primary type \\`${primaryType}\\` must be one of \\`${JSON.stringify(Object.keys(types))}\\`.`,\n {\n docsPath: '/api/glossary/Errors#typeddatainvalidprimarytypeerror',\n metaMessages: ['Check that the primary type is a key in `types`.'],\n },\n )\n }\n}\n\nexport type InvalidStructTypeErrorType = InvalidStructTypeError & {\n name: 'InvalidStructTypeError'\n}\nexport class InvalidStructTypeError extends BaseError {\n constructor({ type }: { type: string }) {\n super(`Struct type \"${type}\" is invalid.`, {\n metaMessages: ['Struct type must not be a Solidity type.'],\n name: 'InvalidStructTypeError',\n })\n }\n}\n","// Implementation forked and adapted from https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts\n\nimport type { AbiParameter, TypedData, TypedDataDomain } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { TypedDataDefinition } from '../../types/typedData.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from '../abi/encodeAbiParameters.js'\nimport { concat } from '../data/concat.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport {\n type GetTypesForEIP712DomainErrorType,\n type ValidateTypedDataErrorType,\n getTypesForEIP712Domain,\n validateTypedData,\n} from '../typedData.js'\n\ntype MessageTypeProperty = {\n name: string\n type: string\n}\n\nexport type HashTypedDataParameters<\n typedData extends TypedData | Record<string, unknown> = TypedData,\n primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,\n> = TypedDataDefinition<typedData, primaryType>\n\nexport type HashTypedDataReturnType = Hex\n\nexport type HashTypedDataErrorType =\n | GetTypesForEIP712DomainErrorType\n | HashDomainErrorType\n | HashStructErrorType\n | ValidateTypedDataErrorType\n | ErrorType\n\nexport function hashTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(\n parameters: HashTypedDataParameters<typedData, primaryType>,\n): HashTypedDataReturnType {\n const {\n domain = {},\n message,\n primaryType,\n } = parameters as HashTypedDataParameters\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n }\n\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({\n domain,\n message,\n primaryType,\n types,\n })\n\n const parts: Hex[] = ['0x1901']\n if (domain)\n parts.push(\n hashDomain({\n domain,\n types: types as Record<string, MessageTypeProperty[]>,\n }),\n )\n\n if (primaryType !== 'EIP712Domain')\n parts.push(\n hashStruct({\n data: message,\n primaryType,\n types: types as Record<string, MessageTypeProperty[]>,\n }),\n )\n\n return keccak256(concat(parts))\n}\n\nexport type HashDomainErrorType = HashStructErrorType | ErrorType\n\nexport function hashDomain({\n domain,\n types,\n}: {\n domain: TypedDataDomain\n types: Record<string, MessageTypeProperty[]>\n}) {\n return hashStruct({\n data: domain,\n primaryType: 'EIP712Domain',\n types,\n })\n}\n\ntype HashStructErrorType = EncodeDataErrorType | Keccak256ErrorType | ErrorType\n\nexport function hashStruct({\n data,\n primaryType,\n types,\n}: {\n data: Record<string, unknown>\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n const encoded = encodeData({\n data,\n primaryType,\n types,\n })\n return keccak256(encoded)\n}\n\ntype EncodeDataErrorType =\n | EncodeAbiParametersErrorType\n | EncodeFieldErrorType\n | HashTypeErrorType\n | ErrorType\n\nfunction encodeData({\n data,\n primaryType,\n types,\n}: {\n data: Record<string, unknown>\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n const encodedTypes: AbiParameter[] = [{ type: 'bytes32' }]\n const encodedValues: unknown[] = [hashType({ primaryType, types })]\n\n for (const field of types[primaryType]) {\n const [type, value] = encodeField({\n types,\n name: field.name,\n type: field.type,\n value: data[field.name],\n })\n encodedTypes.push(type)\n encodedValues.push(value)\n }\n\n return encodeAbiParameters(encodedTypes, encodedValues)\n}\n\ntype HashTypeErrorType =\n | ToHexErrorType\n | EncodeTypeErrorType\n | Keccak256ErrorType\n | ErrorType\n\nfunction hashType({\n primaryType,\n types,\n}: {\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n const encodedHashType = toHex(encodeType({ primaryType, types }))\n return keccak256(encodedHashType)\n}\n\ntype EncodeTypeErrorType = FindTypeDependenciesErrorType\n\nexport function encodeType({\n primaryType,\n types,\n}: {\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n let result = ''\n const unsortedDeps = findTypeDependencies({ primaryType, types })\n unsortedDeps.delete(primaryType)\n\n const deps = [primaryType, ...Array.from(unsortedDeps).sort()]\n for (const type of deps) {\n result += `${type}(${types[type]\n .map(({ name, type: t }) => `${t} ${name}`)\n .join(',')})`\n }\n\n return result\n}\n\ntype FindTypeDependenciesErrorType = ErrorType\n\nfunction findTypeDependencies(\n {\n primaryType: primaryType_,\n types,\n }: {\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n },\n results: Set<string> = new Set(),\n): Set<string> {\n const match = primaryType_.match(/^\\w*/u)\n const primaryType = match?.[0]!\n if (results.has(primaryType) || types[primaryType] === undefined) {\n return results\n }\n\n results.add(primaryType)\n\n for (const field of types[primaryType]) {\n findTypeDependencies({ primaryType: field.type, types }, results)\n }\n return results\n}\n\ntype EncodeFieldErrorType =\n | Keccak256ErrorType\n | EncodeAbiParametersErrorType\n | ToHexErrorType\n | ErrorType\n\nfunction encodeField({\n types,\n name,\n type,\n value,\n}: {\n types: Record<string, readonly MessageTypeProperty[]>\n name: string\n type: string\n value: any\n}): [type: AbiParameter, value: any] {\n if (types[type] !== undefined) {\n return [\n { type: 'bytes32' },\n keccak256(encodeData({ data: value, primaryType: type, types })),\n ]\n }\n\n if (type === 'bytes') {\n const prepend = value.length % 2 ? '0' : ''\n value = `0x${prepend + value.slice(2)}`\n return [{ type: 'bytes32' }, keccak256(value)]\n }\n\n if (type === 'string') return [{ type: 'bytes32' }, keccak256(toHex(value))]\n\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['))\n const typeValuePairs = (value as [AbiParameter, any][]).map((item) =>\n encodeField({\n name,\n type: parsedType,\n types,\n value: item,\n }),\n )\n return [\n { type: 'bytes32' },\n keccak256(\n encodeAbiParameters(\n typeValuePairs.map(([t]) => t),\n typeValuePairs.map(([, v]) => v),\n ),\n ),\n ]\n }\n\n return [{ type }, value]\n}\n","import type { TypedData, TypedDataDomain, TypedDataParameter } from 'abitype'\n\nimport { BytesSizeMismatchError } from '../errors/abi.js'\nimport { InvalidAddressError } from '../errors/address.js'\nimport {\n InvalidDomainError,\n InvalidPrimaryTypeError,\n InvalidStructTypeError,\n} from '../errors/typedData.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Hex } from '../types/misc.js'\nimport type { TypedDataDefinition } from '../types/typedData.js'\nimport { type IsAddressErrorType, isAddress } from './address/isAddress.js'\nimport { type SizeErrorType, size } from './data/size.js'\nimport { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js'\nimport { bytesRegex, integerRegex } from './regex.js'\nimport {\n type HashDomainErrorType,\n hashDomain,\n} from './signature/hashTypedData.js'\nimport { stringify } from './stringify.js'\n\nexport type SerializeTypedDataErrorType =\n | HashDomainErrorType\n | IsAddressErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nexport function serializeTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(parameters: TypedDataDefinition<typedData, primaryType>) {\n const {\n domain: domain_,\n message: message_,\n primaryType,\n types,\n } = parameters as unknown as TypedDataDefinition\n\n const normalizeData = (\n struct: readonly TypedDataParameter[],\n data_: Record<string, unknown>,\n ) => {\n const data = { ...data_ }\n for (const param of struct) {\n const { name, type } = param\n if (type === 'address') data[name] = (data[name] as string).toLowerCase()\n }\n return data\n }\n\n const domain = (() => {\n if (!types.EIP712Domain) return {}\n if (!domain_) return {}\n return normalizeData(types.EIP712Domain, domain_)\n })()\n\n const message = (() => {\n if (primaryType === 'EIP712Domain') return undefined\n return normalizeData(types[primaryType], message_)\n })()\n\n return stringify({ domain, message, primaryType, types })\n}\n\nexport type ValidateTypedDataErrorType =\n | HashDomainErrorType\n | IsAddressErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nexport function validateTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(parameters: TypedDataDefinition<typedData, primaryType>) {\n const { domain, message, primaryType, types } =\n parameters as unknown as TypedDataDefinition\n\n const validateData = (\n struct: readonly TypedDataParameter[],\n data: Record<string, unknown>,\n ) => {\n for (const param of struct) {\n const { name, type } = param\n const value = data[name]\n\n const integerMatch = type.match(integerRegex)\n if (\n integerMatch &&\n (typeof value === 'number' || typeof value === 'bigint')\n ) {\n const [_type, base, size_] = integerMatch\n // If number cannot be cast to a sized hex value, it is out of range\n // and will throw.\n numberToHex(value, {\n signed: base === 'int',\n size: Number.parseInt(size_) / 8,\n })\n }\n\n if (type === 'address' && typeof value === 'string' && !isAddress(value))\n throw new InvalidAddressError({ address: value })\n\n const bytesMatch = type.match(bytesRegex)\n if (bytesMatch) {\n const [_type, size_] = bytesMatch\n if (size_ && size(value as Hex) !== Number.parseInt(size_))\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size_),\n givenSize: size(value as Hex),\n })\n }\n\n const struct = types[type]\n if (struct) {\n validateReference(type)\n validateData(struct, value as Record<string, unknown>)\n }\n }\n }\n\n // Validate domain types.\n if (types.EIP712Domain && domain) {\n if (typeof domain !== 'object') throw new InvalidDomainError({ domain })\n validateData(types.EIP712Domain, domain)\n }\n\n // Validate message types.\n if (primaryType !== 'EIP712Domain') {\n if (types[primaryType]) validateData(types[primaryType], message)\n else throw new InvalidPrimaryTypeError({ primaryType, types })\n }\n}\n\nexport type GetTypesForEIP712DomainErrorType = ErrorType\n\nexport function getTypesForEIP712Domain({\n domain,\n}: { domain?: TypedDataDomain | undefined }): TypedDataParameter[] {\n return [\n typeof domain?.name === 'string' && { name: 'name', type: 'string' },\n domain?.version && { name: 'version', type: 'string' },\n typeof domain?.chainId === 'number' && {\n name: 'chainId',\n type: 'uint256',\n },\n domain?.verifyingContract && {\n name: 'verifyingContract',\n type: 'address',\n },\n domain?.salt && { name: 'salt', type: 'bytes32' },\n ].filter(Boolean) as TypedDataParameter[]\n}\n\nexport type DomainSeparatorErrorType =\n | GetTypesForEIP712DomainErrorType\n | HashDomainErrorType\n | ErrorType\n\nexport function domainSeparator({ domain }: { domain: TypedDataDomain }): Hex {\n return hashDomain({\n domain,\n types: {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n },\n })\n}\n\n/** @internal */\nfunction validateReference(type: string) {\n // Struct type must not be a Solidity type.\n if (\n type === 'address' ||\n type === 'bool' ||\n type === 'string' ||\n type.startsWith('bytes') ||\n type.startsWith('uint') ||\n type.startsWith('int')\n )\n throw new InvalidStructTypeError({ type })\n}\n","export const presignMessagePrefix = '\\x19Ethereum Signed Message:\\n'\n","import { presignMessagePrefix } from '../../constants/strings.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex, SignableMessage } from '../../types/misc.js'\nimport { type ConcatErrorType, concat } from '../data/concat.js'\nimport { size } from '../data/size.js'\nimport {\n type BytesToHexErrorType,\n type StringToHexErrorType,\n bytesToHex,\n stringToHex,\n} from '../encoding/toHex.js'\n\nexport type ToPrefixedMessageErrorType =\n | ConcatErrorType\n | StringToHexErrorType\n | BytesToHexErrorType\n | ErrorType\n\nexport function toPrefixedMessage(message_: SignableMessage): Hex {\n const message = (() => {\n if (typeof message_ === 'string') return stringToHex(message_)\n if (typeof message_.raw === 'string') return message_.raw\n return bytesToHex(message_.raw)\n })()\n const prefix = stringToHex(`${presignMessagePrefix}${size(message)}`)\n return concat([prefix, message])\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, SignableMessage } from '../../types/misc.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { toPrefixedMessage } from './toPrefixedMessage.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type HashMessageReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type HashMessageErrorType = Keccak256ErrorType | ErrorType\n\nexport function hashMessage<to extends To = 'hex'>(\n message: SignableMessage,\n to_?: to | undefined,\n): HashMessageReturnType<to> {\n return keccak256(toPrefixedMessage(message), to_)\n}\n","import { versionedHashVersionKzg } from '../../constants/kzg.js'\nimport { maxUint256 } from '../../constants/number.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport { BaseError, type BaseErrorType } from '../../errors/base.js'\nimport {\n EmptyBlobError,\n type EmptyBlobErrorType,\n InvalidVersionedHashSizeError,\n type InvalidVersionedHashSizeErrorType,\n InvalidVersionedHashVersionError,\n type InvalidVersionedHashVersionErrorType,\n} from '../../errors/blob.js'\nimport {\n InvalidChainIdError,\n type InvalidChainIdErrorType,\n} from '../../errors/chain.js'\nimport {\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n} from '../../errors/node.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n TransactionSerializableEIP1559,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableLegacy,\n} from '../../types/transaction.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { size } from '../data/size.js'\nimport { slice } from '../data/slice.js'\nimport { hexToNumber } from '../encoding/fromHex.js'\n\nexport type AssertTransactionEIP7702ErrorType =\n | AssertTransactionEIP1559ErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | ErrorType\n\nexport function assertTransactionEIP7702(\n transaction: TransactionSerializableEIP7702,\n) {\n const { authorizationList } = transaction\n if (authorizationList) {\n for (const authorization of authorizationList) {\n const { contractAddress, chainId } = authorization\n if (!isAddress(contractAddress))\n throw new InvalidAddressError({ address: contractAddress })\n if (chainId < 0) throw new InvalidChainIdError({ chainId })\n }\n }\n assertTransactionEIP1559(transaction as {} as TransactionSerializableEIP1559)\n}\n\nexport type AssertTransactionEIP4844ErrorType =\n | AssertTransactionEIP1559ErrorType\n | EmptyBlobErrorType\n | InvalidVersionedHashSizeErrorType\n | InvalidVersionedHashVersionErrorType\n | ErrorType\n\nexport function assertTransactionEIP4844(\n transaction: TransactionSerializableEIP4844,\n) {\n const { blobVersionedHashes } = transaction\n if (blobVersionedHashes) {\n if (blobVersionedHashes.length === 0) throw new EmptyBlobError()\n for (const hash of blobVersionedHashes) {\n const size_ = size(hash)\n const version = hexToNumber(slice(hash, 0, 1))\n if (size_ !== 32)\n throw new InvalidVersionedHashSizeError({ hash, size: size_ })\n if (version !== versionedHashVersionKzg)\n throw new InvalidVersionedHashVersionError({\n hash,\n version,\n })\n }\n }\n assertTransactionEIP1559(transaction as {} as TransactionSerializableEIP1559)\n}\n\nexport type AssertTransactionEIP1559ErrorType =\n | BaseErrorType\n | IsAddressErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | FeeCapTooHighErrorType\n | TipAboveFeeCapErrorType\n | ErrorType\n\nexport function assertTransactionEIP1559(\n transaction: TransactionSerializableEIP1559,\n) {\n const { chainId, maxPriorityFeePerGas, maxFeePerGas, to } = transaction\n if (chainId <= 0) throw new InvalidChainIdError({ chainId })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (maxFeePerGas && maxFeePerGas > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas })\n if (\n maxPriorityFeePerGas &&\n maxFeePerGas &&\n maxPriorityFeePerGas > maxFeePerGas\n )\n throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas })\n}\n\nexport type AssertTransactionEIP2930ErrorType =\n | BaseErrorType\n | IsAddressErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | FeeCapTooHighErrorType\n | ErrorType\n\nexport function assertTransactionEIP2930(\n transaction: TransactionSerializableEIP2930,\n) {\n const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } =\n transaction\n if (chainId <= 0) throw new InvalidChainIdError({ chainId })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (maxPriorityFeePerGas || maxFeePerGas)\n throw new BaseError(\n '`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.',\n )\n if (gasPrice && gasPrice > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas: gasPrice })\n}\n\nexport type AssertTransactionLegacyErrorType =\n | BaseErrorType\n | IsAddressErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | FeeCapTooHighErrorType\n | ErrorType\n\nexport function assertTransactionLegacy(\n transaction: TransactionSerializableLegacy,\n) {\n const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } =\n transaction\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (typeof chainId !== 'undefined' && chainId <= 0)\n throw new InvalidChainIdError({ chainId })\n if (maxPriorityFeePerGas || maxFeePerGas)\n throw new BaseError(\n '`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.',\n )\n if (gasPrice && gasPrice > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas: gasPrice })\n}\n","import type { ErrorType } from '../../../errors/utils.js'\nimport { toHex } from '../../../utils/encoding/toHex.js'\nimport { toYParitySignatureArray } from '../../../utils/transaction/serializeTransaction.js'\nimport type {\n AuthorizationList,\n SerializedAuthorizationList,\n} from '../types/authorization.js'\n\nexport type SerializeAuthorizationListReturnType = SerializedAuthorizationList\n\nexport type SerializeAuthorizationListErrorType = ErrorType\n\n/*\n * Serializes an EIP-7702 authorization list.\n */\nexport function serializeAuthorizationList(\n authorizationList?: AuthorizationList<number, true> | undefined,\n): SerializeAuthorizationListReturnType {\n if (!authorizationList || authorizationList.length === 0) return []\n\n const serializedAuthorizationList = []\n for (const authorization of authorizationList) {\n const { contractAddress, chainId, nonce, ...signature } = authorization\n serializedAuthorizationList.push([\n chainId ? toHex(chainId) : '0x',\n contractAddress,\n nonce ? toHex(nonce) : '0x',\n ...toYParitySignatureArray({}, signature),\n ])\n }\n\n return serializedAuthorizationList as {} as SerializeAuthorizationListReturnType\n}\n","import {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport {\n InvalidStorageKeySizeError,\n type InvalidStorageKeySizeErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { AccessList } from '../../types/transaction.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport type { RecursiveArray } from '../encoding/toRlp.js'\n\nexport type SerializeAccessListErrorType =\n | InvalidStorageKeySizeErrorType\n | InvalidAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\n/*\n * Serialize an EIP-2930 access list\n * @remarks\n * Use to create a transaction serializer with support for EIP-2930 access lists\n *\n * @param accessList - Array of objects of address and arrays of Storage Keys\n * @throws InvalidAddressError, InvalidStorageKeySizeError\n * @returns Array of hex strings\n */\nexport function serializeAccessList(\n accessList?: AccessList | undefined,\n): RecursiveArray<Hex> {\n if (!accessList || accessList.length === 0) return []\n\n const serializedAccessList = []\n for (let i = 0; i < accessList.length; i++) {\n const { address, storageKeys } = accessList[i]\n\n for (let j = 0; j < storageKeys.length; j++) {\n if (storageKeys[j].length - 2 !== 64) {\n throw new InvalidStorageKeySizeError({ storageKey: storageKeys[j] })\n }\n }\n\n if (!isAddress(address, { strict: false })) {\n throw new InvalidAddressError({ address })\n }\n\n serializedAccessList.push([address, storageKeys])\n }\n return serializedAccessList\n}\n","import {\n InvalidLegacyVError,\n type InvalidLegacyVErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n ByteArray,\n Hex,\n Signature,\n SignatureLegacy,\n} from '../../types/misc.js'\nimport type {\n TransactionSerializable,\n TransactionSerializableEIP1559,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableGeneric,\n TransactionSerializableLegacy,\n TransactionSerialized,\n TransactionSerializedEIP1559,\n TransactionSerializedEIP2930,\n TransactionSerializedEIP4844,\n TransactionSerializedEIP7702,\n TransactionSerializedLegacy,\n TransactionType,\n} from '../../types/transaction.js'\nimport type { OneOf } from '../../types/utils.js'\nimport {\n type BlobsToCommitmentsErrorType,\n blobsToCommitments,\n} from '../blob/blobsToCommitments.js'\nimport {\n blobsToProofs,\n type blobsToProofsErrorType,\n} from '../blob/blobsToProofs.js'\nimport {\n type CommitmentsToVersionedHashesErrorType,\n commitmentsToVersionedHashes,\n} from '../blob/commitmentsToVersionedHashes.js'\nimport {\n type ToBlobSidecarsErrorType,\n toBlobSidecars,\n} from '../blob/toBlobSidecars.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport { trim } from '../data/trim.js'\nimport { type ToHexErrorType, bytesToHex, toHex } from '../encoding/toHex.js'\nimport { type ToRlpErrorType, toRlp } from '../encoding/toRlp.js'\n\nimport {\n type SerializeAuthorizationListErrorType,\n serializeAuthorizationList,\n} from '../../experimental/eip7702/utils/serializeAuthorizationList.js'\nimport {\n type AssertTransactionEIP1559ErrorType,\n type AssertTransactionEIP2930ErrorType,\n type AssertTransactionEIP4844ErrorType,\n type AssertTransactionEIP7702ErrorType,\n type AssertTransactionLegacyErrorType,\n assertTransactionEIP1559,\n assertTransactionEIP2930,\n assertTransactionEIP4844,\n assertTransactionEIP7702,\n assertTransactionLegacy,\n} from './assertTransaction.js'\nimport {\n type GetTransactionType,\n type GetTransactionTypeErrorType,\n getTransactionType,\n} from './getTransactionType.js'\nimport {\n type SerializeAccessListErrorType,\n serializeAccessList,\n} from './serializeAccessList.js'\n\nexport type SerializedTransactionReturnType<\n transaction extends TransactionSerializable = TransactionSerializable,\n ///\n _transactionType extends TransactionType = GetTransactionType<transaction>,\n> = TransactionSerialized<_transactionType>\n\nexport type SerializeTransactionFn<\n transaction extends TransactionSerializableGeneric = TransactionSerializable,\n ///\n _transactionType extends TransactionType = never,\n> = typeof serializeTransaction<\n OneOf<TransactionSerializable | transaction>,\n _transactionType\n>\n\nexport type SerializeTransactionErrorType =\n | GetTransactionTypeErrorType\n | SerializeTransactionEIP1559ErrorType\n | SerializeTransactionEIP2930ErrorType\n | SerializeTransactionEIP4844ErrorType\n | SerializeTransactionEIP7702ErrorType\n | SerializeTransactionLegacyErrorType\n | ErrorType\n\nexport function serializeTransaction<\n const transaction extends TransactionSerializable,\n ///\n _transactionType extends TransactionType = GetTransactionType<transaction>,\n>(\n transaction: transaction,\n signature?: Signature | undefined,\n): SerializedTransactionReturnType<transaction, _transactionType> {\n const type = getTransactionType(transaction) as GetTransactionType\n\n if (type === 'eip1559')\n return serializeTransactionEIP1559(\n transaction as TransactionSerializableEIP1559,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n if (type === 'eip2930')\n return serializeTransactionEIP2930(\n transaction as TransactionSerializableEIP2930,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n if (type === 'eip4844')\n return serializeTransactionEIP4844(\n transaction as TransactionSerializableEIP4844,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n if (type === 'eip7702')\n return serializeTransactionEIP7702(\n transaction as TransactionSerializableEIP7702,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n return serializeTransactionLegacy(\n transaction as TransactionSerializableLegacy,\n signature as SignatureLegacy,\n ) as SerializedTransactionReturnType<transaction>\n}\n\ntype SerializeTransactionEIP7702ErrorType =\n | AssertTransactionEIP7702ErrorType\n | SerializeAuthorizationListErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP7702(\n transaction: TransactionSerializableEIP7702,\n signature?: Signature | undefined,\n): TransactionSerializedEIP7702 {\n const {\n authorizationList,\n chainId,\n gas,\n nonce,\n to,\n value,\n maxFeePerGas,\n maxPriorityFeePerGas,\n accessList,\n data,\n } = transaction\n\n assertTransactionEIP7702(transaction)\n\n const serializedAccessList = serializeAccessList(accessList)\n const serializedAuthorizationList =\n serializeAuthorizationList(authorizationList)\n\n return concatHex([\n '0x04',\n toRlp([\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : '0x',\n maxFeePerGas ? toHex(maxFeePerGas) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n serializedAuthorizationList,\n ...toYParitySignatureArray(transaction, signature),\n ]),\n ]) as TransactionSerializedEIP7702\n}\n\ntype SerializeTransactionEIP4844ErrorType =\n | AssertTransactionEIP4844ErrorType\n | BlobsToCommitmentsErrorType\n | CommitmentsToVersionedHashesErrorType\n | blobsToProofsErrorType\n | ToBlobSidecarsErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP4844(\n transaction: TransactionSerializableEIP4844,\n signature?: Signature | undefined,\n): TransactionSerializedEIP4844 {\n const {\n chainId,\n gas,\n nonce,\n to,\n value,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n accessList,\n data,\n } = transaction\n\n assertTransactionEIP4844(transaction)\n\n let blobVersionedHashes = transaction.blobVersionedHashes\n let sidecars = transaction.sidecars\n // If `blobs` are passed, we will need to compute the KZG commitments & proofs.\n if (\n transaction.blobs &&\n (typeof blobVersionedHashes === 'undefined' ||\n typeof sidecars === 'undefined')\n ) {\n const blobs = (\n typeof transaction.blobs[0] === 'string'\n ? transaction.blobs\n : (transaction.blobs as ByteArray[]).map((x) => bytesToHex(x))\n ) as Hex[]\n const kzg = transaction.kzg!\n const commitments = blobsToCommitments({\n blobs,\n kzg,\n })\n\n if (typeof blobVersionedHashes === 'undefined')\n blobVersionedHashes = commitmentsToVersionedHashes({\n commitments,\n })\n if (typeof sidecars === 'undefined') {\n const proofs = blobsToProofs({ blobs, commitments, kzg })\n sidecars = toBlobSidecars({ blobs, commitments, proofs })\n }\n }\n\n const serializedAccessList = serializeAccessList(accessList)\n\n const serializedTransaction = [\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : '0x',\n maxFeePerGas ? toHex(maxFeePerGas) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n maxFeePerBlobGas ? toHex(maxFeePerBlobGas) : '0x',\n blobVersionedHashes ?? [],\n ...toYParitySignatureArray(transaction, signature),\n ] as const\n\n const blobs: Hex[] = []\n const commitments: Hex[] = []\n const proofs: Hex[] = []\n if (sidecars)\n for (let i = 0; i < sidecars.length; i++) {\n const { blob, commitment, proof } = sidecars[i]\n blobs.push(blob)\n commitments.push(commitment)\n proofs.push(proof)\n }\n\n return concatHex([\n '0x03',\n sidecars\n ? // If sidecars are enabled, envelope turns into a \"wrapper\":\n toRlp([serializedTransaction, blobs, commitments, proofs])\n : // If sidecars are disabled, standard envelope is used:\n toRlp(serializedTransaction),\n ]) as TransactionSerializedEIP4844\n}\n\ntype SerializeTransactionEIP1559ErrorType =\n | AssertTransactionEIP1559ErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP1559(\n transaction: TransactionSerializableEIP1559,\n signature?: Signature | undefined,\n): TransactionSerializedEIP1559 {\n const {\n chainId,\n gas,\n nonce,\n to,\n value,\n maxFeePerGas,\n maxPriorityFeePerGas,\n accessList,\n data,\n } = transaction\n\n assertTransactionEIP1559(transaction)\n\n const serializedAccessList = serializeAccessList(accessList)\n\n const serializedTransaction = [\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : '0x',\n maxFeePerGas ? toHex(maxFeePerGas) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n ...toYParitySignatureArray(transaction, signature),\n ]\n\n return concatHex([\n '0x02',\n toRlp(serializedTransaction),\n ]) as TransactionSerializedEIP1559\n}\n\ntype SerializeTransactionEIP2930ErrorType =\n | AssertTransactionEIP2930ErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP2930(\n transaction: TransactionSerializableEIP2930,\n signature?: Signature | undefined,\n): TransactionSerializedEIP2930 {\n const { chainId, gas, data, nonce, to, value, accessList, gasPrice } =\n transaction\n\n assertTransactionEIP2930(transaction)\n\n const serializedAccessList = serializeAccessList(accessList)\n\n const serializedTransaction = [\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n gasPrice ? toHex(gasPrice) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n ...toYParitySignatureArray(transaction, signature),\n ]\n\n return concatHex([\n '0x01',\n toRlp(serializedTransaction),\n ]) as TransactionSerializedEIP2930\n}\n\ntype SerializeTransactionLegacyErrorType =\n | AssertTransactionLegacyErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | ErrorType\n\nfunction serializeTransactionLegacy(\n transaction: TransactionSerializableLegacy,\n signature?: SignatureLegacy | undefined,\n): TransactionSerializedLegacy {\n const { chainId = 0, gas, data, nonce, to, value, gasPrice } = transaction\n\n assertTransactionLegacy(transaction)\n\n let serializedTransaction = [\n nonce ? toHex(nonce) : '0x',\n gasPrice ? toHex(gasPrice) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n ]\n\n if (signature) {\n const v = (() => {\n // EIP-155 (inferred chainId)\n if (signature.v >= 35n) {\n const inferredChainId = (signature.v - 35n) / 2n\n if (inferredChainId > 0) return signature.v\n return 27n + (signature.v === 35n ? 0n : 1n)\n }\n\n // EIP-155 (explicit chainId)\n if (chainId > 0)\n return BigInt(chainId * 2) + BigInt(35n + signature.v - 27n)\n\n // Pre-EIP-155 (no chainId)\n const v = 27n + (signature.v === 27n ? 0n : 1n)\n if (signature.v !== v) throw new InvalidLegacyVError({ v: signature.v })\n return v\n })()\n\n const r = trim(signature.r)\n const s = trim(signature.s)\n\n serializedTransaction = [\n ...serializedTransaction,\n toHex(v),\n r === '0x00' ? '0x' : r,\n s === '0x00' ? '0x' : s,\n ]\n } else if (chainId > 0) {\n serializedTransaction = [\n ...serializedTransaction,\n toHex(chainId),\n '0x',\n '0x',\n ]\n }\n\n return toRlp(serializedTransaction) as TransactionSerializedLegacy\n}\n\nexport function toYParitySignatureArray(\n transaction: TransactionSerializableGeneric,\n signature_?: Signature | undefined,\n) {\n const signature = signature_ ?? transaction\n const { v, yParity } = signature\n\n if (typeof signature.r === 'undefined') return []\n if (typeof signature.s === 'undefined') return []\n if (typeof v === 'undefined' && typeof yParity === 'undefined') return []\n\n const r = trim(signature.r)\n const s = trim(signature.s)\n\n const yParity_ = (() => {\n if (typeof yParity === 'number') return yParity ? toHex(1) : '0x'\n if (v === 0n) return '0x'\n if (v === 1n) return toHex(1)\n\n return v === 27n ? '0x' : toHex(1)\n })()\n\n return [yParity_, r === '0x00' ? '0x' : r, s === '0x00' ? '0x' : s]\n}\n","import { secp256k1 } from '@noble/curves/secp256k1'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport { type HexToBigIntErrorType, hexToBigInt } from '../encoding/fromHex.js'\nimport { hexToBytes } from '../encoding/toBytes.js'\nimport type { ToHexErrorType } from '../encoding/toHex.js'\n\ntype To = 'bytes' | 'hex'\n\nexport type SerializeSignatureParameters<to extends To = 'hex'> = Signature & {\n to?: to | To | undefined\n}\n\nexport type SerializeSignatureReturnType<to extends To = 'hex'> =\n | (to extends 'hex' ? Hex : never)\n | (to extends 'bytes' ? ByteArray : never)\n\nexport type SerializeSignatureErrorType =\n | HexToBigIntErrorType\n | ToHexErrorType\n | ErrorType\n\n/**\n * @description Converts a signature into hex format.\n *\n * @param signature The signature to convert.\n * @returns The signature in hex format.\n *\n * @example\n * serializeSignature({\n * r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',\n * s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',\n * yParity: 1\n * })\n * // \"0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c\"\n */\nexport function serializeSignature<to extends To = 'hex'>({\n r,\n s,\n to = 'hex',\n v,\n yParity,\n}: SerializeSignatureParameters<to>): SerializeSignatureReturnType<to> {\n const yParity_ = (() => {\n if (yParity === 0 || yParity === 1) return yParity\n if (v && (v === 27n || v === 28n || v >= 35n)) return v % 2n === 0n ? 1 : 0\n throw new Error('Invalid `v` or `yParity` value')\n })()\n const signature = `0x${new secp256k1.Signature(\n hexToBigInt(r),\n hexToBigInt(s),\n ).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}` as const\n\n if (to === 'hex') return signature as SerializeSignatureReturnType<to>\n return hexToBytes(signature) as SerializeSignatureReturnType<to>\n}\n","import { ThorClient } from '@vechain/sdk-network';\n\n/**\n * Network URL.\n * Defaults to mainnet.\n */\nexport const NETWORK_URL =\n process.env.NEXT_PUBLIC_NETWORK_URL ?? 'https://mainnet.vechain.org';\n\n/**\n * Thor client instance\n */\nexport const THOR_CLIENT = ThorClient.at(NETWORK_URL);\n\n/**\n * Delegator url for the account abstraction factory contract\n */\nexport const DELEGATOR_URL = process.env.NEXT_PUBLIC_DELEGATOR_URL as string;\nimport { SocialInfo } from './Types';\n\nexport const ACCOUNT_FACTORY_ADDRESSES = {\n '14018334920824264832118464179726739019961432051877733167310318607178':\n '0xC06Ad8573022e2BE416CA89DA47E8c592971679A',\n '1176455790972829965191905223412607679856028701100105089447013101863':\n '0x7EABA81B4F3741Ac381af7e025f3B6e0428F05Fb',\n} as const;\n\nexport const TOKEN_LOGOS: Record<string, string> = {\n VET: 'https://cryptologos.cc/logos/vechain-vet-logo.png',\n VTHO: 'https://s2.coinmarketcap.com/static/img/coins/64x64/3012.png',\n B3TR: 'https://vechain.github.io/token-registry/assets/3d55edb42b09a634f7f2f26756a02571de901a5b.png',\n VOT3: 'https://vechain.github.io/token-registry/assets/17ff70aa1d898bc97ad690dbfad1a3b5643f7e0b.png',\n veDelegate:\n 'https://vechain.github.io/token-registry/assets/1c641b86096d56bf13d49f38388accd6db8b8b2e.png',\n};\n\nexport const EXPLORER_URL = {\n '14018334920824264832118464179726739019961432051877733167310318607178':\n 'https://vechainstats.com/transaction',\n '1176455790972829965191905223412607679856028701100105089447013101863':\n 'https://explore-testnet.vechain.org/transactions',\n} as const;\n\nexport const VECHAIN_PRIVY_APP_ID = 'cm4wxxujb022fyujl7g0thb21';\n\nexport const WALLET_INFOS: SocialInfo[] = [\n {\n code: 'veworld',\n name: 'VeWorld',\n logo_url:\n 'https://play-lh.googleusercontent.com/jqkMrElBCTKOhB85WdC70rg5ta0IsruE75nQLXRCiHD4GlsEX72_8aFohDYDrc9eG4BF',\n },\n];\n\nexport const SOCIAL_INFOS: SocialInfo[] = [\n {\n code: 'twitter',\n name: 'Twitter',\n logo_url:\n 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/X_logo_2023.svg/1024px-X_logo_2023.svg.png',\n },\n {\n code: 'google',\n name: 'Google',\n logo_url:\n 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Google_%22G%22_logo.svg/2048px-Google_%22G%22_logo.svg.png',\n },\n {\n code: 'apple',\n name: 'Apple',\n logo_url:\n 'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Apple_logo_black.svg/625px-Apple_logo_black.svg.png',\n },\n {\n code: 'instagram',\n name: 'Instagram',\n logo_url:\n 'https://png.pngtree.com/element_our/sm/20180630/sm_5b37de3263964.jpg',\n },\n {\n code: 'linkedin',\n name: 'LinkedIn',\n logo_url:\n 'https://image.similarpng.com/very-thumbnail/2020/07/Linkedin-logo-on-transparent-PNG-.png',\n },\n {\n code: 'tiktok',\n name: 'TikTok',\n logo_url:\n 'https://w7.pngwing.com/pngs/959/454/png-transparent-tiktok-logo-thumbnail.png',\n },\n {\n code: 'spotify',\n name: 'Spotify',\n logo_url:\n 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Spotify_logo_without_text.svg/480px-Spotify_logo_without_text.svg.png',\n },\n {\n code: 'discord',\n name: 'Discord',\n logo_url:\n 'https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/636e0a6a49cf127bf92de1e2_icon_clyde_blurple_RGB.png',\n },\n {\n code: 'github',\n name: 'GitHub',\n logo_url:\n 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Octicons-mark-github.svg/640px-Octicons-mark-github.svg.png',\n },\n {\n code: 'telegram',\n name: 'Telegram',\n logo_url:\n 'https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Telegram_logo.svg/800px-Telegram_logo.svg.png',\n },\n {\n code: 'sms',\n name: 'SMS',\n logo_url:\n 'https://w7.pngwing.com/pngs/356/440/png-transparent-iphone-computer-icons-telephone-email-telephone-electronics-text-mobile-phones.png',\n },\n {\n code: 'email',\n name: 'Email',\n logo_url:\n 'https://cdn4.iconfinder.com/data/icons/social-media-logos-6/512/112-gmail_email_mail-512.png',\n },\n];\n","import { picasso } from '@vechain/picasso';\n\nexport const humanAddress = (\n address: string,\n charAtStart = 6,\n charAtEnd = 4,\n): string => `${address.slice(0, charAtStart)}••••${address.slice(-charAtEnd)}`;\n\nexport const humanDomain = (\n domain: string,\n lengthBefore = 8,\n lengthAfter = 6,\n) => {\n // if domain is smaller than lengthBefore + lengthAfter, return the domain\n if (domain.length <= lengthBefore + lengthAfter) return domain;\n\n const before = domain.substring(0, lengthBefore);\n const after = domain.substring(domain.length - lengthAfter);\n return `${before}••••${after}`;\n};\n\nexport const getPicassoImage = (address: string, base64 = false): string => {\n const image = picasso(address.toLowerCase());\n if (base64) {\n const base64data = Buffer.from(image, 'utf8').toString('base64');\n return `data:image/svg+xml;base64,${base64data}`;\n }\n return `data:image/svg+xml;utf8,${image}`;\n};\n","import { secp256k1 } from '@noble/curves/secp256k1'\n\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Hex } from '../types/misc.js'\nimport { type ToHexErrorType, toHex } from '../utils/encoding/toHex.js'\n\nexport type GeneratePrivateKeyErrorType = ToHexErrorType | ErrorType\n\n/**\n * @description Generates a random private key.\n *\n * @returns A randomly generated private key.\n */\nexport function generatePrivateKey(): Hex {\n return toHex(secp256k1.utils.randomPrivateKey())\n}\n","// TODO(v3): Rename to `toLocalAccount` + add `source` property to define source (privateKey, mnemonic, hdKey, etc).\n\nimport type { Address } from 'abitype'\n\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../errors/address.js'\nimport {\n type IsAddressErrorType,\n isAddress,\n} from '../utils/address/isAddress.js'\n\nimport type { ErrorType } from '../errors/utils.js'\nimport type {\n AccountSource,\n CustomSource,\n JsonRpcAccount,\n LocalAccount,\n} from './types.js'\n\ntype GetAccountReturnType<accountSource extends AccountSource> =\n | (accountSource extends Address ? JsonRpcAccount : never)\n | (accountSource extends CustomSource ? LocalAccount : never)\n\nexport type ToAccountErrorType =\n | InvalidAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\n/**\n * @description Creates an Account from a custom signing implementation.\n *\n * @returns A Local Account.\n */\nexport function toAccount<accountSource extends AccountSource>(\n source: accountSource,\n): GetAccountReturnType<accountSource> {\n if (typeof source === 'string') {\n if (!isAddress(source, { strict: false }))\n throw new InvalidAddressError({ address: source })\n return {\n address: source,\n type: 'json-rpc',\n } as GetAccountReturnType<accountSource>\n }\n\n if (!isAddress(source.address, { strict: false }))\n throw new InvalidAddressError({ address: source.address })\n return {\n address: source.address,\n nonceManager: source.nonceManager,\n sign: source.sign,\n experimental_signAuthorization: source.experimental_signAuthorization,\n signMessage: source.signMessage,\n signTransaction: source.signTransaction,\n signTypedData: source.signTypedData,\n source: 'custom',\n type: 'local',\n } as GetAccountReturnType<accountSource>\n}\n","// TODO(v3): Convert to sync.\n\nimport { secp256k1 } from '@noble/curves/secp256k1'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport { serializeSignature } from '../../utils/signature/serializeSignature.js'\n\ntype To = 'object' | 'bytes' | 'hex'\n\nexport type SignParameters<to extends To = 'object'> = {\n hash: Hex\n privateKey: Hex\n to?: to | To | undefined\n}\n\nexport type SignReturnType<to extends To = 'object'> =\n | (to extends 'object' ? Signature : never)\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type SignErrorType = NumberToHexErrorType | ErrorType\n\nlet extraEntropy: Hex | boolean = false\n\n/**\n * Sets extra entropy for signing functions.\n */\nexport function setSignEntropy(entropy: true | Hex) {\n if (!entropy) throw new Error('must be a `true` or a hex value.')\n extraEntropy = entropy\n}\n\n/**\n * @description Signs a hash with a given private key.\n *\n * @param hash The hash to sign.\n * @param privateKey The private key to sign with.\n *\n * @returns The signature.\n */\nexport async function sign<to extends To = 'object'>({\n hash,\n privateKey,\n to = 'object',\n}: SignParameters<to>): Promise<SignReturnType<to>> {\n const { r, s, recovery } = secp256k1.sign(\n hash.slice(2),\n privateKey.slice(2),\n { lowS: true, extraEntropy },\n )\n const signature = {\n r: numberToHex(r, { size: 32 }),\n s: numberToHex(s, { size: 32 }),\n v: recovery ? 28n : 27n,\n yParity: recovery,\n }\n return (() => {\n if (to === 'bytes' || to === 'hex')\n return serializeSignature({ ...signature, to })\n return signature\n })() as SignReturnType<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type {\n Authorization,\n SignedAuthorization,\n} from '../../experimental/eip7702/types/authorization.js'\nimport {\n type HashAuthorizationErrorType,\n hashAuthorization,\n} from '../../experimental/eip7702/utils/hashAuthorization.js'\nimport type { Hex, Signature } from '../../types/misc.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type SignErrorType,\n type SignParameters,\n type SignReturnType,\n sign,\n} from './sign.js'\n\ntype To = 'object' | 'bytes' | 'hex'\n\nexport type SignAuthorizationParameters<to extends To = 'object'> =\n Authorization & {\n /** The private key to sign with. */\n privateKey: Hex\n to?: SignParameters<to>['to'] | undefined\n }\n\nexport type SignAuthorizationReturnType<to extends To = 'object'> = Prettify<\n to extends 'object' ? SignedAuthorization : SignReturnType<to>\n>\n\nexport type SignAuthorizationErrorType =\n | SignErrorType\n | HashAuthorizationErrorType\n | ErrorType\n\n/**\n * Signs an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n */\nexport async function experimental_signAuthorization<to extends To = 'object'>(\n parameters: SignAuthorizationParameters<to>,\n): Promise<SignAuthorizationReturnType<to>> {\n const {\n contractAddress,\n chainId,\n nonce,\n privateKey,\n to = 'object',\n } = parameters\n const signature = await sign({\n hash: hashAuthorization({ contractAddress, chainId, nonce }),\n privateKey,\n to,\n })\n if (to === 'object')\n return {\n contractAddress,\n chainId,\n nonce,\n ...(signature as Signature),\n } as any\n return signature as any\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex, SignableMessage } from '../../types/misc.js'\nimport {\n type HashMessageErrorType,\n hashMessage,\n} from '../../utils/signature/hashMessage.js'\n\nimport { type SignErrorType, sign } from './sign.js'\n\nexport type SignMessageParameters = {\n /** The message to sign. */\n message: SignableMessage\n /** The private key to sign with. */\n privateKey: Hex\n}\n\nexport type SignMessageReturnType = Hex\n\nexport type SignMessageErrorType =\n | SignErrorType\n | HashMessageErrorType\n | ErrorType\n\n/**\n * @description Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191):\n * `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * @returns The signature.\n */\nexport async function signMessage({\n message,\n privateKey,\n}: SignMessageParameters): Promise<SignMessageReturnType> {\n return await sign({ hash: hashMessage(message), privateKey, to: 'hex' })\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type {\n TransactionSerializable,\n TransactionSerialized,\n} from '../../types/transaction.js'\nimport {\n type Keccak256ErrorType,\n keccak256,\n} from '../../utils/hash/keccak256.js'\nimport type { GetTransactionType } from '../../utils/transaction/getTransactionType.js'\nimport {\n type SerializeTransactionFn,\n serializeTransaction,\n} from '../../utils/transaction/serializeTransaction.js'\n\nimport { type SignErrorType, sign } from './sign.js'\n\nexport type SignTransactionParameters<\n serializer extends\n SerializeTransactionFn<TransactionSerializable> = SerializeTransactionFn<TransactionSerializable>,\n transaction extends Parameters<serializer>[0] = Parameters<serializer>[0],\n> = {\n privateKey: Hex\n transaction: transaction\n serializer?: serializer | undefined\n}\n\nexport type SignTransactionReturnType<\n serializer extends\n SerializeTransactionFn<TransactionSerializable> = SerializeTransactionFn<TransactionSerializable>,\n transaction extends Parameters<serializer>[0] = Parameters<serializer>[0],\n> = TransactionSerialized<GetTransactionType<transaction>>\n\nexport type SignTransactionErrorType =\n | Keccak256ErrorType\n | SignErrorType\n | ErrorType\n\nexport async function signTransaction<\n serializer extends\n SerializeTransactionFn<TransactionSerializable> = SerializeTransactionFn<TransactionSerializable>,\n transaction extends Parameters<serializer>[0] = Parameters<serializer>[0],\n>(\n parameters: SignTransactionParameters<serializer, transaction>,\n): Promise<SignTransactionReturnType<serializer, transaction>> {\n const {\n privateKey,\n transaction,\n serializer = serializeTransaction,\n } = parameters\n\n const signableTransaction = (() => {\n // For EIP-4844 Transactions, we want to sign the transaction payload body (tx_payload_body) without the sidecars (ie. without the network wrapper).\n // See: https://github.com/ethereum/EIPs/blob/e00f4daa66bd56e2dbd5f1d36d09fd613811a48b/EIPS/eip-4844.md#networking\n if (transaction.type === 'eip4844')\n return {\n ...transaction,\n sidecars: false,\n }\n return transaction\n })()\n\n const signature = await sign({\n hash: keccak256(serializer(signableTransaction)),\n privateKey,\n })\n return serializer(transaction, signature) as SignTransactionReturnType<\n serializer,\n transaction\n >\n}\n","import type { TypedData } from 'abitype'\n\nimport type { Hex } from '../../types/misc.js'\nimport type { TypedDataDefinition } from '../../types/typedData.js'\nimport {\n type HashTypedDataErrorType,\n hashTypedData,\n} from '../../utils/signature/hashTypedData.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type SignErrorType, sign } from './sign.js'\n\nexport type SignTypedDataParameters<\n typedData extends TypedData | Record<string, unknown> = TypedData,\n primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,\n> = TypedDataDefinition<typedData, primaryType> & {\n /** The private key to sign with. */\n privateKey: Hex\n}\n\nexport type SignTypedDataReturnType = Hex\n\nexport type SignTypedDataErrorType =\n | HashTypedDataErrorType\n | SignErrorType\n | ErrorType\n\n/**\n * @description Signs typed data and calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191):\n * `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * @returns The signature.\n */\nexport async function signTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(\n parameters: SignTypedDataParameters<typedData, primaryType>,\n): Promise<SignTypedDataReturnType> {\n const { privateKey, ...typedData } =\n parameters as unknown as SignTypedDataParameters\n return await sign({\n hash: hashTypedData(typedData),\n privateKey,\n to: 'hex',\n })\n}\n","import { secp256k1 } from '@noble/curves/secp256k1'\n\nimport type { Hex } from '../types/misc.js'\nimport { type ToHexErrorType, toHex } from '../utils/encoding/toHex.js'\n\nimport type { ErrorType } from '../errors/utils.js'\nimport type { NonceManager } from '../utils/nonceManager.js'\nimport { type ToAccountErrorType, toAccount } from './toAccount.js'\nimport type { PrivateKeyAccount } from './types.js'\nimport {\n type PublicKeyToAddressErrorType,\n publicKeyToAddress,\n} from './utils/publicKeyToAddress.js'\nimport { type SignErrorType, sign } from './utils/sign.js'\nimport { experimental_signAuthorization } from './utils/signAuthorization.js'\nimport { type SignMessageErrorType, signMessage } from './utils/signMessage.js'\nimport {\n type SignTransactionErrorType,\n signTransaction,\n} from './utils/signTransaction.js'\nimport {\n type SignTypedDataErrorType,\n signTypedData,\n} from './utils/signTypedData.js'\n\nexport type PrivateKeyToAccountOptions = {\n nonceManager?: NonceManager | undefined\n}\n\nexport type PrivateKeyToAccountErrorType =\n | ToAccountErrorType\n | ToHexErrorType\n | PublicKeyToAddressErrorType\n | SignErrorType\n | SignMessageErrorType\n | SignTransactionErrorType\n | SignTypedDataErrorType\n | ErrorType\n\n/**\n * @description Creates an Account from a private key.\n *\n * @returns A Private Key Account.\n */\nexport function privateKeyToAccount(\n privateKey: Hex,\n options: PrivateKeyToAccountOptions = {},\n): PrivateKeyAccount {\n const { nonceManager } = options\n const publicKey = toHex(secp256k1.getPublicKey(privateKey.slice(2), false))\n const address = publicKeyToAddress(publicKey)\n\n const account = toAccount({\n address,\n nonceManager,\n async sign({ hash }) {\n return sign({ hash, privateKey, to: 'hex' })\n },\n async experimental_signAuthorization(authorization) {\n return experimental_signAuthorization({ ...authorization, privateKey })\n },\n async signMessage({ message }) {\n return signMessage({ message, privateKey })\n },\n async signTransaction(transaction, { serializer } = {}) {\n return signTransaction({ privateKey, transaction, serializer })\n },\n async signTypedData(typedData) {\n return signTypedData({ ...typedData, privateKey } as any)\n },\n })\n\n return {\n ...account,\n publicKey,\n source: 'privateKey',\n } as PrivateKeyAccount\n}\n","import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';\n\nexport const randomTransactionUser = (() => {\n const privateKey = generatePrivateKey();\n const account = privateKeyToAccount(privateKey);\n return {\n privateKey,\n account,\n address: account.address,\n };\n})();\n",null,null,null,"/*\r\n * bignumber.js v7.2.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2018 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative |\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n decimalSeparator: '.',\r\n groupSeparator: ',',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n fractionGroupSize: 0\r\n },\r\n\r\n // The alphabet used for base conversion.\r\n // It must be at least 2 characters long, with no '.' or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * n {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of n. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(n, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof BigNumber)) {\r\n\r\n // Don't throw on constructor call without new (#81).\r\n // '[BigNumber Error] Constructor call without new: {n}'\r\n //throw Error(bignumberError + ' Constructor call without new: ' + n);\r\n return new BigNumber(n, b);\r\n }\r\n\r\n if (b == null) {\r\n\r\n // Duplicate.\r\n if (n instanceof BigNumber) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = (n = n.c) ? n.slice() : n;\r\n return;\r\n }\r\n\r\n isNum = typeof n == 'number';\r\n\r\n if (isNum && n * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / n < 0 ? (n = -n, -1) : 1;\r\n\r\n // Faster path for integers.\r\n if (n === ~~n) {\r\n for (e = 0, i = n; i >= 10; i /= 10, e++);\r\n x.e = e;\r\n x.c = [n];\r\n return;\r\n }\r\n\r\n str = n + '';\r\n } else {\r\n if (!isNumeric.test(str = n + '')) return parseNumeric(x, str, isNum);\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = n + '';\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(n instanceof BigNumber ? n : str);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n isNum = typeof n == 'number';\r\n\r\n if (isNum) {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (n * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / n < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + n);\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, n + '', isNum, b);\r\n }\r\n }\r\n\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n str = str.slice(i, ++len);\r\n\r\n if (str) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (n > MAX_SAFE_INTEGER || n !== mathfloor(n))) {\r\n throw Error\r\n (tooManyDigits + (x.s * n));\r\n }\r\n\r\n e = e - i - 1;\r\n\r\n // Overflow?\r\n if (e > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * decimalSeparator {string}\r\n * groupSeparator {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * fractionGroupSize {number}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (isArray(v)) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (isArray(v)) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if only one character, or contains '.' or a repeated character.\r\n if (typeof v == 'string' && !/^.$|\\.|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * v {any}\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n return v instanceof BigNumber || v && v._isBigNumber === true || false;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0))\r\n : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && ne <= TO_EXP_NEG\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var m, n,\r\n i = 0;\r\n\r\n if (isArray(args[0])) args = args[0];\r\n m = new BigNumber(args[0]);\r\n\r\n for (; ++i < args.length;) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n x.c = x.e = null;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.c = x.e = x.s = null;\r\n }\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + n);\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+x.valueOf(), nIsBig ? 2 - isOdd(n) : +n));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n nIsOdd = isOdd(n);\r\n } else {\r\n nIsOdd = n % 2;\r\n }\r\n\r\n if (nIsNeg) n.s = 1;\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (nIsBig) {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n if (!n.c[0]) break;\r\n nIsBig = n.e > 14;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n n = mathfloor(n / 2);\r\n if (!n) break;\r\n nIsOdd = n % 2;\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c ).slice(0, s) === (n =\r\n coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the FORMAT object (see BigNumber.set).\r\n *\r\n * FORMAT = {\r\n * decimalSeparator : '.',\r\n * groupSeparator : ',',\r\n * groupSize : 3,\r\n * secondaryGroupSize : 0,\r\n * fractionGroupSeparator : '\\xA0', // non-breaking space\r\n * fractionGroupSize : 0\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFormat = function (dp, rm) {\r\n var str = this.toFixed(dp, rm);\r\n\r\n if (this.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +FORMAT.groupSize,\r\n g2 = +FORMAT.secondaryGroupSize,\r\n groupSeparator = FORMAT.groupSeparator,\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = this.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n\r\n for (; i < len; i += g1) {\r\n intPart += groupSeparator + intDigits.substr(i, g1);\r\n }\r\n\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + FORMAT.decimalSeparator + ((g2 = +FORMAT.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + FORMAT.fractionGroupSeparator)\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string array representing the value of this BigNumber as a simple fraction with\r\n * an integer numerator and an integer denominator. The denominator will be a positive\r\n * non-zero value less than or equal to the specified maximum denominator. If a maximum\r\n * denominator is not specified, the denominator will be the lowest value necessary to\r\n * represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var arr, d, d0, d1, d2, e, exp, n, n0, n1, q, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + md);\r\n }\r\n }\r\n\r\n if (!xc) return x.toString();\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e *= 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n arr = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1\r\n ? [n1.toString(), d1.toString()]\r\n : [n0.toString(), d0.toString()];\r\n\r\n MAX_EXP = exp;\r\n return arr;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n str = coeffToString(n.c);\r\n\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(str, e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n var str,\r\n n = this,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== (n < 0 ? mathceil(n) : mathfloor(n))) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + n);\r\n }\r\n}\r\n\r\n\r\nfunction isArray(obj) {\r\n return Object.prototype.toString.call(obj) == '[object Array]';\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORTS\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n",null,null,null,"import crypto from \"crypto\";\nconst PREFIX = \"0x\";\nconst PREFIX_REGEX = /^0[xX]/;\nconst HEX_REGEX = /^(0[xX])?[a-fA-F0-9]+$/;\n\n/**\n * Returns the provied hex string with the hex prefix removed.\n * If the prefix doesn't exist the hex is returned unmodified\n * @param hex - the input hex string\n * @returns the input hex string with the hex prefix removed\n * @throws an error if the input is not a valid hex string\n */\nexport const removePrefix = (hex: string): string => {\n validate(hex);\n return hex.replace(PREFIX_REGEX, \"\");\n};\n\n/**\n * Returns the provided hex string with the hex prefix added.\n * If the prefix already exists the string is returned unmodified.\n * If the string contains an UPPER case `X` in the prefix it will be replaced with a lower case `x`\n * @param hex - the input hex string\n * @returns the input hex string with the hex prefix added\n * @throws an error if the input is not a valid hex string\n */\nexport const addPrefix = (hex: string): string => {\n validate(hex);\n return PREFIX_REGEX.test(hex)\n ? hex.replace(PREFIX_REGEX, PREFIX)\n : `${PREFIX}${hex}`;\n};\n\n/**\n * Validate the hex string. Throws an Error if not valid\n * @param hex - the input hex string\n * @throws an error if the input is not a valid hex string\n */\nexport const validate = (hex: string) => {\n if (!isValid(hex)) throw Error(\"Provided hex value is not valid\");\n};\n\n/**\n * Check if input string is valid\n * @param hex - the input hex string\n * @returns boolean representing whether the input hex is valid\n */\nexport const isValid = (hex?: string | null): boolean => {\n return !!hex && HEX_REGEX.test(hex);\n};\n\nexport const isInvalid = (hex?: string | null): boolean => {\n return !isValid(hex);\n};\n\nexport const normalize = (hex: string): string => {\n return addPrefix(hex.toLowerCase().trim());\n};\n\nexport const compare = (hex1: string, hex2: string): boolean => {\n try {\n return (\n removePrefix(hex1).toLowerCase() ===\n removePrefix(hex2).toLowerCase()\n );\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Generate a random hex string of the defined length\n * @param size - the length of the random hex output\n * @returns a random hex string of length `size`\n */\nexport const generateRandom = (size: number): string => {\n if (size < 1) throw Error(\"Size must be > 0\");\n const randBuffer = crypto.randomBytes(Math.ceil(size / 2));\n if (!randBuffer) throw Error(\"Failed to generate random hex\");\n return `${PREFIX}${randBuffer.toString(\"hex\").substring(0, size)}`;\n};\n","import { address } from \"thor-devkit\";\nimport * as HexUtils from \"./HexUtils\";\n\n/**\n * Checks if two addresses are equal. Returns true if both values are strings AND:\n * - The two values are equal OR\n * - The checksumed addresses are equal\n *\n * @param address1\n * @param address2\n */\nexport const compareAddresses = (\n address1?: string,\n address2?: string\n): boolean => {\n if (!address1 || !address2) return false;\n\n if (address2 === address1) {\n return true;\n }\n\n try {\n return HexUtils.normalize(address1) === HexUtils.normalize(address2);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\n\nexport const compareListOfAddresses = (add1: string[], add2: string[]) => {\n if (add1.length !== add2.length) return false;\n const sortedAdd1 = [...add1]\n .map((e) => e.toLowerCase())\n .sort((a, b) => a.localeCompare(b));\n const sortedAdd2 = [...add2]\n .map((e) => e.toLowerCase())\n .sort((a, b) => a.localeCompare(b));\n\n for (let i = 0; i < sortedAdd1.length; i++) {\n if (!compareAddresses(sortedAdd1[i], sortedAdd2[i])) return false;\n }\n\n return true;\n};\n\nexport const regexPattern = () => {\n return /^0x[a-fA-F0-9]{40}$/;\n};\n\nexport const isValidAddress = (addr: string | undefined | null): boolean => {\n try {\n if (typeof addr !== \"string\") return false;\n address.toChecksumed(HexUtils.addPrefix(addr));\n return true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\n\nexport const leftPadWithZeros = (str: string, length: number): string => {\n // Remove '0x' prefix if it exists\n const cleanStr = str.startsWith(\"0x\") ? str.slice(2) : str;\n if (cleanStr.length > length) {\n throw new Error(\"Input string is longer than the specified length\");\n }\n // Pad the string to the specified length\n const paddedStr = cleanStr.padStart(length, \"0\");\n return `0x${paddedStr}`;\n};\n","'use client';\n\nimport { useState, useEffect } from 'react';\nimport { useConnex } from '@vechain/dapp-kit-react';\n\n/**\n * Poll the chain for a transaction receipt until it is found (or timeout after 5 blocks)\n * @param thor Thor instance\n * @param id Transaction id\n * @param blocksTimeout Number of blocks to wait for the receipt\n * @returns Transaction receipt\n */\nexport const pollForReceipt = async (\n thor: Connex.Thor,\n id?: string,\n blocksTimeout = 5,\n): Promise<Connex.Thor.Transaction.Receipt> => {\n if (!id) throw new Error('No transaction id provided');\n\n const transaction = thor.transaction(id);\n let receipt;\n\n // Query the transaction until it has a receipt\n for (let i = 0; i < blocksTimeout; i++) {\n receipt = await transaction.getReceipt();\n if (receipt) {\n break;\n }\n await thor.ticker().next();\n }\n\n if (!receipt) {\n throw new Error('Transaction receipt not found');\n }\n\n const transactionData = await transaction.get();\n\n if (!transactionData) throw Error('Failed to get TX data');\n\n return receipt;\n};\n\n/**\n * Get the tx receipt of a tx id with a block timeout to wait for the receipt\n * @param txId The tx id to get the receipt\n * @param blockTimeout The block timeout to wait for the receipt\n * @returns The tx receipt\n */\nexport const useTxReceipt = (txId?: string, blockTimeout?: number) => {\n const { thor } = useConnex();\n const [receipt, setReceipt] =\n useState<Connex.Thor.Transaction.Receipt | null>();\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n const fetchReceipt = async () => {\n if (!txId) {\n setReceipt(null);\n return;\n }\n\n setIsLoading(true);\n try {\n const result = await pollForReceipt(thor, txId, blockTimeout);\n setReceipt(result);\n } catch (e) {\n setError(e instanceof Error ? e : new Error('Unknown error'));\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchReceipt();\n }, [txId, blockTimeout, thor]);\n\n return {\n data: receipt,\n error,\n isLoading,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { ABIContract } from '@vechain/sdk-core';\nimport { THOR_CLIENT } from '../../../utils';\nimport { SimpleAccountFactoryABI } from '../../../assets';\n\ninterface SmartAccountAddressResult {\n address: string | undefined;\n}\n\nexport const getSmartAccountAddress = async (\n ownerAddress?: string,\n): Promise<SmartAccountAddressResult> => {\n if (!ownerAddress) {\n return { address: undefined };\n }\n\n const account = await THOR_CLIENT.contracts.executeCall(\n '0xC06Ad8573022e2BE416CA89DA47E8c592971679A',\n ABIContract.ofAbi(SimpleAccountFactoryABI).getFunction(\n 'getAccountAddress',\n ),\n [ownerAddress],\n );\n\n return {\n address: String(account.result.array?.[0]),\n };\n};\n\nexport const getSmartAccountAddressQueryKey = (ownerAddress?: string) => [\n 'VECHAIN_KIT_SMART_ACCOUNT_ADDRESS',\n ownerAddress,\n];\n\n/**\n * Hook to get the smart account address for a given owner address\n * @param ownerAddress The address of the smart account owner\n * @returns The smart account address and loading/error states\n */\nexport const useGetSmartAccountAddress = (ownerAddress?: string) => {\n return useQuery({\n queryKey: getSmartAccountAddressQueryKey(ownerAddress),\n queryFn: () => getSmartAccountAddress(ownerAddress),\n enabled: !!ownerAddress,\n });\n};\n","import { isValidAddress } from '../../utils';\nimport { useQuery } from '@tanstack/react-query';\nimport { useConnex } from '@vechain/dapp-kit-react';\nimport { ethers } from 'ethers';\n\nexport const getAccountBalance = async (\n thor: Connex.Thor,\n address?: string,\n) => {\n if (!address) throw new Error('Address is required');\n const account = await thor.account(address).get();\n\n return {\n balance: ethers.formatEther(account.balance).toString(),\n energy: ethers.formatEther(account.energy).toString(),\n };\n};\nexport const getAccountBalanceQueryKey = (address?: string) => [\n 'VECHAIN_KIT_ACCOUNT_BALANCE',\n address,\n];\n\n/**\n * Get the account balance for the given address\n * @param address The address of the account to get the balance for\n * @returns The account balance\n */\nexport const useAccountBalance = (address?: string) => {\n const { thor } = useConnex();\n return useQuery({\n queryKey: getAccountBalanceQueryKey(address),\n queryFn: () => getAccountBalance(thor, address),\n enabled: !!address && isValidAddress(address),\n refetchInterval: 10000,\n });\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useConnex } from '@vechain/dapp-kit-react';\n// import { networkConfig } from \"@repo/config\";\nimport { IVechainEnergyOracleV1__factory } from '../../../contracts/typechain-types';\nimport { BigNumber } from 'bignumber.js';\nconst OracleInterface = IVechainEnergyOracleV1__factory.createInterface();\n\n// Create an enum or object for supported price feed IDs\nexport const PRICE_FEED_IDS = {\n B3TR: '0x623374722d757364000000000000000000000000000000000000000000000000',\n VET: '0x7665742d75736400000000000000000000000000000000000000000000000000',\n VTHO: '0x7674686f2d757364000000000000000000000000000000000000000000000000',\n} as const;\n\nexport type SupportedToken = keyof typeof PRICE_FEED_IDS;\n\n// Rename and make the function generic\nexport const getTokenUsdPrice = async (\n thor: Connex.Thor,\n token: SupportedToken,\n): Promise<number> => {\n const functionFragment =\n OracleInterface.getFunction('getLatestValue').format('json');\n\n const res = await thor\n .account('0x49eC7192BF804Abc289645ca86F1eD01a6C17713')\n .method(JSON.parse(functionFragment))\n .call(PRICE_FEED_IDS[token]);\n\n if (res.reverted) throw new Error('Reverted');\n\n return new BigNumber(res.decoded[0]).div(1e12).toNumber() as number;\n};\n\nexport const getTokenUsdPriceQueryKey = (token: SupportedToken) => [\n `VECHAIN_KIT_${token}_USD_PRICE`,\n];\n\nexport const useGetTokenUsdPrice = (token: SupportedToken) => {\n const { thor } = useConnex();\n\n return useQuery({\n queryKey: getTokenUsdPriceQueryKey(token),\n queryFn: async () => getTokenUsdPrice(thor, token),\n enabled: !!thor,\n });\n};\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Interface, type ContractRunner } from \"ethers\";\nimport type {\n ERC20,\n ERC20Interface,\n} from \"../../../../../@openzeppelin/contracts/token/ERC20/ERC20\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"allowance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"approver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSender\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ERC20__factory {\n static readonly abi = _abi;\n static createInterface(): ERC20Interface {\n return new Interface(_abi) as ERC20Interface;\n }\n static connect(address: string, runner?: ContractRunner | null): ERC20 {\n return new Contract(address, _abi, runner) as unknown as ERC20;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Interface, type ContractRunner } from \"ethers\";\nimport type {\n IERC20,\n IERC20Interface,\n} from \"../../../../../@openzeppelin/contracts/token/ERC20/IERC20\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class IERC20__factory {\n static readonly abi = _abi;\n static createInterface(): IERC20Interface {\n return new Interface(_abi) as IERC20Interface;\n }\n static connect(address: string, runner?: ContractRunner | null): IERC20 {\n return new Contract(address, _abi, runner) as unknown as IERC20;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Interface, type ContractRunner } from \"ethers\";\nimport type {\n IB3TR,\n IB3TRInterface,\n} from \"../../../../../contracts/deprecated/V1/interfaces/IB3TR\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessControlBadConfirmation\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"neededRole\",\n type: \"bytes32\",\n },\n ],\n name: \"AccessControlUnauthorizedAccount\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"increasedSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"cap\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20ExceededCap\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"allowance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"approver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"cap\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InvalidCap\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSender\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"EnforcedPause\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ExpectedPause\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MINTER_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"cap\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"mint\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"callerConfirmation\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"tokenDetails\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"unpause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class IB3TR__factory {\n static readonly abi = _abi;\n static createInterface(): IB3TRInterface {\n return new Interface(_abi) as IB3TRInterface;\n }\n static connect(address: string, runner?: ContractRunner | null): IB3TR {\n return new Contract(address, _abi, runner) as unknown as IB3TR;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Interface, type ContractRunner } from \"ethers\";\nimport type {\n IVOT3,\n IVOT3Interface,\n} from \"../../../contracts/interfaces/IVOT3\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessControlBadConfirmation\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"neededRole\",\n type: \"bytes32\",\n },\n ],\n name: \"AccessControlUnauthorizedAccount\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"CheckpointUnorderedInsertion\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ECDSAInvalidSignature\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"length\",\n type: \"uint256\",\n },\n ],\n name: \"ECDSAInvalidSignatureLength\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"ECDSAInvalidSignatureS\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"increasedSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"cap\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20ExceededSafeSupply\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"allowance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"approver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSender\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n ],\n name: \"ERC2612ExpiredSignature\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"signer\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"ERC2612InvalidSigner\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"timepoint\",\n type: \"uint256\",\n },\n {\n internalType: \"uint48\",\n name: \"clock\",\n type: \"uint48\",\n },\n ],\n name: \"ERC5805FutureLookup\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ERC6372InconsistentClock\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"EnforcedPause\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ExpectedPause\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"currentNonce\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidAccountNonce\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidShortString\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint8\",\n name: \"bits\",\n type: \"uint8\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"SafeCastOverflowedUintDowncast\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"str\",\n type: \"string\",\n },\n ],\n name: \"StringTooLong\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"expiry\",\n type: \"uint256\",\n },\n ],\n name: \"VotesExpiredSignature\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"delegator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"fromDelegate\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"toDelegate\",\n type: \"address\",\n },\n ],\n name: \"DelegateChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"delegate\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"previousVotes\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newVotes\",\n type: \"uint256\",\n },\n ],\n name: \"DelegateVotesChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [],\n name: \"EIP712DomainChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CLOCK_MODE\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"b3tr\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"pos\",\n type: \"uint32\",\n },\n ],\n name: \"checkpoints\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint48\",\n name: \"_key\",\n type: \"uint48\",\n },\n {\n internalType: \"uint208\",\n name: \"_value\",\n type: \"uint208\",\n },\n ],\n internalType: \"struct Checkpoints.Checkpoint208\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"clock\",\n outputs: [\n {\n internalType: \"uint48\",\n name: \"\",\n type: \"uint48\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"convertToB3TR\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"convertToVOT3\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"convertedB3trOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"delegatee\",\n type: \"address\",\n },\n ],\n name: \"delegate\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"delegatee\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"expiry\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"delegateBySig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"delegates\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"eip712Domain\",\n outputs: [\n {\n internalType: \"bytes1\",\n name: \"fields\",\n type: \"bytes1\",\n },\n {\n internalType: \"string\",\n name: \"name\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"version\",\n type: \"string\",\n },\n {\n internalType: \"uint256\",\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"verifyingContract\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"salt\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"extensions\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"timepoint\",\n type: \"uint256\",\n },\n ],\n name: \"getPastQuadraticVotingPower\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"timepoint\",\n type: \"uint256\",\n },\n ],\n name: \"getPastTotalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"timepoint\",\n type: \"uint256\",\n },\n ],\n name: \"getPastVotes\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"getQuadraticVotingPower\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"getVotes\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"nonces\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"numCheckpoints\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"permit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"callerConfirmation\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"unpause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class IVOT3__factory {\n static readonly abi = _abi;\n static createInterface(): IVOT3Interface {\n return new Interface(_abi) as IVOT3Interface;\n }\n static connect(address: string, runner?: ContractRunner | null): IVOT3 {\n return new Contract(address, _abi, runner) as unknown as IVOT3;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Interface, type ContractRunner } from \"ethers\";\nimport type {\n IVechainEnergyOracleV1,\n IVechainEnergyOracleV1Interface,\n} from \"../../../contracts/interfaces/IVechainEnergyOracleV1\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"id\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"value\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"updatedAt\",\n type: \"uint128\",\n },\n ],\n name: \"ValueUpdate\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"id\",\n type: \"bytes32\",\n },\n ],\n name: \"getLatestValue\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"value\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"updatedAt\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"message\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"extraData\",\n type: \"bytes\",\n },\n {\n internalType: \"address\",\n name: \"signedFor\",\n type: \"address\",\n },\n ],\n name: \"updateValueWithProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class IVechainEnergyOracleV1__factory {\n static readonly abi = _abi;\n static createInterface(): IVechainEnergyOracleV1Interface {\n return new Interface(_abi) as IVechainEnergyOracleV1Interface;\n }\n static connect(\n address: string,\n runner?: ContractRunner | null\n ): IVechainEnergyOracleV1 {\n return new Contract(\n address,\n _abi,\n runner\n ) as unknown as IVechainEnergyOracleV1;\n }\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useConnex } from '@vechain/dapp-kit-react';\n// import { networkConfig } from '@repo/config';\nimport { IB3TR__factory } from '../../../contracts/typechain-types';\n\nconst B3TRInterface = IB3TR__factory.createInterface();\n\nexport const getB3trBalance = async (\n thor: Connex.Thor,\n address?: string,\n): Promise<string> => {\n const functionFragment =\n B3TRInterface.getFunction('balanceOf').format('json');\n\n const res = await thor\n .account('0x5ef79995FE8a89e0812330E4378eB2660ceDe699')\n .method(JSON.parse(functionFragment))\n .call(address);\n\n if (res.reverted) throw new Error('Reverted');\n\n return res.decoded[0];\n};\n\nexport const getB3trBalanceQueryKey = (address?: string) => [\n 'VECHAIN_KIT_B3TR_BALANCE',\n address,\n];\n\nexport const useGetB3trBalance = (address?: string) => {\n const { thor } = useConnex();\n\n return useQuery({\n queryKey: getB3trBalanceQueryKey(address),\n queryFn: async () => getB3trBalance(thor, address),\n enabled: !!thor && !!address,\n });\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useConnex } from '@vechain/dapp-kit-react';\nimport { IVOT3__factory } from '../../../contracts/typechain-types';\n\nconst VOT3Interface = IVOT3__factory.createInterface();\n\nexport const getVot3Balance = async (\n thor: Connex.Thor,\n address?: string,\n): Promise<string> => {\n const functionFragment =\n VOT3Interface.getFunction('balanceOf').format('json');\n\n const res = await thor\n .account('0x76Ca782B59C74d088C7D2Cce2f211BC00836c602')\n .method(JSON.parse(functionFragment))\n .call(address);\n\n if (res.reverted) throw new Error('Reverted');\n\n return res.decoded[0];\n};\n\nexport const getVot3BalanceQueryKey = (address?: string) => [\n 'VECHAIN_KIT_VOT3_BALANCE',\n address,\n];\n\nexport const useGetVot3Balance = (address?: string) => {\n const { thor } = useConnex();\n\n return useQuery({\n queryKey: getVot3BalanceQueryKey(address),\n queryFn: async () => getVot3Balance(thor, address),\n enabled: !!thor && !!address,\n });\n};\n","import { useAccountBalance } from './';\nimport {\n useGetB3trBalance,\n useGetVot3Balance,\n useGetVeDelegateBalance,\n useGetTokenUsdPrice,\n} from './';\nimport { ethers } from 'ethers';\nimport { useWallet } from '../';\n\nexport const useBalances = () => {\n const { selectedAccount } = useWallet();\n const { data: vetData, isLoading: vetLoading } = useAccountBalance(\n selectedAccount?.address,\n );\n const { data: vetUsdPrice, isLoading: vetUsdPriceLoading } =\n useGetTokenUsdPrice('VET');\n const { data: vthoUsdPrice, isLoading: vthoUsdPriceLoading } =\n useGetTokenUsdPrice('VTHO');\n\n const { data: b3trBalance, isLoading: b3trLoading } = useGetB3trBalance(\n selectedAccount?.address,\n );\n const { data: b3trUsdPrice, isLoading: b3trUsdPriceLoading } =\n useGetTokenUsdPrice('B3TR');\n\n const { data: vot3Balance, isLoading: vot3Loading } = useGetVot3Balance(\n selectedAccount?.address,\n );\n\n const { data: veDelegateBalance, isLoading: veDelegateLoading } =\n useGetVeDelegateBalance(selectedAccount?.address);\n\n const isLoading =\n vetLoading ||\n b3trLoading ||\n vot3Loading ||\n vetUsdPriceLoading ||\n b3trUsdPriceLoading ||\n veDelegateLoading ||\n vthoUsdPriceLoading;\n\n const balances = {\n vet: Number(vetData?.balance || 0),\n vtho: Number(vetData?.energy || 0),\n b3tr: Number(ethers.formatEther(b3trBalance || '0')),\n vot3: Number(ethers.formatEther(vot3Balance || '0')),\n veDelegate: Number(ethers.formatEther(veDelegateBalance || '0')),\n };\n\n const prices = {\n vet: vetUsdPrice || 0,\n vtho: vthoUsdPrice || 0,\n b3tr: b3trUsdPrice || 0,\n };\n\n const totalBalance =\n balances.vet * prices.vet +\n balances.b3tr * prices.b3tr +\n balances.vot3 * prices.b3tr +\n balances.vtho * prices.vtho +\n balances.veDelegate * prices.b3tr;\n\n return {\n isLoading,\n balances,\n prices,\n totalBalance,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useConnex } from '@vechain/dapp-kit-react';\n// import { networkConfig } from '@repo/config';\nimport { IERC20__factory } from '../../../contracts/typechain-types';\n\nconst ERC20Interface = IERC20__factory.createInterface();\n\nexport const getVeDelegateBalance = async (\n thor: Connex.Thor,\n address?: string,\n): Promise<string> => {\n const functionFragment =\n ERC20Interface.getFunction('balanceOf').format('json');\n\n const res = await thor\n .account('0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950')\n .method(JSON.parse(functionFragment))\n .call(address);\n\n if (res.reverted) throw new Error('Reverted');\n\n return res.decoded[0];\n};\n\nexport const getVeDelegateBalanceQueryKey = (address?: string) => [\n 'VECHAIN_KIT_VE_DELEGATE_BALANCE',\n address,\n];\n\nexport const useGetVeDelegateBalance = (address?: string) => {\n const { thor } = useConnex();\n\n return useQuery({\n queryKey: getVeDelegateBalanceQueryKey(address),\n queryFn: async () => getVeDelegateBalance(thor, address),\n enabled: !!thor && !!address,\n });\n};\n","import { useQuery } from '@tanstack/react-query';\n\ninterface PrivyAppInfo {\n id: string;\n name: string;\n logo_url: string;\n icon_url: string | null;\n terms_and_conditions_url: string;\n privacy_policy_url: string;\n theme: string;\n accent_color: string;\n wallet_auth: boolean;\n email_auth: boolean;\n google_oauth: boolean;\n twitter_oauth: boolean;\n // Add other fields as needed\n}\n\nexport const fetchPrivyAppInfo = async (\n appId: string,\n): Promise<PrivyAppInfo> => {\n const response = await fetch(`https://auth.privy.io/api/v1/apps/${appId}`, {\n headers: {\n 'privy-app-id': appId,\n },\n });\n\n if (!response.ok) {\n throw new Error('Failed to fetch Privy app info');\n }\n\n return response.json();\n};\n\nexport const getPrivyAppInfoQueryKey = (appIds: string | string[]) => [\n 'VECHAIN_KIT_PRIVY_APP_INFO',\n ...(Array.isArray(appIds) ? appIds : [appIds]),\n];\n\nexport const useFetchAppInfo = (appIds: string | string[]) => {\n const normalizedIds = Array.isArray(appIds) ? appIds : [appIds];\n\n return useQuery({\n queryKey: getPrivyAppInfoQueryKey(appIds),\n queryFn: async () => {\n const results = await Promise.all(\n normalizedIds.map((id) => fetchPrivyAppInfo(id)),\n );\n\n return Object.fromEntries(\n results.map((result, index) => [normalizedIds[index], result]),\n );\n },\n enabled: normalizedIds.length > 0,\n });\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useVechainDomain } from '@vechain/dapp-kit-react';\n\ninterface VeChainDomainResult {\n address?: string;\n domain?: string;\n isValidAddressOrDomain: boolean;\n isLoading: boolean;\n}\n\nexport const getVetDomainQueryKey = (addressOrDomain: string) => [\n 'VECHAIN_KIT_DOMAIN',\n addressOrDomain,\n];\n\nexport const useGetVetDomain = (addressOrDomain: string) => {\n const baseResult = useVechainDomain({ addressOrDomain });\n\n return useQuery<VeChainDomainResult>({\n queryKey: getVetDomainQueryKey(addressOrDomain),\n queryFn: () => baseResult,\n enabled: !!addressOrDomain,\n // Cache the domain for 24 hours\n staleTime: 24 * 60 * 60 * 1000,\n // Keep the data in cache for 24 hours\n gcTime: 24 * 60 * 60 * 1000,\n });\n};\n","import { useVechainDomain } from '@vechain/dapp-kit-react';\n\ninterface VeChainDomainResult {\n address?: string;\n domain?: string;\n isValidAddressOrDomain: boolean;\n isLoading: boolean;\n}\n\ninterface CachedVeChainDomainResult {\n domainResult: VeChainDomainResult;\n getCachedDomain: () => string | null;\n saveCachedDomain: (domain: string) => void;\n}\n\nconst DOMAIN_CACHE_KEY = 'vechainDomainCache';\nconst CACHE_EXPIRY_TIME = 24 * 60 * 60 * 1000; // 24 hours\nexport const useCachedVeChainDomain = (\n address: string,\n): CachedVeChainDomainResult => {\n const domainResult = useVechainDomain({ addressOrDomain: address });\n\n // Try to get from cache first\n const getCachedDomain = (): string | null => {\n const cachedData = localStorage.getItem(DOMAIN_CACHE_KEY);\n if (cachedData) {\n const cachedDomains = JSON.parse(cachedData);\n const cachedDomain = cachedDomains.find(\n (domain: {\n address: string;\n domain: string;\n timestamp: number;\n }) => domain.address === address,\n );\n if (cachedDomain) {\n const currentTime = Date.now();\n if (currentTime - cachedDomain.timestamp < CACHE_EXPIRY_TIME) {\n return cachedDomain.domain;\n }\n }\n }\n return null;\n };\n\n // Save to cache\n const saveCachedDomain = (domain: string) => {\n const cachedData = localStorage.getItem(DOMAIN_CACHE_KEY);\n const cachedDomains = cachedData ? JSON.parse(cachedData) : [];\n const cachedDomain = cachedDomains.find(\n (domain: { address: string; domain: string; timestamp: number }) =>\n domain.address === address,\n );\n if (cachedDomain) {\n cachedDomain.domain = domain;\n cachedDomain.timestamp = Date.now();\n } else {\n cachedDomains.push({ address, domain, timestamp: Date.now() });\n }\n localStorage.setItem(DOMAIN_CACHE_KEY, JSON.stringify(cachedDomains));\n };\n\n return {\n domainResult,\n getCachedDomain,\n saveCachedDomain,\n };\n};\n","import { useDAppKitPrivyConfig } from '@/providers';\nimport { ReactNode } from 'react';\n\nexport const useConnectModal = () => {\n const {\n openConnectModal: open,\n closeConnectModal: close,\n isConnectModalOpen: isOpen,\n } = useDAppKitPrivyConfig();\n return { open, close, isOpen };\n};\n\nexport const ConnectModalProvider = ({ children }: { children: ReactNode }) => (\n <>{children}</>\n);\n","import { useDAppKitPrivyConfig } from '@/providers';\nimport { ReactNode } from 'react';\n\nexport const useAccountModal = () => {\n const {\n openAccountModal: open,\n closeAccountModal: close,\n isAccountModalOpen: isOpen,\n } = useDAppKitPrivyConfig();\n return { open, close, isOpen };\n};\n\nexport const AccountModalProvider = ({ children }: { children: ReactNode }) => (\n <>{children}</>\n);\n","'use client';\n\nimport { useTxReceipt } from '../useTxReceipt';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useConnex } from '@vechain/dapp-kit-react';\nimport { Transaction } from 'thor-devkit';\nimport { useDAppKitPrivyConfig } from '../../providers/DAppKitPrivyProvider';\nimport { useWallet } from '../useWallet';\nimport { useSmartAccount } from '../useSmartAccount';\nimport {\n EnhancedClause,\n TransactionStatus,\n TransactionStatusErrorType,\n} from '../../utils';\n\nconst estimateTxGasWithNext = async (\n clauses: Connex.VM.Clause[],\n caller: string,\n buffer = 1.25,\n nodeUrl: string,\n) => {\n type InspectClausesResponse = {\n data: string;\n gasUsed: number;\n reverted: boolean;\n vmError: string;\n events: Connex.VM.Event[];\n transfers: Connex.VM.Transfer[];\n }[];\n\n // Send tx details to the node to get the gas estimate\n const response = await fetch(`${nodeUrl}/accounts/*?revision=next`, {\n method: 'POST',\n body: JSON.stringify({\n clauses: clauses.map((clause) => ({\n to: clause.to,\n value: clause.value || '0x0',\n data: clause.data,\n })),\n caller,\n }),\n });\n\n if (!response.ok) throw new Error('Failed to estimate gas');\n\n const outputs = (await response.json()) as InspectClausesResponse;\n\n const execGas = outputs.reduce((sum, out) => sum + out.gasUsed, 0);\n\n // Calculate the intrinsic gas (transaction fee) cast is needed as data could be undefined in Connex.Vm.Clause\n const intrinsicGas = Transaction.intrinsicGas(\n clauses as Transaction.Clause[],\n );\n\n // 15000 is the fee for invoking the VM\n // Gas estimate is the sum of intrinsic gas and execution gas\n const gasEstimate = intrinsicGas + (execGas ? execGas + 15000 : 0);\n\n // Add a % buffer to the gas estimate\n return Math.round(gasEstimate * buffer);\n};\n\n/**\n * Props for the {@link useSendTransaction} hook\n * @param signerAccountAddress the signer account to use\n * @param clauses clauses to send in the transaction\n * @param onTxConfirmed callback to run when the tx is confirmed\n * @param onTxFailedOrCancelled callback to run when the tx fails or is cancelled\n * @param suggestedMaxGas the suggested max gas for the transaction\n */\ntype UseSendTransactionProps = {\n signerAccountAddress?: string | null;\n clauses?:\n | EnhancedClause[]\n | (() => EnhancedClause[])\n | (() => Promise<EnhancedClause[]>);\n onTxConfirmed?: () => void | Promise<void>;\n onTxFailedOrCancelled?: () => void | Promise<void>;\n suggestedMaxGas?: number;\n privyUIOptions?: {\n title?: string;\n description?: string;\n buttonText?: string;\n };\n};\n\n/**\n * Return value of the {@link useSendTransaction} hook\n * @param sendTransaction function to trigger the transaction\n * @param isTransactionPending boolean indicating if the transaction is waiting for the wallet to sign it\n * @param txReceipt the transaction receipt\n * @param status the status of the transaction (see {@link TransactionStatus})\n * @param resetStatus function to reset the status to \"ready\"\n * @param error error that occurred while sending the transaction\n */\nexport type UseSendTransactionReturnValue = {\n sendTransaction: (clauses?: EnhancedClause[]) => Promise<void>;\n isTransactionPending: boolean;\n txReceipt: Connex.Thor.Transaction.Receipt | null;\n status: TransactionStatus;\n resetStatus: () => void;\n error?: TransactionStatusErrorType;\n};\n\n/**\n * Generic hook to send a transaction using connex.\n * This hook supports both Privy and VeChain wallets.\n *\n * It returns a function to send the transaction and a status to indicate the state\n * of the transaction (together with the transaction id).\n *\n * @param signerAccount the signer account to use\n * @param clauses clauses to send in the transaction\n * @param onTxConfirmed callback to run when the tx is confirmed\n * @param onTxFailedOrCancelled callback to run when the tx fails or is cancelled\n * @param suggestedMaxGas the suggested max gas for the transaction\n * @param privyUIOptions options to pass to the Privy UI\n * @returns see {@link UseSendTransactionReturnValue}\n */\nexport const useSendTransaction = ({\n signerAccountAddress,\n clauses,\n onTxConfirmed,\n onTxFailedOrCancelled,\n suggestedMaxGas,\n privyUIOptions,\n}: UseSendTransactionProps): UseSendTransactionReturnValue => {\n const { vendor, thor } = useConnex();\n const { dappKitConfig, feeDelegationConfig } = useDAppKitPrivyConfig();\n const nodeUrl = dappKitConfig.nodeUrl;\n\n const { connection } = useWallet();\n const smartAccount = useSmartAccount();\n\n /**\n * Convert the clauses to the format expected by the vendor\n * If the clauses are a function, it will be executed and the result will be used\n * If the clauses are an array, it will be used directly\n * If the wallet is connected with Privy, the clauses will be converted to the format expected by the vendor\n * @param clauses the clauses to convert\n * @returns the converted clauses\n */\n async function convertClauses(\n clauses:\n | EnhancedClause[]\n | (() => EnhancedClause[])\n | (() => Promise<EnhancedClause[]>),\n ) {\n let parsedClauses;\n\n if (typeof clauses === 'function') {\n parsedClauses = await clauses();\n } else {\n parsedClauses = clauses;\n }\n\n if (connection.isConnectedWithPrivy) {\n return parsedClauses.map((clause) => {\n return {\n to: clause.to ?? '',\n value: clause.value,\n data: clause.data ?? '',\n };\n });\n }\n\n return parsedClauses;\n }\n\n /**\n * Send a transaction with the given clauses (in case you need to pass data to build the clauses to mutate directly)\n * If the wallet is connected with Privy, the smart account provider will be used to send the transaction\n * @returns see {@link UseSendTransactionReturnValue}\n */\n const sendTransaction = useCallback(\n async (clauses: EnhancedClause[]) => {\n if (connection.isConnectedWithPrivy) {\n return await smartAccount.sendTransaction({\n txClauses: clauses,\n ...privyUIOptions,\n });\n }\n\n let transaction = vendor.sign('tx', clauses);\n\n if (feeDelegationConfig.delegateAllTransactions) {\n transaction = transaction.delegate(\n feeDelegationConfig.delegatorUrl,\n );\n }\n\n if (signerAccountAddress) {\n let gasLimitNext;\n try {\n gasLimitNext = await estimateTxGasWithNext(\n [...clauses],\n signerAccountAddress,\n undefined,\n nodeUrl,\n );\n } catch (e) {\n console.error('Gas estimation failed', e);\n }\n\n const parsedGasLimit = Math.max(\n gasLimitNext ?? 0,\n suggestedMaxGas ?? 0,\n );\n // specify gasLimit if we have a suggested or an estimation\n if (parsedGasLimit > 0)\n return transaction\n .signer(signerAccountAddress)\n .gas(parseInt(parsedGasLimit.toString()))\n .request();\n else return transaction.signer(signerAccountAddress).request();\n }\n return transaction.request();\n },\n [vendor, signerAccountAddress, suggestedMaxGas, nodeUrl, smartAccount],\n );\n\n /**\n * Adapter to send the transaction with the clauses passed to the hook or the ones passed to the function,\n * and to store the transaction id and the status of the transaction (pending, success, error).\n */\n const [sendTransactionTx, setSendTransactionTx] = useState<string | null>(\n null,\n );\n const [sendTransactionPending, setSendTransactionPending] = useState(false);\n const [sendTransactionError, setSendTransactionError] = useState<\n string | null\n >(null);\n\n const sendTransactionAdapter = useCallback(\n async (_clauses?: EnhancedClause[]): Promise<void> => {\n if (!_clauses && !clauses) throw new Error('clauses are required');\n try {\n setSendTransactionTx(null);\n setSendTransactionPending(true);\n setSendTransactionError(null);\n const response = await sendTransaction(\n await convertClauses(_clauses ?? []),\n );\n // If we send the transaction with the smart account, we get the txid as a string\n if (typeof response === 'string') {\n setSendTransactionTx(response);\n } else if (typeof response === 'object') {\n // If we send the transaction with the vendor, we get the txid from TxResponse\n const responseCopy = response as Connex.Vendor.TxResponse;\n setSendTransactionTx(responseCopy?.txid);\n }\n } catch (error) {\n setSendTransactionError(\n error instanceof Error ? error.message : String(error),\n );\n onTxFailedOrCancelled?.();\n // throw error;\n } finally {\n setSendTransactionPending(false);\n }\n },\n [sendTransaction, clauses, convertClauses],\n );\n\n /**\n * Fetch the transaction receipt once the transaction is broadcasted\n */\n const {\n data: txReceipt,\n isLoading: isTxReceiptLoading,\n error: txReceiptError,\n } = useTxReceipt(sendTransactionTx ?? '');\n\n /**\n * Explain the revert reason of the transaction\n * @param txReceipt the transaction receipt\n * @returns the revert reason\n */\n const explainTxRevertReason = useCallback(\n async (txReceipt: Connex.Thor.Transaction.Receipt) => {\n if (!txReceipt.reverted) return;\n const transactionData = await thor\n .transaction(txReceipt.meta.txID)\n .get();\n if (!transactionData) return;\n\n return await thor\n .explain(transactionData.clauses)\n .caller(transactionData.origin)\n .execute();\n },\n [thor],\n );\n\n /**\n * General error that is set when\n * - unable to send the tx\n * - unable to fetch the receipt\n * - the transaction is reverted\n */\n const [error, setError] = useState<TransactionStatusErrorType>();\n\n /**\n * The status of the transaction\n */\n const status = useMemo(() => {\n if (sendTransactionPending) return 'pending';\n\n if (sendTransactionError) {\n return 'error';\n }\n\n if (sendTransactionTx) {\n if (isTxReceiptLoading) return 'waitingConfirmation';\n if (txReceiptError) {\n return 'error';\n }\n if (txReceipt) {\n if (txReceipt.reverted) {\n return 'error';\n }\n return 'success';\n }\n }\n\n return 'ready';\n }, [\n isTxReceiptLoading,\n sendTransactionError,\n sendTransactionPending,\n sendTransactionTx,\n txReceipt,\n txReceiptError,\n ]);\n\n /**\n * If the transaction is successful or in error, explain the revert reason\n */\n useEffect(() => {\n if (status === 'success' || status === 'error') {\n if (sendTransactionError && !error) {\n setError({\n type: 'UserRejectedError',\n reason: sendTransactionError,\n });\n return;\n }\n\n if (txReceipt?.reverted && !error?.type) {\n (async () => {\n const revertReason = await explainTxRevertReason(txReceipt);\n setError({\n type: 'RevertReasonError',\n reason:\n revertReason?.[0]?.revertReason ??\n 'Transaction reverted',\n });\n })();\n return;\n }\n\n if (txReceipt && !txReceipt.reverted) {\n onTxConfirmed?.();\n }\n }\n }, [\n status,\n txReceipt,\n onTxConfirmed,\n explainTxRevertReason,\n sendTransactionError,\n ]);\n\n /**\n * Reset the status of the transaction\n */\n const resetStatus = useCallback(() => {\n setSendTransactionTx(null);\n setSendTransactionPending(false);\n setSendTransactionError(null);\n setError(undefined);\n }, []);\n\n /**\n * Check if the transaction is pending\n */\n const isTransactionPending = useMemo(() => {\n return (\n sendTransactionPending ||\n isTxReceiptLoading ||\n status === 'pending' ||\n status === 'waitingConfirmation'\n );\n }, [sendTransactionPending, isTxReceiptLoading, status]);\n\n return {\n sendTransaction: sendTransactionAdapter,\n isTransactionPending,\n txReceipt: txReceipt ?? null,\n status,\n resetStatus,\n error,\n };\n};\n","import {\n UseSendTransactionReturnValue,\n useRefreshBalances,\n useSendTransaction,\n} from '@/hooks';\nimport { useCallback } from 'react';\nimport { ERC20__factory } from '@/contracts/typechain-types';\nimport { ethers } from 'ethers';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { isValidAddress } from '@/utils';\n\ntype useTransferERC20Props = {\n fromAddress: string;\n receiverAddress: string;\n amount: string;\n tokenAddress: string;\n tokenName: string;\n onSuccess?: () => void;\n onSuccessMessageTitle?: number;\n};\n\ntype useTransferERC20ReturnValue = {\n sendTransaction: () => Promise<void>;\n} & Omit<UseSendTransactionReturnValue, 'sendTransaction'>;\n\nconst ERC20Interface = ERC20__factory.createInterface();\n\nexport const useTransferERC20 = ({\n fromAddress,\n receiverAddress,\n amount,\n tokenAddress,\n tokenName,\n onSuccess,\n}: useTransferERC20Props): useTransferERC20ReturnValue => {\n const queryClient = useQueryClient();\n const { refresh } = useRefreshBalances();\n\n const buildClauses = useCallback(async () => {\n if (!receiverAddress || !amount || !isValidAddress(receiverAddress))\n throw new Error('Invalid receiver address or amount');\n\n const clausesArray: any[] = [];\n\n clausesArray.push({\n to: tokenAddress,\n value: '0x0',\n data: ERC20Interface.encodeFunctionData('transfer', [\n receiverAddress,\n ethers.parseEther(amount),\n ]),\n comment: `Transfer ${amount} ${tokenName} to ${receiverAddress}`,\n abi: ERC20Interface.getFunction('transfer'),\n });\n\n return clausesArray;\n }, [receiverAddress, amount]);\n\n //Refetch queries to update ui after the tx is confirmed\n const handleOnSuccess = useCallback(async () => {\n await refresh();\n onSuccess?.();\n }, [onSuccess, fromAddress, queryClient]);\n\n const result = useSendTransaction({\n signerAccountAddress: fromAddress,\n privyUIOptions: {\n title: 'Sign to confirm',\n description: `Transfer ${amount} ${tokenName} to ${receiverAddress}`,\n buttonText: 'Sign',\n },\n onTxConfirmed: handleOnSuccess,\n });\n\n return {\n ...result,\n sendTransaction: async () => {\n return result.sendTransaction(await buildClauses());\n },\n };\n};\n","import {\n UseSendTransactionReturnValue,\n useRefreshBalances,\n useSendTransaction,\n} from '@/hooks';\nimport { isValidAddress } from '@/utils';\nimport { ethers } from 'ethers';\nimport { useCallback } from 'react';\n\ntype useTransferVETProps = {\n fromAddress: string;\n receiverAddress: string;\n amount: string;\n onSuccess?: () => void;\n};\n\ntype useTransferVETReturnValue = {\n sendTransaction: () => Promise<void>;\n} & Omit<UseSendTransactionReturnValue, 'sendTransaction'>;\n\nexport const useTransferVET = ({\n fromAddress,\n receiverAddress,\n amount,\n onSuccess,\n}: useTransferVETProps): useTransferVETReturnValue => {\n const { refresh } = useRefreshBalances();\n\n const buildClauses = useCallback(async () => {\n if (!receiverAddress || !amount || !isValidAddress(receiverAddress))\n throw new Error('Invalid receiver address or amount');\n\n // Validate amount is a valid number\n if (isNaN(Number(amount))) {\n throw new Error('Invalid amount');\n }\n\n const clausesArray: any[] = [];\n\n try {\n clausesArray.push({\n to: receiverAddress,\n value: ethers.parseEther(amount).toString(), // Convert to string\n data: '0x',\n comment: `Transfer ${amount} VET to ${receiverAddress}`,\n });\n } catch (error) {\n console.error('Error building clauses:', error);\n throw new Error('Invalid amount format');\n }\n\n return clausesArray;\n }, [receiverAddress, amount]);\n\n const result = useSendTransaction({\n signerAccountAddress: fromAddress,\n privyUIOptions: {\n title: 'Sign to confirm',\n description: `Transfer ${amount} VET to ${receiverAddress}`,\n buttonText: 'Sign',\n },\n onTxConfirmed: async () => {\n await refresh();\n onSuccess?.();\n },\n });\n\n return {\n ...result,\n sendTransaction: async () => {\n return result.sendTransaction(await buildClauses());\n },\n };\n};\n","import { useQueryClient } from '@tanstack/react-query';\nimport { useWallet } from './useWallet';\nimport {\n getAccountBalanceQueryKey,\n getB3trBalanceQueryKey,\n getVot3BalanceQueryKey,\n getVeDelegateBalanceQueryKey,\n getTokenUsdPriceQueryKey,\n} from './api';\n\nexport const useRefreshBalances = () => {\n const queryClient = useQueryClient();\n const { selectedAccount } = useWallet();\n\n const refresh = async () => {\n const address = selectedAccount?.address;\n\n // First invalidate all queries\n await Promise.all([\n queryClient.cancelQueries({\n queryKey: getAccountBalanceQueryKey(address),\n }),\n queryClient.cancelQueries({\n queryKey: getB3trBalanceQueryKey(address),\n }),\n queryClient.cancelQueries({\n queryKey: getVot3BalanceQueryKey(address),\n }),\n queryClient.cancelQueries({\n queryKey: getVeDelegateBalanceQueryKey(address),\n }),\n queryClient.cancelQueries({\n queryKey: getTokenUsdPriceQueryKey('VET'),\n }),\n queryClient.cancelQueries({\n queryKey: getTokenUsdPriceQueryKey('VTHO'),\n }),\n queryClient.cancelQueries({\n queryKey: getTokenUsdPriceQueryKey('B3TR'),\n }),\n ]);\n\n // Then refetch all queries\n await Promise.all([\n queryClient.refetchQueries({\n queryKey: getAccountBalanceQueryKey(address),\n }),\n queryClient.refetchQueries({\n queryKey: getB3trBalanceQueryKey(address),\n }),\n queryClient.refetchQueries({\n queryKey: getVot3BalanceQueryKey(address),\n }),\n queryClient.refetchQueries({\n queryKey: getVeDelegateBalanceQueryKey(address),\n }),\n queryClient.refetchQueries({\n queryKey: getTokenUsdPriceQueryKey('VET'),\n }),\n queryClient.refetchQueries({\n queryKey: getTokenUsdPriceQueryKey('VTHO'),\n }),\n queryClient.refetchQueries({\n queryKey: getTokenUsdPriceQueryKey('B3TR'),\n }),\n ]);\n };\n\n return { refresh };\n};\n","import { ThemeConfig, extendTheme } from '@chakra-ui/react';\nimport { modalTheme } from './modal';\nimport { cardTheme } from './card';\nimport { buttonTheme } from './button';\n\nconst themeConfig: ThemeConfig = {\n // 2. Add your color mode config\n useSystemColorMode: false,\n\n // @ts-ignore\n components: {\n Modal: modalTheme,\n Card: cardTheme,\n Button: buttonTheme,\n },\n};\nexport const Theme = extendTheme(themeConfig);\n","/**\n * Used to define the anatomy/parts of a component in a way that provides\n * a consistent API for `className`, css selector and `theming`.\n */\nexport function anatomy<T extends string = string>(\n name: string,\n map = {} as Record<T, Part>,\n): Anatomy<T> {\n let called = false\n\n /**\n * Prevents user from calling `.parts` multiple times.\n * It should only be called once.\n */\n function assert() {\n if (!called) {\n called = true\n return\n }\n\n throw new Error(\n \"[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?\",\n )\n }\n\n /**\n * Add the core parts of the components\n */\n function parts<V extends string>(...values: V[]) {\n assert()\n for (const part of values) {\n ;(map as any)[part] = toPart(part)\n }\n return anatomy(name, map) as unknown as Omit<Anatomy<V>, \"parts\">\n }\n\n /**\n * Extend the component anatomy to includes new parts\n */\n function extend<U extends string>(...parts: U[]) {\n for (const part of parts) {\n if (part in map) continue\n ;(map as any)[part] = toPart(part)\n }\n return anatomy(name, map) as unknown as Omit<Anatomy<T | U>, \"parts\">\n }\n\n /**\n * Get all selectors for the component anatomy\n */\n function selectors() {\n const value = Object.fromEntries(\n Object.entries(map).map(([key, part]) => [key, (part as any).selector]),\n )\n return value as Record<T, string>\n }\n\n /**\n * Get all classNames for the component anatomy\n */\n function classnames() {\n const value = Object.fromEntries(\n Object.entries(map).map(([key, part]) => [key, (part as any).className]),\n )\n return value as Record<T, string>\n }\n\n /**\n * Creates the part object for the given part\n */\n function toPart(part: string) {\n const el = [\"container\", \"root\"].includes(part ?? \"\")\n ? [name]\n : [name, part]\n const attr = el.filter(Boolean).join(\"__\")\n const className = `chakra-${attr}`\n\n const partObj = {\n className,\n selector: `.${className}`,\n toString: () => part,\n }\n\n return partObj as typeof partObj & string\n }\n\n /**\n * Used to get the derived type of the anatomy\n */\n const __type = {} as T\n\n return {\n parts,\n toPart,\n extend,\n selectors,\n classnames,\n get keys(): T[] {\n return Object.keys(map) as T[]\n },\n __type,\n }\n}\n\ntype Part = {\n className: string\n selector: string\n toString: () => string\n}\n\ntype Anatomy<T extends string> = {\n parts: <V extends string>(...values: V[]) => Omit<Anatomy<V>, \"parts\">\n toPart: (part: string) => Part\n extend: <U extends string>(...parts: U[]) => Omit<Anatomy<T | U>, \"parts\">\n selectors: () => Record<T, string>\n classnames: () => Record<T, string>\n keys: T[]\n __type: T\n}\n","import { anatomy } from \"./anatomy\"\n\n/**\n * **Accordion anatomy**\n * - Root: the root container of the accordion\n * - Container: the accordion item contains the button and panel\n * - Button: the button is the trigger for the panel\n * - Panel: the panel is the content of the accordion item\n * - Icon: the expanded/collapsed icon\n */\nexport const accordionAnatomy = anatomy(\"accordion\")\n .parts(\"root\", \"container\", \"button\", \"panel\")\n .extend(\"icon\")\n\n/**\n * **Alert anatomy**\n * - Title: the alert's title\n * - Description: the alert's description\n * - Icon: the alert's icon\n */\nexport const alertAnatomy = anatomy(\"alert\")\n .parts(\"title\", \"description\", \"container\")\n .extend(\"icon\", \"spinner\")\n\n/**\n * **Avatar anatomy**\n * - Container: the container for the avatar\n * - Label: the avatar initials text\n * - Excess Label: the label or text that represents excess avatar count.\n * Typically used in avatar groups.\n * - Group: the container for the avatar group\n */\nexport const avatarAnatomy = anatomy(\"avatar\")\n .parts(\"label\", \"badge\", \"container\")\n .extend(\"excessLabel\", \"group\")\n\n/**\n * **Breadcrumb anatomy**\n * - Item: the container for a breadcrumb item\n * - Link: the element that represents the breadcrumb link\n * - Container: the container for the breadcrumb items\n * - Separator: the separator between breadcrumb items\n */\nexport const breadcrumbAnatomy = anatomy(\"breadcrumb\")\n .parts(\"link\", \"item\", \"container\")\n .extend(\"separator\")\n\nexport const buttonAnatomy = anatomy(\"button\").parts()\n\nexport const checkboxAnatomy = anatomy(\"checkbox\")\n .parts(\"control\", \"icon\", \"container\")\n .extend(\"label\")\n\nexport const circularProgressAnatomy = anatomy(\"progress\")\n .parts(\"track\", \"filledTrack\")\n .extend(\"label\")\n\nexport const drawerAnatomy = anatomy(\"drawer\")\n .parts(\"overlay\", \"dialogContainer\", \"dialog\")\n .extend(\"header\", \"closeButton\", \"body\", \"footer\")\n\nexport const editableAnatomy = anatomy(\"editable\").parts(\n \"preview\",\n \"input\",\n \"textarea\",\n)\n\nexport const formAnatomy = anatomy(\"form\").parts(\n \"container\",\n \"requiredIndicator\",\n \"helperText\",\n)\n\nexport const formErrorAnatomy = anatomy(\"formError\").parts(\"text\", \"icon\")\n\nexport const inputAnatomy = anatomy(\"input\").parts(\n \"addon\",\n \"field\",\n \"element\",\n \"group\",\n)\n\nexport const listAnatomy = anatomy(\"list\").parts(\"container\", \"item\", \"icon\")\n\nexport const menuAnatomy = anatomy(\"menu\")\n .parts(\"button\", \"list\", \"item\")\n .extend(\"groupTitle\", \"icon\", \"command\", \"divider\")\n\nexport const modalAnatomy = anatomy(\"modal\")\n .parts(\"overlay\", \"dialogContainer\", \"dialog\")\n .extend(\"header\", \"closeButton\", \"body\", \"footer\")\n\nexport const numberInputAnatomy = anatomy(\"numberinput\").parts(\n \"root\",\n \"field\",\n \"stepperGroup\",\n \"stepper\",\n)\n\nexport const pinInputAnatomy = anatomy(\"pininput\").parts(\"field\")\n\nexport const popoverAnatomy = anatomy(\"popover\")\n .parts(\"content\", \"header\", \"body\", \"footer\")\n .extend(\"popper\", \"arrow\", \"closeButton\")\n\nexport const progressAnatomy = anatomy(\"progress\").parts(\n \"label\",\n \"filledTrack\",\n \"track\",\n)\n\nexport const radioAnatomy = anatomy(\"radio\").parts(\n \"container\",\n \"control\",\n \"label\",\n)\n\nexport const selectAnatomy = anatomy(\"select\").parts(\"field\", \"icon\")\n\nexport const sliderAnatomy = anatomy(\"slider\").parts(\n \"container\",\n \"track\",\n \"thumb\",\n \"filledTrack\",\n \"mark\",\n)\n\nexport const statAnatomy = anatomy(\"stat\").parts(\n \"container\",\n \"label\",\n \"helpText\",\n \"number\",\n \"icon\",\n)\n\nexport const switchAnatomy = anatomy(\"switch\").parts(\n \"container\",\n \"track\",\n \"thumb\",\n \"label\",\n)\n\nexport const tableAnatomy = anatomy(\"table\").parts(\n \"table\",\n \"thead\",\n \"tbody\",\n \"tr\",\n \"th\",\n \"td\",\n \"tfoot\",\n \"caption\",\n)\n\nexport const tabsAnatomy = anatomy(\"tabs\").parts(\n \"root\",\n \"tab\",\n \"tablist\",\n \"tabpanel\",\n \"tabpanels\",\n \"indicator\",\n)\n\n/**\n * **Tag anatomy**\n * - Container: the container for the tag\n * - Label: the text content of the tag\n * - closeButton: the close button for the tag\n */\nexport const tagAnatomy = anatomy(\"tag\").parts(\n \"container\",\n \"label\",\n \"closeButton\",\n)\n\nexport const cardAnatomy = anatomy(\"card\").parts(\n \"container\",\n \"header\",\n \"body\",\n \"footer\",\n)\n\nexport const stepperAnatomy = anatomy(\"stepper\").parts(\n \"stepper\",\n \"step\",\n \"title\",\n \"description\",\n \"indicator\",\n \"separator\",\n \"icon\",\n \"number\",\n)\n","import { modalAnatomy as parts } from '@chakra-ui/anatomy';\nimport {\n StyleFunctionProps,\n createMultiStyleConfigHelpers,\n} from '@chakra-ui/react';\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys);\n\nconst variants = {\n base: (props: StyleFunctionProps) =>\n definePartsStyle({\n dialog: {\n scrollbarWidth: 'none',\n overflow: 'scroll',\n overflowX: 'hidden',\n maxHeight: '520px',\n borderRadius: '24px',\n backgroundColor:\n props.colorMode === 'dark' ? '#1f1f1e' : 'white',\n },\n closeButton: {\n borderRadius: '50%',\n },\n }),\n transactionToast: (props: StyleFunctionProps) =>\n definePartsStyle({\n dialog: {\n borderRadius: '15px',\n position: 'fixed',\n bottom: '10px',\n left: '10px',\n mimHeight: '70px',\n minWidth: '300px',\n maxWidth: '400px',\n width: 'fit-content',\n pointerEvents: 'auto',\n boxShadow: '0px 0px 10px 0px rgba(0, 0, 0, 0.1)',\n py: '10px',\n backgroundColor:\n props.colorMode === 'dark' ? '#1f1f1e' : 'white',\n },\n closeButton: {\n borderRadius: '50%',\n width: '25px',\n height: '25px',\n size: '10px',\n },\n }),\n};\n\nexport const modalTheme = defineMultiStyleConfig({\n variants,\n defaultProps: {\n variant: 'base',\n },\n});\n","import { modalAnatomy as parts } from '@chakra-ui/anatomy';\nimport {\n StyleFunctionProps,\n createMultiStyleConfigHelpers,\n} from '@chakra-ui/react';\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys);\n\nconst variants = {\n base: (props: StyleFunctionProps) =>\n definePartsStyle({\n body: {\n borderRadius: '12px',\n backgroundColor:\n props.colorMode === 'dark' ? '#1f1f1e' : 'white',\n border:\n props.colorMode === 'dark'\n ? '1px solid #2d2d2d'\n : '1px solid #eaeaea',\n },\n }),\n};\n\nexport const cardTheme = defineMultiStyleConfig({\n variants,\n defaultProps: {\n variant: 'base', // default is solid\n },\n});\n","import { defineStyle, defineStyleConfig } from '@chakra-ui/react';\n\nconst baseStyle = defineStyle({\n borderRadius: '12px',\n});\n\nconst variants = {\n loginIn: defineStyle(() => ({\n bg: '#f2f2f2',\n color: '#2a2a2a',\n _hover: {\n bg: '#eaeaea',\n },\n _dark: {\n bg: '#1f1f1e',\n color: '#ffffff',\n _hover: {\n bg: '#3c3c39',\n },\n // border: '1px solid #5e5e5e',\n },\n })),\n selector: defineStyle(({ colorMode }) => ({\n bg: 'transparent',\n border: `1px solid ${colorMode === 'dark' ? '#ffffff29' : '#ebebeb'}`,\n _hover: {\n borderColor: colorMode === 'dark' ? '#ffffff50' : '#dedede',\n bg: colorMode === 'dark' ? 'whiteAlpha.50' : 'blackAlpha.50',\n },\n _active: {\n transform: 'scale(0.98)',\n },\n transition: 'all 0.2s',\n })),\n};\n\nexport const buttonTheme = defineStyleConfig({\n baseStyle,\n variants,\n});\n","import React, { ReactNode } from 'react';\nimport {\n QueryClient,\n QueryClientProvider,\n QueryClientContext,\n} from '@tanstack/react-query';\n\n// Singleton instance for internal QueryClient\nlet internalQueryClient: QueryClient | null = null;\n\n// Function to safely get the QueryClient\nfunction getOrCreateQueryClient(): QueryClient {\n if (!internalQueryClient) {\n internalQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: 1, // Customize defaults if needed\n refetchOnWindowFocus: false,\n },\n },\n });\n }\n return internalQueryClient;\n}\n\n// A wrapper component to ensure a QueryClientProvider exists\ninterface EnsureQueryClientProps {\n children: ReactNode;\n}\n\nexport const EnsureQueryClient = ({ children }: EnsureQueryClientProps) => {\n try {\n // Attempt to use the existing QueryClient context\n const existingQueryClient = React.useContext(QueryClientContext);\n\n if (existingQueryClient) {\n return <>{children}</>;\n }\n } catch (e) {\n // Handle any potential errors\n // eslint-disable-next-line no-console\n console.log(e);\n }\n\n // If no QueryClient exists or there was an error, provide one\n const queryClient = getOrCreateQueryClient();\n return (\n <QueryClientProvider client={queryClient}>\n {children}\n </QueryClientProvider>\n );\n};\n","import { motion } from 'framer-motion';\nimport { ReactNode } from 'react';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const FadeInView = ({ children }: Props) => {\n return (\n <motion.div\n initial={{ opacity: 0 }}\n whileInView={{ opacity: 1 }}\n transition={{ duration: 0.6, easing: [0.17, 0.55, 0.55, 1] }}\n >\n {children}\n </motion.div>\n );\n};\n","import { motion } from 'framer-motion';\nimport React, { ReactNode } from 'react';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const FadeInViewFromBottom = ({ children }: Props) => {\n return (\n <motion.div\n initial={{ opacity: 1, y: 20 }}\n whileInView={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, easing: [0.17, 0.55, 0.55, 1] }}\n >\n {children}\n </motion.div>\n );\n};\n","import { motion } from 'framer-motion';\nimport React, { ReactNode } from 'react';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const FadeInViewFromLeft = ({ children }: Props) => {\n return (\n <motion.div\n initial={{ opacity: 0, x: -20 }}\n whileInView={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3, easing: [0.17, 0.55, 0.55, 1] }}\n >\n {children}\n </motion.div>\n );\n};\n","import { motion } from 'framer-motion';\nimport React, { ReactNode } from 'react';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const FadeInViewFromRight = ({ children }: Props) => {\n return (\n <motion.div\n initial={{ opacity: 0, x: 20 }}\n whileInView={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3, easing: [0.17, 0.55, 0.55, 1] }}\n >\n {children}\n </motion.div>\n );\n};\n","import { IconButton, IconButtonProps } from '@chakra-ui/react';\nimport { IoChevronBack } from 'react-icons/io5';\n\ntype BackButtonProps = {\n onClick: () => void;\n} & Partial<IconButtonProps>;\n\nexport const ModalBackButton = ({ onClick, ...props }: BackButtonProps) => {\n return (\n <IconButton\n aria-label=\"Back\"\n icon={<IoChevronBack fontSize={'20px'} />}\n size=\"sm\"\n variant=\"ghost\"\n position=\"absolute\"\n borderRadius={'50%'}\n left=\"10px\"\n top=\"10px\"\n onClick={onClick}\n {...props}\n />\n );\n};\n","'use client';\n\nimport { Text, VStack, Icon, HStack } from '@chakra-ui/react';\nimport { useState } from 'react';\nimport { IoCopyOutline, IoCheckmarkOutline } from 'react-icons/io5';\nimport { humanAddress } from '../../utils';\nimport { Wallet } from '../../hooks';\n\ntype Props = {\n wallet: Wallet;\n label?: string;\n size?: string;\n};\n\nexport const AddressDisplay = ({ wallet, label, size = 'lg' }: Props) => {\n const [copied, setCopied] = useState(false);\n const [copiedDomain, setCopiedDomain] = useState(false);\n\n const copyToClipboard = async (\n textToCopy: string,\n setCopied: (value: boolean) => void,\n ) => {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setTimeout(() => {\n setCopied(false);\n }, 2000);\n };\n\n return (\n <VStack w={'full'} justifyContent={'center'}>\n <VStack>\n {label && (\n <Text fontSize={'sm'} opacity={0.7}>\n {label}\n </Text>\n )}\n {wallet.domain ? (\n <VStack>\n <HStack>\n <Text fontSize={size} fontWeight={'500'}>\n {wallet.domain}\n </Text>\n <Icon\n boxSize={4}\n aria-label=\"Copy Domain\"\n as={\n copiedDomain\n ? IoCheckmarkOutline\n : IoCopyOutline\n }\n cursor=\"pointer\"\n onClick={() =>\n copyToClipboard(\n wallet.domain || '',\n setCopiedDomain,\n )\n }\n />\n </HStack>\n <HStack>\n <Text fontSize={'sm'}>\n {'('}\n {humanAddress(wallet.address, 8, 7)}\n {')'}\n </Text>\n <Icon\n boxSize={3}\n aria-label=\"Copy Address\"\n as={copied ? IoCheckmarkOutline : IoCopyOutline}\n cursor=\"pointer\"\n onClick={() =>\n copyToClipboard(wallet.address, setCopied)\n }\n />\n </HStack>\n </VStack>\n ) : (\n <HStack>\n <Text fontSize={size}>\n {humanAddress(wallet.address, 6, 4)}\n </Text>\n <Icon\n boxSize={3}\n aria-label=\"Copy Address\"\n as={copied ? IoCheckmarkOutline : IoCopyOutline}\n cursor=\"pointer\"\n onClick={() =>\n copyToClipboard(wallet.address, setCopied)\n }\n />\n </HStack>\n )}\n </VStack>\n </VStack>\n );\n};\n","import { HStack, Link, StackProps, useColorMode } from '@chakra-ui/react';\nimport { VechainLogoHorizontal } from '../../assets';\nimport packageJson from '../../../package.json';\n\ntype Props = {} & Omit<StackProps, 'dangerouslySetInnerHTML'>;\n\nexport const VersionFooter = ({ ...props }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n return (\n <HStack\n w={'full'}\n justifyContent={'center'}\n alignItems={'center'}\n spacing={0}\n {...props}\n >\n <VechainLogoHorizontal isDark={isDark} w={'69px'} opacity={0.4} />\n <Link\n fontSize={'11px'}\n fontWeight={'800'}\n opacity={0.4}\n textAlign={'left'}\n href={`https://github.com/vechain/vechain-kit/releases/tag/${packageJson.version}`}\n isExternal\n >\n v{packageJson.version}\n </Link>\n </HStack>\n );\n};\n","{\n \"name\": \"@vechain/vechain-kit\",\n \"version\": \"0.8.0\",\n \"private\": false,\n \"homepage\": \"https://github.com/vechain/vechain-kit\",\n \"repository\": \"github:vechain/vechain-kit\",\n \"license\": \"MIT\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"package.json\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"watch\": \"tsup --watch\",\n \"clean\": \"rm -rf dist .turbo\",\n \"lint\": \"eslint\",\n \"purge\": \"yarn clean && rm -rf node_modules\"\n },\n \"dependencies\": {\n \"@chakra-ui/react\": \"^2.8.2\",\n \"@choc-ui/chakra-autocomplete\": \"^5.3.0\",\n \"@privy-io/react-auth\": \"1.99.1\",\n \"@tanstack/react-query\": \"^5.63.0\",\n \"@vechain/dapp-kit-react\": \"1.3.0\",\n \"@vechain/picasso\": \"^2.1.1\",\n \"@vechain/sdk-core\": \"^1.0.0-rc.5\",\n \"@vechain/sdk-network\": \"^1.0.0-rc.5\",\n \"@vechain/vebetterdao-contracts\": \"^4.1.0\",\n \"ethers\": \"^6.13.5\",\n \"framer-motion\": \"^11.15.0\",\n \"net\": \"^1.0.2\",\n \"react-icons\": \"^5.4.0\",\n \"react-qrcode-logo\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^18.2.28\",\n \"@types/react-dom\": \"^18.2.13\",\n \"eslint\": \"^9.12.0\",\n \"react\": \"^18.2.0\",\n \"tsup\": \"*\",\n \"typescript\": \"*\",\n \"vite\": \"^4.5.5\",\n \"vitest\": \"^0.34.6\"\n }\n}","import { Box, useColorMode } from '@chakra-ui/react';\nimport { useEffect, useState, useRef } from 'react';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const StickyHeaderContainer = ({ children }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n const [hasContentBelow, setHasContentBelow] = useState(false);\n const observerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n setHasContentBelow(!entry.isIntersecting);\n },\n { threshold: 0 },\n );\n\n if (observerRef.current) {\n observer.observe(observerRef.current);\n }\n\n return () => observer.disconnect();\n }, []);\n\n return (\n <>\n <Box\n position={'sticky'}\n top={'0'}\n left={'0'}\n w={'full'}\n borderRadius={'24px 24px 0px 0px'}\n bg={isDark ? '#1f1f1e' : 'white'}\n zIndex={1000}\n boxShadow={\n hasContentBelow\n ? '0px 2px 13px -1px rgb(0 0 0 / 68%)'\n : 'none'\n }\n transition=\"box-shadow 0.2s ease-in-out\"\n >\n {children}\n </Box>\n <div\n ref={observerRef}\n style={{ position: 'absolute', top: '25px' }}\n />\n </>\n );\n};\n","import { Box, useColorMode } from '@chakra-ui/react';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const StickyFooterContainer = ({ children }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n return (\n <Box\n position=\"sticky\"\n bottom=\"0\"\n left=\"0\"\n right=\"0\"\n bg={isDark ? '#1f1f1e' : 'white'}\n zIndex=\"1000\"\n p={4}\n boxShadow={'0px -1px 6px -3px rgb(0 0 0 / 56%)'}\n transition=\"box-shadow 0.2s ease-in-out\"\n >\n {children}\n </Box>\n );\n};\n","import {\n Button,\n Icon,\n Image,\n ModalBody,\n ModalCloseButton,\n ModalFooter,\n ModalHeader,\n Spinner,\n Text,\n VStack,\n useColorMode,\n} from '@chakra-ui/react';\nimport { useCrossAppAccounts } from '@privy-io/react-auth';\nimport { FadeInViewFromBottom, ModalBackButton } from '@/components/common';\nimport { ConnectModalContents } from '../ConnectModal';\nimport { useDAppKitPrivyConfig } from '@/providers';\nimport { useFetchAppInfo } from '@/hooks';\nimport { GiSolarSystem } from 'react-icons/gi';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<ConnectModalContents>\n >;\n onClose: () => void;\n};\n\nexport const EcosystemContent = ({ setCurrentContent, onClose }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const { loginWithCrossAppAccount } = useCrossAppAccounts();\n\n const connectWithVebetterDaoApps = async (appId: string) => {\n await loginWithCrossAppAccount({ appId });\n onClose();\n };\n\n const { privyConfig } = useDAppKitPrivyConfig();\n const { data: appsInfo, isLoading } = useFetchAppInfo(\n privyConfig?.ecosystemAppsID || [],\n );\n\n // useEffect(() => {\n // if (\n // connection.source.type === 'privy-cross-app' &&\n // crossAppLogin &&\n // authenticated\n // ) {\n // linkCrossAppAccount({\n // appId: `${privyConfig?.ecosystemAppsID?.[0]}`,\n // });\n // }\n // }, [connection.source.type, crossAppLogin, authenticated]);\n\n return (\n <FadeInViewFromBottom>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n justifyContent={'center'}\n alignItems={'center'}\n display={'flex'}\n gap={2}\n >\n <Icon as={GiSolarSystem} size={'20px'} />\n Ecosystem\n </ModalHeader>\n\n <ModalBackButton onClick={() => setCurrentContent('main')} />\n <ModalCloseButton />\n <ModalBody>\n {isLoading && (\n <VStack minH={'200px'} w={'full'} justifyContent={'center'}>\n <Spinner />\n </VStack>\n )}\n\n {!isLoading && appsInfo && (\n <VStack spacing={4} w={'full'} pb={6}>\n {Object.entries(appsInfo).map(([appId, appInfo]) => (\n <Button\n key={appId}\n fontSize={'14px'}\n fontWeight={'400'}\n backgroundColor={\n isDark ? 'transparent' : '#ffffff'\n }\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n p={6}\n borderRadius={16}\n w={'full'}\n onClick={() =>\n connectWithVebetterDaoApps(appId)\n }\n >\n <Image\n src={appInfo.logo_url}\n alt={appInfo.name}\n w={'30px'}\n />\n <Text ml={5}>{appInfo.name}</Text>\n </Button>\n ))}\n </VStack>\n )}\n\n {!isLoading && !appsInfo && (\n <Text>\n No application from VeChain ecosystem is available to\n login.\n </Text>\n )}\n </ModalBody>\n <ModalFooter></ModalFooter>\n </FadeInViewFromBottom>\n );\n};\n","import { Button, Icon, Text } from '@chakra-ui/react';\nimport { IconType } from 'react-icons';\nimport { ReactElement } from 'react';\n\ninterface ConnectionButtonProps {\n isDark: boolean;\n onClick: () => void;\n text?: string;\n leftIcon?: ReactElement;\n icon?: IconType;\n}\n\nexport const ConnectionButton = ({\n isDark,\n onClick,\n leftIcon,\n text,\n icon,\n}: ConnectionButtonProps) => {\n if (!text && icon) {\n return (\n <Button\n variant={'loginIn'}\n fontSize={'14px'}\n fontWeight={'400'}\n backgroundColor={isDark ? 'transparent' : '#ffffff'}\n border={`1px solid ${isDark ? '#ffffff0a' : '#ebebeb'}`}\n p={6}\n borderRadius={16}\n w={'full'}\n onClick={onClick}\n >\n <Icon as={icon} w={'20px'} h={'20px'} />\n </Button>\n );\n }\n\n if (leftIcon) {\n return (\n <Button\n variant={'loginIn'}\n fontSize={'14px'}\n fontWeight={'400'}\n backgroundColor={isDark ? 'transparent' : '#ffffff'}\n border={`1px solid ${isDark ? '#ffffff0a' : '#ebebeb'}`}\n p={6}\n borderRadius={16}\n w={'full'}\n onClick={onClick}\n leftIcon={leftIcon}\n >\n {text && <Text>{text}</Text>}\n </Button>\n );\n }\n\n return null;\n};\n","import {\n Button,\n Icon,\n Input,\n InputGroup,\n InputLeftElement,\n useColorMode,\n useDisclosure,\n VStack,\n} from '@chakra-ui/react';\nimport { useLoginWithEmail } from '@privy-io/react-auth';\nimport { useState } from 'react';\nimport { MdEmail } from 'react-icons/md';\nimport { EmailCodeVerificationModal } from '../../EmailCodeVerificationModal/EmailCodeVerificationModal';\n\nexport const EmailLoginButton = () => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n // Email login\n const [email, setEmail] = useState('');\n\n const { sendCode, state: emailState } = useLoginWithEmail({});\n\n const emailCodeVerificationModal = useDisclosure();\n\n const handleSendCode = async () => {\n await sendCode({ email });\n // onClose();\n emailCodeVerificationModal.onOpen();\n };\n\n return (\n <>\n <VStack spacing={3} w=\"full\">\n <InputGroup size=\"lg\" w=\"full\">\n <InputLeftElement pointerEvents=\"none\" height=\"100%\" pl={4}>\n <Icon\n as={MdEmail}\n color={isDark ? 'whiteAlpha.600' : 'gray.400'}\n w={'20px'}\n h={'20px'}\n />\n </InputLeftElement>\n <Input\n placeholder=\"your@email.com\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n variant={'loginIn'}\n fontSize={'14px'}\n fontWeight={'400'}\n backgroundColor={isDark ? 'transparent' : '#ffffff'}\n border={`1px solid ${isDark ? '#ffffff0a' : '#ebebeb'}`}\n p={6}\n borderRadius={16}\n w={'full'}\n pl={12}\n />\n <Button\n aria-label=\"Send code\"\n position=\"absolute\"\n right={2}\n top=\"50%\"\n transform=\"translateY(-50%)\"\n zIndex={2}\n variant=\"ghost\"\n size=\"sm\"\n px={6}\n borderRadius=\"full\"\n isLoading={emailState.status === 'sending-code'}\n onClick={handleSendCode}\n >\n Submit\n </Button>\n </InputGroup>\n </VStack>\n\n <EmailCodeVerificationModal\n isOpen={emailCodeVerificationModal.isOpen}\n onClose={emailCodeVerificationModal.onClose}\n onResend={() => sendCode({ email })}\n email={email}\n isLoading={emailState.status === 'sending-code'}\n />\n </>\n );\n};\n","import {\n Button,\n VStack,\n Text,\n HStack,\n PinInput,\n PinInputField,\n Icon,\n useColorMode,\n ModalFooter,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n Container,\n Modal,\n ModalContent,\n ModalOverlay,\n useMediaQuery,\n} from '@chakra-ui/react';\nimport { MdEmail } from 'react-icons/md';\nimport { FadeInViewFromBottom } from '../common';\nimport { useEffect, useState } from 'react';\nimport { useLoginWithEmail } from '@privy-io/react-auth';\n\ntype Props = {\n email: string;\n onResend: () => void;\n isLoading: boolean;\n isOpen: boolean;\n onClose: () => void;\n};\n\nexport const EmailCodeVerificationModal = ({\n email,\n onResend,\n isLoading,\n isOpen,\n onClose,\n}: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const [isDesktop] = useMediaQuery('(min-width: 768px)');\n const [code, setCode] = useState('');\n const [error, setError] = useState<string | null>(null);\n\n const { loginWithCode } = useLoginWithEmail({});\n\n useEffect(() => {\n if (code.length === 6) {\n loginWithCode({ code })\n .then(() => {\n onClose();\n })\n .catch((error) => {\n setError(error.message);\n });\n }\n }, [code]);\n\n return (\n <Modal\n motionPreset={isDesktop ? 'none' : 'slideInBottom'}\n isOpen={isOpen}\n onClose={onClose}\n isCentered\n size={'md'}\n trapFocus={false}\n >\n <ModalOverlay />\n <ModalContent>\n <FadeInViewFromBottom>\n <ModalHeader\n fontSize={'sm'}\n fontWeight={'200'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n justifyContent={'center'}\n alignItems={'center'}\n >\n Enter confirmation code\n </ModalHeader>\n\n {/* <ModalBackButton\n onClick={() => setCurrentContent('main')}\n /> */}\n <ModalCloseButton />\n <Container maxW={'container.lg'}>\n <ModalBody>\n <VStack spacing={2}>\n <Icon\n as={MdEmail}\n w=\"48px\"\n h=\"48px\"\n color={\n isDark ? 'whiteAlpha.700' : 'gray.600'\n }\n />\n\n <Text\n fontSize=\"xs\"\n color={\n isDark ? 'whiteAlpha.700' : 'gray.600'\n }\n textAlign=\"center\"\n >\n Please check {email} for an email from\n privy.io and enter your code below.\n </Text>\n <HStack spacing={2} justify=\"center\" mt={4}>\n <PinInput\n value={code}\n onChange={setCode}\n otp\n size=\"lg\"\n isInvalid={!!error}\n errorBorderColor=\"red.500\"\n >\n <PinInputField\n borderRadius=\"12px\"\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n _hover={{\n border: `1px solid ${\n isDark\n ? '#ffffff40'\n : '#e0e0e0'\n }`,\n }}\n _focus={{\n border: `1px solid ${\n isDark\n ? '#ffffff60'\n : '#d0d0d0'\n }`,\n boxShadow: 'none',\n }}\n backgroundColor={\n isDark\n ? 'transparent'\n : '#ffffff'\n }\n />\n <PinInputField\n borderRadius=\"12px\"\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n _hover={{\n border: `1px solid ${\n isDark\n ? '#ffffff40'\n : '#e0e0e0'\n }`,\n }}\n _focus={{\n border: `1px solid ${\n isDark\n ? '#ffffff60'\n : '#d0d0d0'\n }`,\n boxShadow: 'none',\n }}\n backgroundColor={\n isDark\n ? 'transparent'\n : '#ffffff'\n }\n />\n <PinInputField\n borderRadius=\"12px\"\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n _hover={{\n border: `1px solid ${\n isDark\n ? '#ffffff40'\n : '#e0e0e0'\n }`,\n }}\n _focus={{\n border: `1px solid ${\n isDark\n ? '#ffffff60'\n : '#d0d0d0'\n }`,\n boxShadow: 'none',\n }}\n backgroundColor={\n isDark\n ? 'transparent'\n : '#ffffff'\n }\n />\n <PinInputField\n borderRadius=\"12px\"\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n _hover={{\n border: `1px solid ${\n isDark\n ? '#ffffff40'\n : '#e0e0e0'\n }`,\n }}\n _focus={{\n border: `1px solid ${\n isDark\n ? '#ffffff60'\n : '#d0d0d0'\n }`,\n boxShadow: 'none',\n }}\n backgroundColor={\n isDark\n ? 'transparent'\n : '#ffffff'\n }\n />\n <PinInputField\n borderRadius=\"12px\"\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n _hover={{\n border: `1px solid ${\n isDark\n ? '#ffffff40'\n : '#e0e0e0'\n }`,\n }}\n _focus={{\n border: `1px solid ${\n isDark\n ? '#ffffff60'\n : '#d0d0d0'\n }`,\n boxShadow: 'none',\n }}\n backgroundColor={\n isDark\n ? 'transparent'\n : '#ffffff'\n }\n />\n <PinInputField\n borderRadius=\"12px\"\n border={`1px solid ${\n isDark ? '#ffffff29' : '#ebebeb'\n }`}\n _hover={{\n border: `1px solid ${\n isDark\n ? '#ffffff40'\n : '#e0e0e0'\n }`,\n }}\n _focus={{\n border: `1px solid ${\n isDark\n ? '#ffffff60'\n : '#d0d0d0'\n }`,\n boxShadow: 'none',\n }}\n backgroundColor={\n isDark\n ? 'transparent'\n : '#ffffff'\n }\n />\n </PinInput>\n </HStack>\n {error && (\n <Text color=\"red.500\" fontSize=\"xs\">\n {error}\n </Text>\n )}\n </VStack>\n </ModalBody>\n\n <ModalFooter>\n <Text\n w=\"100%\"\n textAlign=\"center\"\n fontSize=\"14px\"\n color={isDark ? 'whiteAlpha.700' : 'gray.600'}\n >\n Didn't get an email?{' '}\n <Button\n variant=\"link\"\n color=\"blue.500\"\n fontSize=\"14px\"\n onClick={onResend}\n isLoading={isLoading}\n >\n Resend code\n </Button>\n </Text>\n </ModalFooter>\n </Container>\n </FadeInViewFromBottom>\n </ModalContent>\n </Modal>\n );\n};\n","import { Button, HStack, Image, Text, useDisclosure } from '@chakra-ui/react';\nimport { useWallet } from '@/hooks';\nimport { ConnectModal, AccountModal, LoginLoadingModal } from '@/components';\nimport { useDAppKitPrivyConfig } from '@/providers';\nimport { humanAddress } from '@/utils';\nimport { useLoginWithOAuth, usePrivy } from '@privy-io/react-auth';\nimport { useEffect } from 'react';\n\nexport const WalletButton = () => {\n const { connection, selectedAccount } = useWallet();\n const { authenticated, user, createWallet } = usePrivy();\n\n const connectModal = useDisclosure();\n const accountModal = useDisclosure();\n\n const { privyConfig } = useDAppKitPrivyConfig();\n\n const { loading: isLoadingLoginOAuth } = useLoginWithOAuth({});\n\n // If the user authenticates directly with google, we need to wait for success\n // and if it's first time we create an embedded wallet for the user\n useEffect(() => {\n const embeddedWallet = user?.wallet?.address;\n\n const asyncCreateWallet = async () => {\n await createWallet();\n };\n\n if (authenticated && !isLoadingLoginOAuth && !embeddedWallet) {\n try {\n asyncCreateWallet();\n } catch (error) {\n // if user already has an embedded wallet, this will throw an error\n console.error(error);\n }\n }\n }, [authenticated, isLoadingLoginOAuth, user]);\n\n return (\n <>\n {connection.isConnected ? (\n <Button onClick={accountModal.onOpen} p={'9px 12px'}>\n <HStack>\n <Image\n className=\"address-icon mobile\"\n src={selectedAccount.image}\n alt=\"wallet\"\n width={23}\n height={23}\n borderRadius=\"50%\"\n />\n {selectedAccount.domain ? (\n <Text\n fontSize=\"sm\"\n display={{ base: 'none', md: 'block' }}\n >\n {selectedAccount.domain}\n </Text>\n ) : (\n <Text\n fontSize=\"sm\"\n display={{ base: 'none', md: 'block' }}\n >\n {humanAddress(selectedAccount.address, 6, 4)}\n </Text>\n )}\n </HStack>\n </Button>\n ) : (\n <Button onClick={connectModal.onOpen}>Login</Button>\n )}\n\n <ConnectModal\n isOpen={connectModal.isOpen}\n onClose={connectModal.onClose}\n logo={privyConfig.appearance.logo}\n />\n\n <AccountModal\n isOpen={accountModal.isOpen}\n onClose={accountModal.onClose}\n />\n\n <LoginLoadingModal\n isOpen={isLoadingLoginOAuth}\n onClose={() => {}}\n />\n </>\n );\n};\n","import { ReactNode, useMemo } from 'react';\nimport {\n ConfirmationModalContent,\n ErrorModalContent,\n LoadingModalContent,\n SuccessModalContent,\n} from './Contents';\nimport {\n Modal,\n ModalContentProps,\n ModalOverlay,\n useMediaQuery,\n} from '@chakra-ui/react';\nimport { CustomModalContent } from './Contents/CustomModalContent';\n\nexport type TransactionModalProps = {\n isOpen: boolean;\n onClose: () => void;\n status: string;\n pendingTitle?: ReactNode;\n confirmationTitle?: ReactNode;\n errorTitle?: ReactNode;\n errorDescription?: string;\n successTitle?: ReactNode;\n showSocialButtons?: boolean;\n socialDescriptionEncoded?: string;\n showTryAgainButton?: boolean;\n onTryAgain?: () => void;\n showExplorerButton?: boolean;\n txId?: string;\n};\n\nexport const TransactionModal = ({\n isOpen,\n onClose,\n status,\n pendingTitle,\n confirmationTitle,\n errorTitle,\n errorDescription,\n successTitle,\n showSocialButtons = false,\n socialDescriptionEncoded,\n showTryAgainButton,\n onTryAgain,\n showExplorerButton,\n txId,\n}: TransactionModalProps) => {\n const [isDesktop] = useMediaQuery('(min-width: 768px)');\n const _modalContentProps = isDesktop\n ? {}\n : {\n position: 'fixed',\n bottom: '0',\n mb: '0',\n maxW: '2xl',\n borderRadius: '24px 24px 0px 0px',\n };\n\n const modalContent = useMemo(() => {\n if (status === 'pending')\n return <ConfirmationModalContent title={confirmationTitle} />;\n if (status === 'waitingConfirmation')\n return (\n <LoadingModalContent\n title={pendingTitle}\n showExplorerButton={showExplorerButton}\n txId={txId}\n />\n );\n if (status === 'error')\n return (\n <ErrorModalContent\n title={errorTitle}\n description={errorDescription}\n showTryAgainButton={showTryAgainButton}\n onTryAgain={onTryAgain}\n showExplorerButton={showExplorerButton}\n txId={txId}\n />\n );\n if (status === 'success')\n return (\n <SuccessModalContent\n title={successTitle}\n showSocialButtons={showSocialButtons}\n socialDescriptionEncoded={socialDescriptionEncoded}\n showExplorerButton={showExplorerButton}\n txId={txId}\n />\n );\n return null;\n }, [\n status,\n confirmationTitle,\n pendingTitle,\n showExplorerButton,\n txId,\n errorTitle,\n errorDescription,\n showTryAgainButton,\n onTryAgain,\n successTitle,\n showSocialButtons,\n socialDescriptionEncoded,\n ]);\n if (!modalContent) return null;\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n trapFocus={false}\n closeOnOverlayClick={status !== 'pending'}\n isCentered={true}\n size=\"sm\"\n >\n <ModalOverlay />\n <CustomModalContent {...(_modalContentProps as ModalContentProps)}>\n {modalContent}\n </CustomModalContent>\n </Modal>\n );\n};\n","import { Heading, VStack, Text, Spinner } from '@chakra-ui/react';\nimport { ReactNode } from 'react';\nimport { useWallet } from '../../../hooks';\nimport { FadeInViewFromBottom } from '@/components/common';\n\nexport type ConfirmationModalContentProps = {\n title?: ReactNode;\n};\n\nexport const ConfirmationModalContent = ({\n title = 'Waiting for confirmation',\n}: ConfirmationModalContentProps) => {\n const { connection } = useWallet();\n return (\n <FadeInViewFromBottom>\n <VStack align={'center'} p={6} gap={6}>\n <Heading size=\"md\">{title}</Heading>\n\n <Spinner my={10} size=\"xl\" />\n\n <Text fontSize=\"sm\" align={'center'}>\n {connection.isConnectedWithPrivy\n ? 'Please do not close this window, it will take just a few seconds.'\n : 'Please confirm the transaction in your wallet.'}\n </Text>\n </VStack>\n </FadeInViewFromBottom>\n );\n};\n","import { ModalContent, ModalContentProps, Show } from '@chakra-ui/react';\n\nexport const CustomModalContent = ({\n children,\n ...others\n}: ModalContentProps) => {\n return (\n <>\n <Show below=\"sm\">\n <ModalContent\n position=\"fixed\"\n bottom=\"0px\"\n mb=\"0\"\n roundedTop={'20px'}\n roundedBottom=\"0\"\n {...others}\n >\n {children}\n </ModalContent>\n </Show>\n <Show above=\"sm\">\n <ModalContent rounded={'20px'} {...others}>\n {children}\n </ModalContent>\n </Show>\n </>\n );\n};\n","import {\n Heading,\n VStack,\n Text,\n ModalCloseButton,\n Button,\n Link,\n Icon,\n} from '@chakra-ui/react';\nimport { ReactNode } from 'react';\nimport { motion } from 'framer-motion';\nimport { useSmartAccount } from '../../../hooks';\nimport { EXPLORER_URL } from '../../../utils';\nimport { MdOutlineErrorOutline } from 'react-icons/md';\nimport { FadeInViewFromBottom } from '@/components/common';\n\nexport type ErrorModalContentProps = {\n title?: ReactNode;\n description?: string;\n showTryAgainButton?: boolean;\n onTryAgain?: () => void;\n showExplorerButton?: boolean;\n txId?: string;\n};\n\nexport const ErrorModalContent = ({\n title = 'Something went wrong',\n description = 'Something went wrong 😕',\n showTryAgainButton = false,\n onTryAgain = () => {},\n showExplorerButton,\n txId,\n}: ErrorModalContentProps) => {\n const { chainId } = useSmartAccount();\n const explorerUrl = EXPLORER_URL[chainId as keyof typeof EXPLORER_URL];\n\n return (\n <FadeInViewFromBottom>\n <ModalCloseButton top={4} right={4} />\n <VStack align={'center'} p={6} gap={0}>\n <Heading size=\"md\">{title}</Heading>\n <VStack gap={4}>\n <motion.div\n transition={{\n duration: 4,\n ease: 'easeInOut',\n repeat: Infinity,\n }}\n animate={{\n scale: [1, 1.1, 1],\n }}\n >\n <Icon\n as={MdOutlineErrorOutline}\n color={'red'}\n fontSize={'100px'}\n />\n </motion.div>\n {description && <Text size=\"sm\">{description}</Text>}\n {showExplorerButton && txId && (\n <Link\n href={`${explorerUrl}/transactions/${txId}`}\n isExternal\n color=\"gray.500\"\n fontSize={'14px'}\n textDecoration={'underline'}\n >\n {'View it on the explorer'}\n </Link>\n )}\n {showTryAgainButton && (\n <Button variant={'outline'} onClick={onTryAgain}>\n {'Try again'}\n </Button>\n )}\n </VStack>\n </VStack>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Heading,\n Link,\n ModalCloseButton,\n Spinner,\n Text,\n VStack,\n} from '@chakra-ui/react';\nimport { ReactNode } from 'react';\nimport { useSmartAccount } from '../../../hooks';\nimport { EXPLORER_URL } from '../../../utils';\nimport { FadeInViewFromBottom } from '@/components/common';\n\nexport type LoadingModalContentProps = {\n title?: ReactNode;\n showExplorerButton?: boolean;\n txId?: string;\n};\n\nexport const LoadingModalContent = ({\n title = 'Sending Transaction...',\n showExplorerButton,\n txId,\n}: LoadingModalContentProps) => {\n const { chainId } = useSmartAccount();\n const explorerUrl = EXPLORER_URL[chainId as keyof typeof EXPLORER_URL];\n return (\n <FadeInViewFromBottom>\n <ModalCloseButton top={4} right={4} />\n <VStack align={'center'} p={6}>\n <Heading size=\"md\">{title}</Heading>\n <Spinner my={10} size=\"xl\" />\n {showExplorerButton && txId && (\n <Link\n href={`${explorerUrl}/transactions/${txId}`}\n isExternal\n color=\"gray.500\"\n fontSize={'14px'}\n textDecoration={'underline'}\n >\n {'View it on the explorer'}\n </Link>\n )}\n\n {!txId && (\n <Text fontSize=\"sm\" align={'center'}>\n {\n 'This may take a few seconds. You can close this window and check the status later.'\n }\n </Text>\n )}\n </VStack>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Heading,\n Text,\n VStack,\n ModalCloseButton,\n Link,\n Icon,\n} from '@chakra-ui/react';\nimport { ShareButtons } from '../Components/ShareButtons';\nimport { ReactNode } from 'react';\nimport { motion } from 'framer-motion';\nimport { useSmartAccount } from '../../../hooks';\nimport { EXPLORER_URL } from '../../../utils';\nimport { FcCheckmark } from 'react-icons/fc';\nimport { FadeInViewFromBottom } from '@/components/common';\n\nexport type SuccessModalContentProps = {\n title?: ReactNode;\n showSocialButtons?: boolean;\n socialDescriptionEncoded?: string;\n showExplorerButton?: boolean;\n txId?: string;\n};\n\n/**\n * SuccessModalContent is a component that shows a success message with a lottie animation and share buttons\n * @param {SuccessModalContentProps} props - The props of the component\n * @param {string} props.title - The title of the modal\n * @param {boolean} props.showSocialButtons - Whether to show the social media share buttons\n * @param {boolean} props.showExplorerButton - Whether to show the explorer button\n * @param {string} props.txId - The transaction ID to link to the explorer\n * @param {string} props.socialDescriptionEncoded - The encoded description to share on social media\n * @returns {React.ReactElement} The SuccessModalContent component\n */\nexport const SuccessModalContent = ({\n title = 'Transaction completed!',\n showSocialButtons = false,\n showExplorerButton = false,\n txId,\n socialDescriptionEncoded,\n}: SuccessModalContentProps) => {\n const { chainId } = useSmartAccount();\n const explorerUrl = EXPLORER_URL[chainId as keyof typeof EXPLORER_URL];\n\n const socialDescription =\n socialDescriptionEncoded ?? `${explorerUrl}/${txId}`;\n\n return (\n <FadeInViewFromBottom>\n <ModalCloseButton top={4} right={4} />\n <VStack align={'center'} p={6}>\n <Heading size=\"md\">{title}</Heading>\n <motion.div\n transition={{\n duration: 4,\n ease: 'easeInOut',\n repeat: Infinity,\n }}\n animate={{\n scale: [1, 1.1, 1],\n }}\n >\n <Icon as={FcCheckmark} fontSize={'100px'} />\n </motion.div>\n {showExplorerButton && txId && (\n <Link\n href={`${explorerUrl}/${txId}`}\n isExternal\n color=\"gray.500\"\n fontSize={'14px'}\n textDecoration={'underline'}\n >\n {'View it on the explorer'}\n </Link>\n )}\n {showSocialButtons && (\n <VStack>\n <Text fontSize=\"sm\">{'Share your transaction'}</Text>\n <ShareButtons descriptionEncoded={socialDescription} />\n </VStack>\n )}\n </VStack>\n </FadeInViewFromBottom>\n );\n};\n","import { Box, HStack, Link } from '@chakra-ui/react';\nimport { motion } from 'framer-motion';\nimport { FaTelegramPlane } from 'react-icons/fa';\nimport { FaWhatsapp } from 'react-icons/fa6';\nimport { RiTwitterXFill } from 'react-icons/ri';\nimport React from 'react';\n\nconst TWITTER_INJECT = 'https://twitter.com/intent/tweet?text=';\n\nconst WHATSAPP_INJECT = 'https://wa.me/?text=';\n\nconst TELEGRAM_INJECT = 'https://telegram.me/share/url?url=';\n\n// bouncing circle button animation provider\nconst BouncingAnimation = ({ children }: { children: React.ReactNode }) => (\n <motion.div\n whileHover={{ scale: 1.1 }}\n transition={{\n duration: 0.5,\n ease: 'easeInOut',\n repeat: Infinity,\n repeatDelay:\n (crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32) * 5,\n }}\n animate={{\n y: [0, -2, 0],\n rotate: [0, 10, -10, 0],\n }}\n >\n {children}\n </motion.div>\n);\n\ntype Props = {\n descriptionEncoded: string;\n url?: string;\n facebookHashtag?: string;\n};\n\nexport const ShareButtons = ({ descriptionEncoded }: Props) => {\n return (\n <HStack gap={2}>\n <BouncingAnimation>\n <Link\n href={`${TWITTER_INJECT}${descriptionEncoded}`}\n isExternal\n >\n <Box bg={'lightgrey'} p={2} borderRadius={'full'}>\n <RiTwitterXFill size={22} />\n </Box>\n </Link>\n </BouncingAnimation>\n <BouncingAnimation>\n <Link\n href={`${TELEGRAM_INJECT}${descriptionEncoded}`}\n isExternal\n >\n <Box bg={'#30abec'} p={2} borderRadius={'full'}>\n <FaTelegramPlane color=\"white\" size={22} />\n </Box>\n </Link>\n </BouncingAnimation>\n <BouncingAnimation>\n <Link\n href={`${WHATSAPP_INJECT}${descriptionEncoded}`}\n isExternal\n >\n <Box bg={'#01cb37'} p={2} borderRadius={'full'}>\n <FaWhatsapp size={22} color=\"white\" />\n </Box>\n </Link>\n </BouncingAnimation>\n </HStack>\n );\n};\n","import {\n Box,\n VStack,\n Text,\n Link,\n Icon,\n HStack,\n Heading,\n Spinner,\n useColorMode,\n Button,\n} from '@chakra-ui/react';\nimport React, { useMemo } from 'react';\nimport { useSmartAccount } from '../../hooks';\nimport { EXPLORER_URL, TransactionStatusErrorType } from '../../utils';\nimport { FcCheckmark } from 'react-icons/fc';\nimport { IoOpenOutline } from 'react-icons/io5';\nimport { MdOutlineErrorOutline } from 'react-icons/md';\n\nexport type TransactionToastProps = {\n isOpen: boolean;\n onClose: () => void;\n status: string;\n txReceipt: any;\n resetStatus: () => void;\n error?: TransactionStatusErrorType;\n};\n\ntype StatusConfig = {\n icon: React.ReactElement;\n title: string;\n closeDisabled: boolean;\n};\n\nexport const TransactionToast = ({\n isOpen,\n onClose,\n status,\n txReceipt,\n error,\n resetStatus,\n}: TransactionToastProps) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const { chainId } = useSmartAccount();\n const explorerUrl = EXPLORER_URL[chainId as keyof typeof EXPLORER_URL];\n\n const statusConfig: Record<string, StatusConfig> = {\n pending: {\n icon: <Spinner size=\"md\" />,\n title: 'Processing transaction...',\n closeDisabled: true,\n },\n waitingConfirmation: {\n icon: <Spinner size=\"md\" />,\n title: 'Processing transaction...',\n closeDisabled: true,\n },\n error: {\n icon: (\n <Icon\n as={MdOutlineErrorOutline}\n color={'red'}\n fontSize={'40px'}\n />\n ),\n title: 'Transaction failed',\n closeDisabled: false,\n },\n success: {\n icon: <Icon as={FcCheckmark} fontSize={'40px'} />,\n title: 'Transaction successful!',\n closeDisabled: false,\n },\n };\n\n const handleClose = () => {\n onClose();\n resetStatus();\n };\n\n const toastContent = useMemo(() => {\n const config = statusConfig[status];\n if (!config) return null;\n\n return (\n <HStack\n spacing={4}\n w={'full'}\n justifyContent={'flex-start'}\n alignItems={'center'}\n >\n {config.icon}\n\n <VStack w={'full'} align={'flex-start'} spacing={2}>\n <Heading size={'xs'}>{config.title}</Heading>\n\n {error && <Text fontSize={'xs'}>{error.reason}</Text>}\n\n {txReceipt && status !== 'pending' && (\n <Link\n fontSize={'xs'}\n isExternal\n href={`${explorerUrl}/${txReceipt.meta.txID}`}\n >\n View on explorer <Icon as={IoOpenOutline} />\n </Link>\n )}\n </VStack>\n </HStack>\n );\n }, [status, txReceipt, explorerUrl, error]);\n\n if (!toastContent || !isOpen) return null;\n\n return (\n <Box\n position=\"fixed\"\n bottom=\"10\"\n left=\"10\"\n zIndex=\"11111\"\n bg={isDark ? '#1f1f1e' : 'white'}\n borderRadius={'md'}\n p={5}\n boxShadow=\"lg\"\n maxW=\"sm\"\n >\n <HStack justify=\"space-between\" alignItems={'center'} w=\"full\">\n <VStack spacing={4}>{toastContent}</VStack>\n {!statusConfig[status].closeDisabled && (\n <Button\n onClick={handleClose}\n variant=\"ghost\"\n size=\"sm\"\n borderRadius={'full'}\n aria-label=\"Close\"\n ml={5}\n >\n Close\n </Button>\n )}\n </HStack>\n </Box>\n );\n};\n","'use client';\n\nimport {\n Modal,\n ModalContent,\n ModalContentProps,\n ModalOverlay,\n useMediaQuery,\n} from '@chakra-ui/react';\nimport { useWallet } from '@/hooks';\nimport { useState, useEffect } from 'react';\nimport {\n AccountMainContent,\n WalletSettingsContent,\n SmartAccountContent,\n AccountsListContent,\n SendTokenContent,\n SendTokenSummaryContent,\n ReceiveTokenContent,\n} from './Contents';\nimport { AccountModalContentTypes } from './Types/Types';\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n};\n\nexport const AccountModal = ({ isOpen, onClose }: Props) => {\n const [isDesktop] = useMediaQuery('(min-width: 768px)');\n const _modalContentProps = isDesktop\n ? {}\n : {\n position: 'fixed',\n bottom: '0',\n mb: '0',\n maxW: '2xl',\n borderRadius: '24px 24px 0px 0px',\n overflowY: 'scroll',\n overflowX: 'hidden',\n };\n\n const { selectedAccount } = useWallet();\n\n const [currentContent, setCurrentContent] =\n useState<AccountModalContentTypes>('main');\n\n useEffect(() => {\n if (isOpen) {\n setCurrentContent('main');\n }\n }, [isOpen]);\n\n const renderContent = () => {\n if (\n typeof currentContent === 'object' &&\n currentContent.type === 'send-token-summary'\n ) {\n return <SendTokenSummaryContent {...currentContent.props} />;\n }\n\n switch (currentContent) {\n case 'main':\n return (\n <AccountMainContent\n setCurrentContent={setCurrentContent}\n onClose={onClose}\n wallet={selectedAccount}\n />\n );\n case 'settings':\n return (\n <WalletSettingsContent\n setCurrentContent={setCurrentContent}\n onLogoutSuccess={onClose}\n />\n );\n case 'smart-account':\n return (\n <SmartAccountContent\n setCurrentContent={setCurrentContent}\n />\n );\n case 'accounts':\n return (\n <AccountsListContent\n setCurrentContent={setCurrentContent}\n onClose={onClose}\n wallet={selectedAccount}\n />\n );\n case 'send-token':\n return (\n <SendTokenContent\n setCurrentContent={setCurrentContent}\n onSend={() => {}}\n />\n );\n case 'receive-token':\n return (\n <ReceiveTokenContent\n setCurrentContent={setCurrentContent}\n />\n );\n }\n };\n\n return (\n <Modal\n motionPreset=\"slideInBottom\"\n isOpen={isOpen}\n onClose={onClose}\n isCentered\n size=\"md\"\n scrollBehavior=\"inside\"\n returnFocusOnClose={true}\n blockScrollOnMount={false}\n trapFocus={false}\n autoFocus={false}\n closeOnOverlayClick={true}\n >\n <ModalOverlay />\n\n <ModalContent {...(_modalContentProps as ModalContentProps)}>\n {renderContent()}\n </ModalContent>\n </Modal>\n );\n};\n","import {\n Container,\n Image,\n ModalBody,\n ModalCloseButton,\n ModalFooter,\n ModalHeader,\n VStack,\n useColorMode,\n} from '@chakra-ui/react';\nimport { useWallet, Wallet } from '@/hooks';\nimport {\n FadeInViewFromBottom,\n StickyHeaderContainer,\n VersionFooter,\n} from '@/components/common';\nimport { AccountModalContentTypes } from '../../Types';\nimport {\n AccountSelector,\n AssetsSection,\n BalanceSection,\n QuickActionsSection,\n} from '@/components';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n onClose: () => void;\n wallet: Wallet;\n};\n\nexport const AccountMainContent = ({ setCurrentContent, wallet }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const { connection } = useWallet();\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n w={'full'}\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n {'Account'}\n </ModalHeader>\n <ModalCloseButton />\n </StickyHeaderContainer>\n <VStack justify={'center'}>\n <Image\n src={wallet.image}\n w=\"120px\"\n h=\"120px\"\n mt={10}\n mb={5}\n borderRadius=\"full\"\n objectFit=\"cover\"\n />\n </VStack>\n\n <Container maxW={'container.lg'}>\n <ModalBody w={'full'}>\n <VStack w={'full'} spacing={3} overflow={'hidden'}>\n <AccountSelector\n onClick={() => {\n if (connection.isConnectedWithPrivy) {\n setCurrentContent('accounts');\n } else {\n setCurrentContent('settings');\n }\n }}\n wallet={wallet}\n />\n <BalanceSection mb={4} />\n <QuickActionsSection\n setCurrentContent={setCurrentContent}\n />\n <AssetsSection />\n </VStack>\n </ModalBody>\n <ModalFooter>\n <VersionFooter />\n </ModalFooter>\n </Container>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Button,\n Grid,\n HStack,\n ModalBody,\n ModalCloseButton,\n ModalFooter,\n ModalHeader,\n useColorMode,\n} from '@chakra-ui/react';\nimport { useWallet, Wallet } from '@/hooks';\nimport {\n AddressDisplay,\n FadeInViewFromBottom,\n ModalBackButton,\n StickyHeaderContainer,\n} from '@/components/common';\nimport { AccountDetailsButton } from '@/components';\nimport { MdAccountCircle, MdOutlineNavigateNext } from 'react-icons/md';\nimport { AccountModalContentTypes } from '../../Types';\nimport { HiOutlineWallet } from 'react-icons/hi2';\nimport React from 'react';\nimport { RxExit } from 'react-icons/rx';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n onClose: () => void;\n wallet?: Wallet;\n};\n\nexport const AccountsListContent = ({ setCurrentContent, onClose }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const { connection, selectedAccount, connectedWallet, disconnect } =\n useWallet();\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n {'Your accounts'}\n </ModalHeader>\n <ModalBackButton onClick={() => setCurrentContent('main')} />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <ModalBody w={'full'}>\n <HStack justify={'space-between'} w={'full'}>\n {connection.isConnectedWithPrivy ? (\n <Grid\n gap={2}\n templateColumns={['repeat(1, 1fr)']}\n w=\"100%\"\n h=\"100%\"\n >\n <AccountDetailsButton\n title=\"Smart Account\"\n address={selectedAccount.address ?? ''}\n isActive\n onClick={() => {\n setCurrentContent('smart-account');\n }}\n leftIcon={MdAccountCircle}\n rightIcon={MdOutlineNavigateNext}\n />\n <AccountDetailsButton\n title=\"Wallet\"\n address={connectedWallet?.address}\n onClick={() => {\n setCurrentContent('settings');\n }}\n leftIcon={HiOutlineWallet}\n rightIcon={MdOutlineNavigateNext}\n />\n </Grid>\n ) : (\n <AddressDisplay wallet={connectedWallet} />\n )}\n </HStack>\n </ModalBody>\n <ModalFooter>\n <Button\n w={'full'}\n onClick={() => {\n disconnect();\n onClose();\n }}\n minH={'40px'}\n fontSize={'sm'}\n fontWeight={'400'}\n leftIcon={<RxExit color=\"#888888\" />}\n >\n Logout\n </Button>\n </ModalFooter>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Image,\n ModalBody,\n ModalCloseButton,\n VStack,\n ModalFooter,\n ModalHeader,\n Text,\n useColorMode,\n Link,\n Icon,\n} from '@chakra-ui/react';\nimport { usePrivy, useWallet } from '@/hooks';\nimport React, { useState } from 'react';\nimport { IoOpenOutline } from 'react-icons/io5';\nimport {\n AddressDisplay,\n FadeInViewFromBottom,\n ModalBackButton,\n StickyHeaderContainer,\n} from '@/components/common';\nimport { AccountModalContentTypes } from '../../Types';\nimport { getPicassoImage } from '@/utils';\nimport { ActionButton } from '@/components';\nimport { MdOutlineNavigateNext } from 'react-icons/md';\nimport { FaRegAddressCard, FaUserEdit } from 'react-icons/fa';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n};\n\nexport const SmartAccountContent = ({ setCurrentContent }: Props) => {\n const { smartAccount } = useWallet();\n const { exportWallet } = usePrivy();\n\n const walletImage = getPicassoImage(smartAccount.address ?? '');\n\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n {'Smart Account'}\n </ModalHeader>\n\n <ModalBackButton\n onClick={() => setCurrentContent('accounts')}\n />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <ModalBody w={'full'}>\n <VStack justify={'center'} mb={10}>\n <Image src={walletImage} maxW={'70px'} borderRadius=\"50%\" />\n <AddressDisplay wallet={smartAccount} />\n </VStack>\n\n <VStack align=\"stretch\" textAlign={'center'}>\n <Text fontSize={'sm'} opacity={0.5}>\n To allow you a smooth onboarding on VeChain we are\n helping you manage a wallet.\n </Text>\n\n {isExpanded && (\n <FadeInViewFromBottom>\n <VStack>\n <Text fontSize={'sm'} opacity={0.5}>\n You have full control and ownership of this\n wallet, accessible through your selected\n login method.\n </Text>\n\n <Text fontSize={'sm'} opacity={0.5}>\n You can backup your wallet by exporting your\n private key. This will allow you to restore\n your wallet if you lose your login method.\n </Text>\n\n <Text fontSize={'sm'} opacity={0.5}>\n To experience the full blockchain\n experience, transfer your assets to{' '}\n <Link\n href=\"https://www.veworld.net/\"\n isExternal\n color=\"gray.500\"\n fontSize={'14px'}\n textDecoration={'underline'}\n >\n VeWorld Wallet{' '}\n <Icon ml={1} as={IoOpenOutline} />\n </Link>\n .\n </Text>\n </VStack>\n </FadeInViewFromBottom>\n )}\n\n <Link\n onClick={() => setIsExpanded(!isExpanded)}\n color=\"gray.500\"\n fontSize={'sm'}\n transition={'all 0.2s'}\n _hover={{ textDecoration: 'none' }}\n >\n {isExpanded ? 'Read less' : 'Read more'}\n </Link>\n </VStack>\n\n <VStack mt={5} spacing={5}>\n <ActionButton\n title=\"Transfer ownership\"\n description=\"Transfer the ownership of your smart account to another wallet.\"\n onClick={() => {\n exportWallet();\n }}\n leftIcon={FaUserEdit}\n rightIcon={MdOutlineNavigateNext}\n />\n\n <ActionButton\n title=\"Choose account name\"\n description=\"Give a nickname to your wallet to easily identify it.\"\n onClick={() => {\n // linkPasskey();\n }}\n showComingSoon={true}\n leftIcon={FaRegAddressCard}\n rightIcon={MdOutlineNavigateNext}\n />\n </VStack>\n </ModalBody>\n <ModalFooter></ModalFooter>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Image,\n ModalBody,\n ModalCloseButton,\n VStack,\n ModalFooter,\n ModalHeader,\n useColorMode,\n Text,\n Divider,\n} from '@chakra-ui/react';\nimport { usePrivy, useWallet, Wallet } from '@/hooks';\nimport { GiHouseKeys } from 'react-icons/gi';\nimport { MdOutlineNavigateNext } from 'react-icons/md';\nimport { IoIosFingerPrint } from 'react-icons/io';\nimport { ActionButton } from '@/components';\nimport {\n AddressDisplay,\n ModalBackButton,\n StickyHeaderContainer,\n FadeInViewFromBottom,\n} from '@/components/common';\nimport { useDAppKitPrivyConfig } from '@/providers/DAppKitPrivyProvider';\nimport { AccountModalContentTypes } from '../../Types';\nimport { FaRegAddressCard } from 'react-icons/fa';\nimport { RxExit } from 'react-icons/rx';\n\ntype Props = {\n setCurrentContent: (content: AccountModalContentTypes) => void;\n onLogoutSuccess: () => void;\n};\n\nexport const WalletSettingsContent = ({\n setCurrentContent,\n onLogoutSuccess,\n}: Props) => {\n const { exportWallet, linkPasskey } = usePrivy();\n const { privyConfig } = useDAppKitPrivyConfig();\n\n const { wallet, embeddedWallet, connection, crossAppWallet, disconnect } =\n useWallet();\n\n // If connected with Privy, use embedded or cross app wallet, otherwise use the connected wallet\n const account: Wallet = connection.isConnectedWithPrivy\n ? connection.isConnectedWithCrossAppPrivy\n ? crossAppWallet\n : embeddedWallet\n : wallet;\n\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n {'Wallet'}\n </ModalHeader>\n\n <ModalBackButton\n onClick={() => {\n if (connection.isConnectedWithPrivy) {\n setCurrentContent('accounts');\n } else {\n setCurrentContent('main');\n }\n }}\n />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <ModalBody w={'full'}>\n <VStack justify={'center'}>\n <Image\n src={account.image}\n maxW={'70px'}\n borderRadius=\"50%\"\n />\n <AddressDisplay wallet={account} />\n </VStack>\n\n <VStack align=\"stretch\" spacing={5} mt={2}>\n <Text fontSize={'sm'} opacity={0.5} textAlign={'center'}>\n This is your main wallet and identity. Please be sure to\n keep it safe and backed up.\n </Text>\n </VStack>\n\n <VStack mt={5} w={'full'} spacing={5}>\n {connection.isConnectedWithPrivy && (\n <>\n <ActionButton\n title=\"Backup your wallet\"\n description=\"Upgrade wallet in Self-Custody by storing your Recovery Phrase and seamlessly importing it into a wallet provider.\"\n onClick={() => {\n exportWallet();\n }}\n hide={connection.isConnectedWithCrossAppPrivy}\n leftIcon={GiHouseKeys}\n rightIcon={MdOutlineNavigateNext}\n />\n\n {privyConfig.allowPasskeyLinking && (\n <ActionButton\n title=\"Add passkey\"\n description=\"Add a passkey to your account for future logins. If enabled, passkeys will always be available as a login method.\"\n onClick={() => {\n linkPasskey();\n }}\n hide={\n connection.isConnectedWithCrossAppPrivy\n }\n leftIcon={IoIosFingerPrint}\n rightIcon={MdOutlineNavigateNext}\n />\n )}\n </>\n )}\n\n <ActionButton\n title=\"Choose account name\"\n description=\"Give a nickname to your wallet to easily identify it.\"\n onClick={() => {\n // linkPasskey();\n }}\n showComingSoon={true}\n leftIcon={FaRegAddressCard}\n rightIcon={MdOutlineNavigateNext}\n />\n\n <Divider />\n\n <ActionButton\n title=\"Disconnect\"\n description=\"Disconnect and sign out from your wallet and smart account\"\n onClick={() => {\n disconnect();\n onLogoutSuccess();\n }}\n leftIcon={RxExit}\n rightIcon={MdOutlineNavigateNext}\n backgroundColor={'#ff00000f'}\n />\n </VStack>\n </ModalBody>\n <ModalFooter></ModalFooter>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Container,\n ModalBody,\n ModalCloseButton,\n ModalHeader,\n VStack,\n Input,\n Button,\n Text,\n useColorMode,\n InputGroup,\n Box,\n HStack,\n Center,\n Icon,\n ModalFooter,\n Image,\n} from '@chakra-ui/react';\nimport { useState, useCallback } from 'react';\nimport {\n FadeInViewFromBottom,\n ModalBackButton,\n StickyHeaderContainer,\n} from '@/components';\nimport { AccountModalContentTypes } from '../../Types';\nimport { FiArrowDown } from 'react-icons/fi';\nimport { SelectTokenContent } from './SelectTokenContent';\nimport { TOKEN_LOGOS } from '@/utils';\nimport { ZeroAddress } from 'ethers';\nimport { compareAddresses, isValidAddress } from '@/utils';\nimport { useVechainDomain } from '@vechain/dapp-kit-react';\n\nconst compactFormatter = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 2,\n});\n\ntype Token = {\n symbol: string;\n balance: string;\n address: string;\n numericBalance: number;\n price: number;\n};\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n onSend: (address: string, amount: string) => void;\n};\n\nexport const SendTokenContent = ({ setCurrentContent, onSend }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n const [toAddressOrDomain, setToAddress] = useState('');\n const [amount, setAmount] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [isSelectingToken, setIsSelectingToken] = useState(false);\n const [selectedToken, setSelectedToken] = useState<Token | null>(null);\n const [addressError, setAddressError] = useState<string | null>(null);\n\n const {\n domain: resolvedDomain,\n address: resolvedAddress,\n isLoading: isLoadingDomain,\n } = useVechainDomain({ addressOrDomain: toAddressOrDomain });\n\n const validateAddress = useCallback(\n (value: string) => {\n if (!value) {\n setAddressError('Address is required');\n return false;\n }\n\n const isValidReceiver =\n !compareAddresses(\n resolvedAddress ?? ZeroAddress,\n ZeroAddress,\n ) || isValidAddress(value);\n\n if (!isValidReceiver) {\n setAddressError('Invalid address or domain');\n return false;\n }\n\n return true;\n },\n [resolvedAddress],\n );\n\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newAmount = e.target.value;\n\n // Clear any previous errors\n setError(null);\n\n // Only allow numbers and decimals\n if (newAmount && !/^\\d*\\.?\\d*$/.test(newAmount)) {\n return;\n }\n\n setAmount(newAmount);\n\n // Validate against balance if we have a selected token\n if (selectedToken && newAmount) {\n const numericAmount = parseFloat(newAmount);\n if (numericAmount > selectedToken.numericBalance) {\n setError(`Insufficient ${selectedToken.symbol} balance`);\n }\n }\n };\n\n const handleSetMaxAmount = () => {\n if (selectedToken) {\n const maxAmount = selectedToken.numericBalance.toString();\n setAmount(maxAmount);\n // Clear any previous errors since we're setting a valid amount\n setError(null);\n }\n };\n\n const handleSend = () => {\n // Validate address when send is clicked\n const isAddressValid = validateAddress(toAddressOrDomain);\n\n if (!isAddressValid || !selectedToken) {\n return;\n }\n\n // Pass the data as state when changing content\n setCurrentContent({\n type: 'send-token-summary',\n props: {\n toAddressOrDomain,\n resolvedDomain: resolvedDomain,\n resolvedAddress: resolvedAddress,\n amount,\n selectedToken,\n onSend,\n setCurrentContent,\n },\n });\n };\n\n if (isSelectingToken) {\n return (\n <SelectTokenContent\n setCurrentContent={setCurrentContent}\n onSelectToken={(token) => {\n setSelectedToken(token);\n setIsSelectingToken(false);\n }}\n onBack={() => setIsSelectingToken(false)}\n />\n );\n }\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n Send\n </ModalHeader>\n <ModalBackButton onClick={() => setCurrentContent('main')} />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <Container maxW={'container.lg'}>\n <ModalBody>\n <VStack spacing={1} align=\"stretch\" position=\"relative\">\n <Box\n p={6}\n borderRadius=\"xl\"\n bg={isDark ? '#1a1a1a' : 'gray.50'}\n height=\"auto\"\n minHeight=\"100px\"\n >\n <VStack align=\"stretch\" spacing={2}>\n <HStack justify=\"space-between\">\n <Input\n placeholder=\"0\"\n value={amount}\n onChange={handleAmountChange}\n variant=\"unstyled\"\n fontSize=\"4xl\"\n fontWeight=\"bold\"\n border=\"none\"\n _focus={{ border: 'none' }}\n isInvalid={!!error}\n />\n {selectedToken ? (\n <Button\n variant=\"outline\"\n size=\"sm\"\n borderRadius=\"full\"\n px={6}\n color={\n isDark\n ? 'whiteAlpha.700'\n : 'blackAlpha.700'\n }\n borderColor={\n isDark\n ? 'whiteAlpha.700'\n : 'blackAlpha.700'\n }\n _hover={{\n bg: isDark\n ? 'whiteAlpha.800'\n : 'blackAlpha.800',\n color: isDark\n ? 'blackAlpha.700'\n : 'whiteAlpha.700',\n }}\n onClick={() =>\n setIsSelectingToken(true)\n }\n leftIcon={\n <Image\n src={\n TOKEN_LOGOS[\n selectedToken.symbol\n ]\n }\n alt={`${selectedToken.symbol} logo`}\n boxSize=\"20px\"\n borderRadius=\"full\"\n fallback={\n <Box\n boxSize=\"20px\"\n borderRadius=\"full\"\n bg=\"whiteAlpha.200\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text\n fontSize=\"8px\"\n fontWeight=\"bold\"\n >\n {selectedToken.symbol.slice(\n 0,\n 3,\n )}\n </Text>\n </Box>\n }\n />\n }\n >\n {selectedToken.symbol}\n </Button>\n ) : (\n <Button\n variant=\"outline\"\n size=\"sm\"\n borderRadius=\"full\"\n px={6}\n color={\n isDark\n ? 'whiteAlpha.700'\n : 'blackAlpha.700'\n }\n borderColor={\n isDark\n ? 'whiteAlpha.700'\n : 'blackAlpha.700'\n }\n _hover={{\n bg: isDark\n ? 'whiteAlpha.800'\n : 'blackAlpha.800',\n color: isDark\n ? 'blackAlpha.700'\n : 'whiteAlpha.700',\n }}\n onClick={() =>\n setIsSelectingToken(true)\n }\n >\n Select token\n </Button>\n )}\n </HStack>\n {selectedToken && (\n <HStack\n spacing={1}\n fontSize=\"sm\"\n color={\n isDark\n ? 'whiteAlpha.700'\n : 'blackAlpha.700'\n }\n >\n <Text>Balance:</Text>\n <Text\n cursor=\"pointer\"\n _hover={{\n color: isDark\n ? 'blue.300'\n : 'blue.500',\n textDecoration: 'underline',\n }}\n onClick={handleSetMaxAmount}\n noOfLines={1}\n overflow=\"hidden\"\n textOverflow=\"ellipsis\"\n >\n {compactFormatter.format(\n selectedToken.numericBalance,\n )}\n </Text>\n </HStack>\n )}\n {error && (\n <Text color=\"red.500\" fontSize=\"sm\">\n {error}\n </Text>\n )}\n </VStack>\n </Box>\n\n {/* Arrow Icon */}\n <Center\n position=\"relative\"\n marginTop=\"-20px\"\n marginBottom=\"-20px\"\n marginX=\"auto\"\n bg={isDark ? '#262626' : 'gray.100'}\n borderRadius=\"xl\"\n w=\"40px\"\n h=\"40px\"\n zIndex={2}\n >\n <Icon\n as={FiArrowDown}\n boxSize={5}\n opacity={0.5}\n color={isDark ? 'whiteAlpha.700' : 'gray.600'}\n />\n </Center>\n\n {/* Address Input Section */}\n <Box\n borderRadius=\"xl\"\n bg={isDark ? '#1a1a1a' : 'gray.50'}\n height=\"auto\"\n minHeight=\"100px\"\n display=\"flex\"\n alignItems=\"center\"\n >\n <VStack\n align=\"stretch\"\n spacing={2}\n p={6}\n width=\"100%\"\n >\n <InputGroup size=\"lg\">\n <Input\n placeholder=\"Type the receiver address or domain\"\n value={toAddressOrDomain}\n onChange={(e) => {\n setToAddress(e.target.value);\n setAddressError(null);\n }}\n fontSize=\"md\"\n variant=\"unstyled\"\n isInvalid={!!addressError}\n />\n </InputGroup>\n {addressError && (\n <Text color=\"red.500\" fontSize=\"sm\">\n {addressError}\n </Text>\n )}\n </VStack>\n </Box>\n\n <ModalFooter px={0}>\n <Button\n width=\"full\"\n height=\"60px\"\n variant=\"solid\"\n borderRadius=\"xl\"\n colorScheme=\"blue\"\n isDisabled={\n !selectedToken ||\n !amount ||\n !toAddressOrDomain ||\n !!error ||\n !!addressError ||\n isLoadingDomain\n }\n onClick={handleSend}\n >\n {selectedToken ? 'Send' : 'Select Token'}\n </Button>\n </ModalFooter>\n </VStack>\n </ModalBody>\n </Container>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Container,\n ModalBody,\n ModalCloseButton,\n ModalHeader,\n VStack,\n Input,\n Button,\n Text,\n useColorMode,\n InputGroup,\n InputLeftElement,\n HStack,\n Icon,\n Image,\n Box,\n} from '@chakra-ui/react';\nimport { CiSearch } from 'react-icons/ci';\nimport { FiSlash } from 'react-icons/fi';\nimport {\n FadeInViewFromBottom,\n ModalBackButton,\n StickyHeaderContainer,\n} from '../../../common';\nimport { AccountModalContentTypes } from '../../../AccountModal';\nimport { useBalances } from '../../../../hooks';\nimport { TOKEN_LOGOS } from '../../../../utils';\nimport { useState } from 'react';\n\ntype Token = {\n symbol: string;\n balance: string;\n address: string;\n numericBalance: number;\n price: number;\n};\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n onSelectToken: (token: Token) => void;\n onBack: () => void;\n};\n\nconst compactFormatter = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 2,\n});\n\nexport const SelectTokenContent = ({ onSelectToken, onBack }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n const { balances, prices } = useBalances();\n const [searchQuery, setSearchQuery] = useState('');\n\n // Transform balances into tokens array with numeric values\n const tokens: Token[] = [\n {\n symbol: 'VET',\n balance: balances.vet.toString(),\n address: '0x',\n numericBalance: balances.vet,\n price: prices.vet,\n },\n {\n symbol: 'VTHO',\n balance: balances.vtho.toString(),\n address: '0x0000000000000000000000000000456E65726779',\n numericBalance: balances.vtho,\n price: prices.vtho,\n },\n {\n symbol: 'B3TR',\n balance: balances.b3tr.toString(),\n address: '0x5ef79995FE8a89e0812330E4378eB2660ceDe699',\n numericBalance: balances.b3tr,\n price: prices.b3tr,\n },\n {\n symbol: 'VOT3',\n balance: balances.vot3.toString(),\n address: '0x5ef79995FE8a89e0812330E4378eB2660ceDe699',\n numericBalance: balances.vot3,\n price: prices.b3tr,\n },\n {\n symbol: 'veDelegate',\n balance: balances.veDelegate.toString(),\n address: '0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950',\n numericBalance: balances.veDelegate,\n price: prices.b3tr,\n },\n ];\n\n // Filter tokens based on search query\n const filteredTokens = tokens.filter((token) =>\n token.symbol.toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n Select Token\n </ModalHeader>\n <ModalBackButton onClick={onBack} />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <Container maxW={'container.lg'}>\n <ModalBody>\n <VStack spacing={4} align=\"stretch\">\n <InputGroup size=\"lg\">\n <Input\n placeholder=\"Search token\"\n bg={isDark ? '#1a1a1a' : 'gray.50'}\n borderRadius=\"xl\"\n height=\"56px\"\n pl={12}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n <InputLeftElement h=\"56px\" w=\"56px\" pl={4}>\n <CiSearch\n color={\n isDark ? 'whiteAlpha.400' : 'gray.400'\n }\n />\n </InputLeftElement>\n </InputGroup>\n\n <Text\n fontSize=\"lg\"\n fontWeight=\"semibold\"\n color={isDark ? 'whiteAlpha.800' : 'gray.700'}\n mt={4}\n >\n Your tokens\n </Text>\n\n {filteredTokens.length === 0 ? (\n <VStack\n spacing={2}\n py={8}\n color={isDark ? 'whiteAlpha.600' : 'gray.500'}\n >\n <Icon as={FiSlash} boxSize={12} opacity={0.5} />\n <Text fontSize=\"lg\">No tokens found</Text>\n <Text fontSize=\"md\">\n Try searching with a different term\n </Text>\n </VStack>\n ) : (\n <VStack spacing={2} align=\"stretch\">\n {filteredTokens.map((token) => {\n const hasBalance = token.numericBalance > 0;\n const usdValue =\n token.numericBalance * token.price;\n\n return (\n <Button\n key={token.symbol}\n height=\"72px\"\n variant=\"ghost\"\n justifyContent=\"space-between\"\n p={4}\n onClick={() => onSelectToken(token)}\n isDisabled={!hasBalance}\n opacity={hasBalance ? 1 : 0.5}\n _disabled={{\n cursor: 'not-allowed',\n opacity: 0.5,\n }}\n >\n <HStack>\n <Image\n src={\n TOKEN_LOGOS[\n token.symbol\n ]\n }\n alt={`${token.symbol} logo`}\n boxSize=\"24px\"\n borderRadius=\"full\"\n fallback={\n <Box\n boxSize=\"24px\"\n borderRadius=\"full\"\n bg=\"whiteAlpha.200\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text\n fontSize=\"10px\"\n fontWeight=\"bold\"\n >\n {token.symbol.slice(\n 0,\n 3,\n )}\n </Text>\n </Box>\n }\n />\n <Text>{token.symbol}</Text>\n </HStack>\n <VStack\n align=\"flex-end\"\n spacing={0}\n >\n <Text>\n {compactFormatter.format(\n token.numericBalance,\n )}\n </Text>\n <Text\n fontSize=\"sm\"\n color=\"gray.500\"\n >\n $\n {compactFormatter.format(\n usdValue,\n )}\n </Text>\n </VStack>\n </Button>\n );\n })}\n </VStack>\n )}\n </VStack>\n </ModalBody>\n </Container>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Container,\n ModalBody,\n ModalCloseButton,\n ModalHeader,\n VStack,\n Button,\n Text,\n useColorMode,\n Box,\n HStack,\n Image,\n Divider,\n Alert,\n AlertIcon,\n ModalFooter,\n useDisclosure,\n} from '@chakra-ui/react';\nimport {\n FadeInViewFromBottom,\n ModalBackButton,\n StickyHeaderContainer,\n StickyFooterContainer,\n} from '../../../common';\nimport { AccountModalContentTypes } from '../../Types';\nimport { getPicassoImage, humanAddress } from '@/utils';\nimport { useWallet } from '@/hooks';\nimport { useTransferERC20, useTransferVET } from '@/hooks';\nimport { TransactionModal } from '../../../TransactionModal';\n\nconst compactFormatter = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 2,\n});\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n onSend: (address: string, amount: string) => void;\n toAddressOrDomain: string;\n resolvedDomain?: string;\n resolvedAddress?: string;\n amount: string;\n selectedToken: {\n symbol: string;\n balance: string;\n address: string;\n numericBalance: number;\n price: number;\n };\n};\n\nexport const SendTokenSummaryContent = ({\n setCurrentContent,\n toAddressOrDomain,\n resolvedDomain,\n resolvedAddress,\n amount,\n selectedToken,\n}: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n const { selectedAccount, connection } = useWallet();\n const transactionModal = useDisclosure();\n\n const transferERC20 = useTransferERC20({\n fromAddress: selectedAccount.address,\n receiverAddress: resolvedAddress || toAddressOrDomain,\n amount,\n tokenAddress: selectedToken.address,\n tokenName: selectedToken.symbol,\n });\n\n const transferVET = useTransferVET({\n fromAddress: selectedAccount.address,\n receiverAddress: resolvedAddress || toAddressOrDomain,\n amount,\n });\n\n const handleSend = async () => {\n transactionModal.onOpen();\n try {\n if (selectedToken.symbol === 'VET') {\n await transferVET.sendTransaction();\n } else {\n await transferERC20.sendTransaction();\n }\n } catch (error) {\n console.error('Transaction failed:', error);\n }\n };\n\n const { status, error, txReceipt } =\n selectedToken.symbol === 'VET' ? transferVET : transferERC20;\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n Send\n </ModalHeader>\n <ModalBackButton\n onClick={() => setCurrentContent('send-token')}\n />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <Container maxW={'container.lg'}>\n <ModalBody>\n <VStack spacing={6} align=\"stretch\" w=\"full\">\n {connection.isConnectedWithPrivy && (\n <Alert\n status=\"warning\"\n fontSize={'xs'}\n borderRadius={'xl'}\n >\n <AlertIcon />\n Sending to OceanX or other exchanges may result\n in loss of funds. Send the tokens to your\n VeWorld wallet first.\n </Alert>\n )}\n {/* From/To Card */}\n <Box\n p={4}\n borderRadius=\"xl\"\n bg={isDark ? '#00000021' : 'gray.50'}\n >\n {/* From Section */}\n <VStack\n align=\"stretch\"\n spacing={4}\n wordBreak={'break-all'}\n >\n <Box>\n <Text fontSize=\"sm\" mb={2}>\n From\n </Text>\n <HStack>\n <Image\n src={selectedAccount.image}\n alt=\"From account\"\n boxSize=\"40px\"\n borderRadius=\"xl\"\n />\n <VStack align=\"start\" spacing={0}>\n {selectedAccount.domain && (\n <>\n <Text fontWeight=\"medium\">\n {selectedAccount.domain}\n </Text>\n\n <Text\n fontSize=\"sm\"\n opacity={0.5}\n >\n {humanAddress(\n selectedAccount.address,\n )}\n </Text>\n </>\n )}\n\n {!selectedAccount.domain && (\n <Text fontWeight=\"medium\">\n {selectedAccount.address}\n </Text>\n )}\n </VStack>\n </HStack>\n </Box>\n\n <Divider />\n\n {/* To Section */}\n <Box>\n <Text fontSize=\"sm\" mb={2}>\n To\n </Text>\n <HStack>\n <Image\n src={getPicassoImage(\n toAddressOrDomain,\n )}\n alt=\"To account\"\n boxSize=\"40px\"\n borderRadius=\"xl\"\n />\n <VStack align=\"start\" spacing={0}>\n {resolvedDomain && (\n <>\n <Text fontWeight=\"medium\">\n {resolvedDomain}\n </Text>\n <Text\n fontSize=\"sm\"\n opacity={0.5}\n >\n {humanAddress(\n resolvedAddress ||\n toAddressOrDomain,\n )}\n </Text>\n </>\n )}\n\n {!resolvedDomain && (\n <Text fontWeight=\"medium\">\n {resolvedAddress ||\n toAddressOrDomain}\n </Text>\n )}\n </VStack>\n </HStack>\n </Box>\n\n <Divider />\n <Box>\n <Text fontSize=\"sm\" mb={2}>\n Amount\n </Text>\n <HStack>\n <Text\n fontSize=\"xl\"\n fontWeight=\"semibold\"\n >\n {compactFormatter.format(\n Number(amount),\n )}{' '}\n {selectedToken.symbol}\n </Text>\n <Text fontSize=\"sm\" opacity={0.5}>\n ≈ $\n {compactFormatter.format(\n Number(amount) *\n selectedToken.price,\n )}\n </Text>\n </HStack>\n </Box>\n </VStack>\n </Box>\n </VStack>\n </ModalBody>\n </Container>\n <StickyFooterContainer>\n <ModalFooter px={6} py={0}>\n <Button\n width=\"full\"\n height=\"60px\"\n variant=\"solid\"\n borderRadius=\"xl\"\n colorScheme=\"blue\"\n onClick={handleSend}\n >\n CONFIRM\n </Button>\n </ModalFooter>\n </StickyFooterContainer>\n\n <TransactionModal\n isOpen={transactionModal.isOpen}\n onClose={() => {\n transactionModal.onClose();\n setCurrentContent('main');\n }}\n status={status}\n txId={txReceipt?.meta.txID}\n errorDescription={error?.reason ?? 'Unknown error'}\n showExplorerButton={true}\n />\n </FadeInViewFromBottom>\n );\n};\n","import {\n Container,\n ModalBody,\n ModalCloseButton,\n ModalHeader,\n VStack,\n Text,\n useColorMode,\n ModalFooter,\n} from '@chakra-ui/react';\nimport { QRCode } from 'react-qrcode-logo';\nimport {\n FadeInViewFromBottom,\n ModalBackButton,\n StickyHeaderContainer,\n AddressDisplay,\n} from '@/components/common';\nimport { AccountModalContentTypes } from '../../Types';\nimport { useWallet } from '@/hooks';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n};\n\nexport const ReceiveTokenContent = ({ setCurrentContent }: Props) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n const { selectedAccount } = useWallet();\n\n return (\n <FadeInViewFromBottom>\n <StickyHeaderContainer>\n <ModalHeader\n fontSize={'md'}\n fontWeight={'500'}\n textAlign={'center'}\n color={isDark ? '#dfdfdd' : '#4d4d4d'}\n >\n Receive\n </ModalHeader>\n <ModalBackButton onClick={() => setCurrentContent('main')} />\n <ModalCloseButton />\n </StickyHeaderContainer>\n\n <Container maxW={'container.lg'}>\n <ModalBody>\n <VStack spacing={6} align=\"center\" w=\"full\">\n <AddressDisplay wallet={selectedAccount} size=\"lg\" />\n <QRCode\n value={selectedAccount.address}\n size={200}\n removeQrCodeBehindLogo={true}\n eyeRadius={4}\n logoPaddingStyle={'circle'}\n style={{\n borderRadius: '16px',\n }}\n />\n\n <Text fontSize=\"sm\" textAlign=\"center\">\n Copy your address or scan this QR code\n </Text>\n\n <Text fontSize=\"xs\" textAlign=\"center\" opacity={0.5}>\n This address only supports VeChain assets.\n </Text>\n </VStack>\n </ModalBody>\n <ModalFooter></ModalFooter>\n </Container>\n </FadeInViewFromBottom>\n );\n};\n","import {\n Button,\n Box,\n HStack,\n VStack,\n Text,\n Icon,\n Image,\n useColorMode,\n Tag,\n} from '@chakra-ui/react';\nimport { ElementType } from 'react';\nimport { humanAddress } from '../../../utils';\n\ninterface AccountDetailsButtonProps {\n title: string;\n address: string;\n onClick: () => void;\n leftIcon?: ElementType;\n rightIcon?: ElementType;\n leftImage?: string;\n backgroundColor?: string;\n border?: string;\n isActive?: boolean;\n}\n\nexport const AccountDetailsButton = ({\n leftIcon,\n rightIcon,\n title,\n address,\n onClick,\n leftImage,\n isActive = false,\n}: AccountDetailsButtonProps) => {\n const { colorMode } = useColorMode();\n const isDark = colorMode === 'dark';\n\n return (\n <Button\n w={'full'}\n minH={'70px'}\n h={'fit-content'}\n py={4}\n onClick={onClick}\n backgroundColor={isDark ? 'transparent' : 'transparent'}\n border={`1px solid ${isDark ? '#ffffff29' : '#ebebeb'}`}\n >\n <HStack w={'full'} justify={'space-between'}>\n <Box minW={'40px'}>\n {leftImage ? (\n <Image\n src={leftImage}\n w={'25px'}\n h={'25px'}\n alt=\"left-image\"\n />\n ) : (\n <Icon as={leftIcon} fontSize={'25px'} />\n )}\n </Box>\n <VStack textAlign={'left'} w={'full'} flex={1}>\n <HStack\n w={'full'}\n spacing={2}\n justifyContent={'flex-start'}\n >\n <Text fontSize={'sm'} fontWeight={'400'}>\n {title}\n </Text>\n {isActive && (\n <Tag ml={1} size={'sm'} colorScheme={'green'}>\n Active\n </Tag>\n )}\n </HStack>\n <Text\n fontSize={'sm'}\n fontWeight={'500'}\n opacity={0.5}\n overflowWrap={'break-word'}\n wordBreak={'break-word'}\n whiteSpace={'normal'}\n w={'full'}\n >\n {humanAddress(address, 6, 4)}\n </Text>\n </VStack>\n <VStack minW={'40px'} justifyContent={'flex-end'}>\n <Icon as={rightIcon} fontSize={'20px'} opacity={0.5} />\n </VStack>\n </HStack>\n </Button>\n );\n};\n","import {\n Button,\n Box,\n HStack,\n VStack,\n Text,\n Icon,\n Image,\n Tag,\n} from '@chakra-ui/react';\nimport { ElementType } from 'react';\nimport { FadeInView } from '../../common';\n\ninterface ActionButtonProps {\n title: string;\n description: string;\n onClick: () => void;\n leftIcon?: ElementType;\n rightIcon?: ElementType;\n leftImage?: string;\n backgroundColor?: string;\n border?: string;\n hide?: boolean;\n showComingSoon?: boolean;\n}\n\nexport const ActionButton = ({\n leftIcon,\n rightIcon,\n title,\n description,\n onClick,\n leftImage,\n hide = false,\n showComingSoon = false,\n backgroundColor,\n}: ActionButtonProps) => {\n return (\n <FadeInView>\n <Button\n w={'full'}\n minH={'70px'}\n h={'fit-content'}\n py={4}\n onClick={onClick}\n display={hide ? 'none' : 'flex'}\n isDisabled={showComingSoon}\n bgColor={backgroundColor}\n >\n <HStack w={'full'} justify={'space-between'}>\n <Box minW={'40px'}>\n {leftImage ? (\n <Image src={leftImage} alt=\"left-image\" />\n ) : (\n <Icon as={leftIcon} fontSize={'25px'} />\n )}\n </Box>\n <VStack\n textAlign={'left'}\n w={'full'}\n flex={1}\n justifyContent={'flex-start'}\n alignItems={'flex-start'}\n >\n <Text w={'full'} fontSize={'sm'} fontWeight={'400'}>\n {title}\n </Text>\n\n <Text\n fontSize={'xs'}\n fontWeight={'400'}\n opacity={0.5}\n overflowWrap={'break-word'}\n wordBreak={'break-word'}\n whiteSpace={'normal'}\n w={'full'}\n >\n {description}\n </Text>\n {showComingSoon && (\n <Tag size=\"sm\" colorScheme=\"red\">\n Coming Soon!\n </Tag>\n )}\n </VStack>\n <VStack minW={'40px'} justifyContent={'flex-end'}>\n <Icon as={rightIcon} fontSize={'20px'} opacity={0.5} />\n </VStack>\n </HStack>\n </Button>\n </FadeInView>\n );\n};\n","'use client';\n\nimport { Text, Icon, HStack, Button } from '@chakra-ui/react';\nimport { humanAddress } from '../../../utils';\nimport { Wallet, useWallet } from '../../../hooks';\nimport { IoIosArrowDown } from 'react-icons/io';\nimport { useState } from 'react';\nimport { IoCheckmarkOutline, IoCopyOutline } from 'react-icons/io5';\n\ntype Props = {\n wallet: Wallet;\n size?: string;\n onClick?: () => void;\n};\n\nexport const AccountSelector = ({ wallet, size = 'md', onClick }: Props) => {\n const [copied, setCopied] = useState(false);\n const { connection } = useWallet();\n\n const copyToClipboard = async (textToCopy: string) => {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setTimeout(() => {\n setCopied(false);\n }, 2000);\n };\n\n return (\n <HStack>\n <Button\n w=\"fit-content\"\n h=\"fit-content\"\n p={2}\n px={4}\n onClick={onClick}\n variant=\"selector\"\n >\n <HStack spacing={4} align=\"center\">\n <Text fontSize={size} fontWeight=\"500\">\n {wallet.domain || humanAddress(wallet.address, 6, 4)}\n </Text>\n\n {connection.isConnectedWithPrivy && (\n <Icon\n boxSize={5}\n as={IoIosArrowDown}\n cursor=\"pointer\"\n />\n )}\n </HStack>\n </Button>\n\n <Button\n p={2}\n px={4}\n variant=\"selector\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n copyToClipboard(wallet.address);\n }}\n >\n <Icon\n boxSize={5}\n as={copied ? IoCheckmarkOutline : IoCopyOutline}\n />\n </Button>\n </HStack>\n );\n};\n","import { Heading, Spinner, VStack, Text } from '@chakra-ui/react';\nimport { useBalances } from '../../../hooks';\n\nconst compactFormatter = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 2,\n});\n\nexport const BalanceSection = ({ mb }: { mb?: number }) => {\n const { isLoading, totalBalance } = useBalances();\n\n if (isLoading) return <Spinner mt={4} mb={mb} />;\n\n return (\n <VStack w=\"full\" spacing={2} mt={4} mb={mb}>\n <Heading textAlign=\"center\" size={'2xl'} fontWeight={'500'}>\n ${compactFormatter.format(totalBalance)}\n </Heading>\n <Text fontSize=\"xs\" opacity={0.7}>\n Total Balance\n </Text>\n </VStack>\n );\n};\n","import {\n VStack,\n HStack,\n Tabs,\n TabList,\n Tab,\n TabPanels,\n TabPanel,\n useColorModeValue,\n} from '@chakra-ui/react';\nimport { useRef } from 'react';\nimport { AssetsTabPanel } from './Contents/AssetsTabPanel';\nimport { NFTsTabPanel } from './Contents/NFTsTabPanel';\nimport { ActivityTabPanel } from './Contents/ActivityTabPanel';\n\nexport const AssetsSection = () => {\n const tabTextColor = useColorModeValue('blackAlpha.400', 'whiteAlpha.400');\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = () => {\n setTimeout(() => {\n if (tabPanelsRef.current) {\n tabPanelsRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n }, 100);\n };\n\n return (\n <VStack w=\"full\" spacing={3} align=\"stretch\">\n <Tabs variant=\"soft-rounded\" size=\"sm\" onChange={handleTabChange}>\n <HStack justify=\"space-between\" align=\"center\">\n <TabList\n bg=\"blackAlpha.300\"\n p={1}\n borderRadius=\"full\"\n flex={1}\n >\n <Tab\n borderRadius=\"full\"\n color={tabTextColor}\n _selected={{\n bg: 'white',\n color: 'black',\n }}\n flex={1}\n >\n Assets\n </Tab>\n <Tab\n borderRadius=\"full\"\n color={tabTextColor}\n _selected={{\n bg: 'white',\n color: 'black',\n }}\n flex={1}\n >\n NFTs\n </Tab>\n <Tab\n borderRadius=\"full\"\n color={tabTextColor}\n _selected={{\n bg: 'white',\n color: 'black',\n }}\n flex={1}\n >\n Activity\n </Tab>\n </TabList>\n </HStack>\n <TabPanels ref={tabPanelsRef}>\n <TabPanel p={0} pt={3}>\n <AssetsTabPanel />\n </TabPanel>\n <TabPanel p={0} pt={3}>\n <NFTsTabPanel />\n </TabPanel>\n <TabPanel p={0} pt={3}>\n <ActivityTabPanel />\n </TabPanel>\n </TabPanels>\n </Tabs>\n </VStack>\n );\n};\n","import { HStack, Icon, Text, Button, VStack } from '@chakra-ui/react';\nimport { IoRefresh } from 'react-icons/io5';\nimport { useBalances, useRefreshBalances } from '@/hooks';\nimport { motion } from 'framer-motion';\nimport { AssetRow } from './AssetRow';\n\nconst MotionVStack = motion(VStack);\n\nexport const AssetsTabPanel = () => {\n const { balances, prices } = useBalances();\n const { refresh } = useRefreshBalances();\n\n return (\n <MotionVStack\n spacing={2}\n align=\"stretch\"\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n transition={{ duration: 0.2 }}\n mt={2}\n >\n <AssetRow\n symbol=\"VET\"\n amount={balances.vet}\n usdValue={balances.vet * prices.vet}\n />\n <AssetRow\n symbol=\"VTHO\"\n amount={balances.vtho}\n usdValue={balances.vtho * prices.vtho}\n />\n <AssetRow\n symbol=\"B3TR\"\n amount={balances.b3tr}\n usdValue={balances.b3tr * prices.b3tr}\n />\n {balances.vot3 > 0 && (\n <AssetRow\n symbol=\"VOT3\"\n amount={balances.vot3}\n usdValue={balances.vot3 * prices.b3tr}\n />\n )}\n {balances.veDelegate > 0 && (\n <AssetRow\n symbol=\"veDelegate\"\n amount={balances.veDelegate}\n usdValue={balances.veDelegate * prices.b3tr}\n />\n )}\n <HStack justify=\"flex-end\" px={2}>\n <Button\n aria-label=\"Refresh balances\"\n size=\"sm\"\n variant=\"link\"\n onClick={() => refresh()}\n leftIcon={<Icon as={IoRefresh} />}\n >\n <Text fontSize=\"sm\" fontWeight=\"bold\">\n Refresh\n </Text>\n </Button>\n </HStack>\n </MotionVStack>\n );\n};\n","import { HStack, Image, Text, Box } from '@chakra-ui/react';\nimport { TOKEN_LOGOS } from '@/utils';\n\nconst compactFormatter = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 2,\n});\n\ntype AssetRowProps = {\n symbol: string;\n amount: number;\n usdValue: number;\n};\n\nexport const AssetRow = ({ symbol, amount, usdValue }: AssetRowProps) => (\n <HStack justify=\"space-between\" px={2} py={1}>\n <HStack spacing={2}>\n <Image\n src={TOKEN_LOGOS[symbol]}\n alt={`${symbol} logo`}\n boxSize=\"24px\"\n borderRadius=\"full\"\n fallback={\n <Box\n boxSize=\"24px\"\n borderRadius=\"full\"\n bg=\"whiteAlpha.200\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text fontSize=\"10px\" fontWeight=\"bold\">\n {symbol.slice(0, 3)}\n </Text>\n </Box>\n }\n />\n <Text fontSize=\"sm\">{symbol}</Text>\n </HStack>\n <Text fontSize=\"sm\">\n {compactFormatter.format(amount)}\n <Text as=\"span\" opacity={0.5}>\n {' '}\n (${compactFormatter.format(usdValue)})\n </Text>\n </Text>\n </HStack>\n);\n","import { Icon, Text, VStack } from '@chakra-ui/react';\nimport { IoWalletOutline } from 'react-icons/io5';\nimport { motion } from 'framer-motion';\n\nconst MotionVStack = motion(VStack);\n\nexport const NFTsTabPanel = () => {\n return (\n <MotionVStack\n spacing={4}\n align=\"center\"\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n transition={{ duration: 0.2 }}\n mt={8}\n >\n <Icon\n as={IoWalletOutline}\n boxSize={12}\n opacity={0.5}\n p={2}\n bg=\"whiteAlpha.100\"\n borderRadius=\"xl\"\n />\n <VStack spacing={1}>\n <Text fontSize=\"lg\" fontWeight=\"500\">\n Coming soon\n </Text>\n <Text fontSize=\"sm\" opacity={0.5} textAlign=\"center\">\n Stay tuned for our upcoming NFT feature\n </Text>\n </VStack>\n </MotionVStack>\n );\n};\n","import { Icon, Text, VStack } from '@chakra-ui/react';\nimport { BiTransferAlt } from 'react-icons/bi';\nimport { motion } from 'framer-motion';\n\nconst MotionVStack = motion(VStack);\n\nexport const ActivityTabPanel = () => {\n return (\n <MotionVStack\n spacing={4}\n align=\"center\"\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n transition={{ duration: 0.2 }}\n mt={8}\n >\n <Icon\n as={BiTransferAlt}\n boxSize={12}\n opacity={0.5}\n p={2}\n bg=\"whiteAlpha.100\"\n borderRadius=\"xl\"\n />\n <VStack spacing={1}>\n <Text fontSize=\"lg\" fontWeight=\"500\">\n Coming soon\n </Text>\n <Text fontSize=\"sm\" opacity={0.5} textAlign=\"center\">\n Stay tuned for our upcoming Activity feature\n </Text>\n </VStack>\n </MotionVStack>\n );\n};\n","import { Grid, Icon, IconButton } from '@chakra-ui/react';\nimport { MdSwapHoriz } from 'react-icons/md';\nimport { BsLightningCharge } from 'react-icons/bs';\nimport { FaRegArrowAltCircleDown } from 'react-icons/fa';\nimport { FiSend } from 'react-icons/fi';\nimport { AccountModalContentTypes } from '../Types';\n\ntype Props = {\n setCurrentContent: React.Dispatch<\n React.SetStateAction<AccountModalContentTypes>\n >;\n};\n\nexport const QuickActionsSection = ({ setCurrentContent }: Props) => {\n return (\n <Grid templateColumns=\"repeat(4, 1fr)\" gap={2} w=\"full\">\n <IconButton\n disabled\n variant=\"selector\"\n h=\"auto\"\n py={3}\n fontSize=\"xs\"\n verticalAlign=\"middle\"\n aria-label=\"Buy\"\n icon={<Icon as={BsLightningCharge} boxSize={5} opacity={0.5} />}\n />\n <IconButton\n disabled\n variant=\"selector\"\n h=\"auto\"\n py={3}\n aria-label=\"Swap\"\n icon={<Icon as={MdSwapHoriz} boxSize={5} opacity={0.5} />}\n />\n <IconButton\n variant=\"selector\"\n h=\"auto\"\n py={3}\n aria-label=\"Receive\"\n icon={\n <Icon\n as={FaRegArrowAltCircleDown}\n boxSize={5}\n opacity={0.5}\n />\n }\n onClick={() => setCurrentContent('receive-token')}\n />\n <IconButton\n variant=\"selector\"\n h=\"auto\"\n py={3}\n aria-label=\"Send\"\n icon={<Icon as={FiSend} boxSize={5} opacity={0.5} />}\n onClick={() => setCurrentContent('send-token')}\n />\n </Grid>\n );\n};\n","import {\n Modal,\n ModalBody,\n ModalContent,\n ModalContentProps,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Spinner,\n Text,\n useMediaQuery,\n VStack,\n} from '@chakra-ui/react';\n\ntype LoginLoadingModalProps = {\n isOpen: boolean;\n onClose: () => void;\n};\n\nexport const LoginLoadingModal = ({\n isOpen,\n onClose,\n}: LoginLoadingModalProps) => {\n const [isDesktop] = useMediaQuery('(min-width: 768px)');\n const _modalContentProps = isDesktop\n ? {}\n : {\n position: 'fixed',\n bottom: '0',\n mb: '0',\n maxW: '2xl',\n borderRadius: '24px 24px 0px 0px',\n overflowY: 'scroll',\n overflowX: 'hidden',\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n motionPreset=\"slideInBottom\"\n isCentered\n size=\"xs\"\n scrollBehavior=\"inside\"\n trapFocus={false}\n autoFocus={false}\n >\n <ModalOverlay />\n\n <ModalContent {...(_modalContentProps as ModalContentProps)}>\n <ModalHeader></ModalHeader>\n <ModalBody>\n <VStack w={'full'} justifyContent={'center'}>\n <Spinner />\n <Text mt={4} fontSize=\"sm\">\n Connecting...\n </Text>\n </VStack>\n </ModalBody>\n <ModalFooter></ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n"],"mappings":"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,GAAOT,GAAEI,CAAC,EAAIJ,GAAEK,CAAC,EAAG,CAAC,CAC9B,CAKA,SAASI,GAAQF,EAAGC,EAAG,CACrB,OAAQD,IAAMC,EAAMD,GAAM,GAAKC,CACjC,CAGA,IAAME,GAAa,IAAI,YAAY,CACjC,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACF,CAAC,EAEKC,GAAQ,IAAI,WAAW,CAC3B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,CACF,CAAC,EAGKX,GAAI,IAAI,YAAY,EAAE,EACtBY,GAAI,IAAI,YAAY,EAAE,EAC5B,SAASC,GAAiBC,EAAKC,EAAM,CACnC,IAAId,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAEjBD,GAAEC,CAAC,EAAIa,EAAI,EAAEb,CAA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ACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAASD,GAETE,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAIJ,GAAM,QAAQI,CAAO,EAEtC,KAAK,MAAQ,IAAIJ,GAAM,KAAKI,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAAOA,EAAQ,KAEpBF,GAAO,KAAK,EAAE,SAAS,EAAG,eAAe,EACzCA,GAAO,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,WAAW,EAAG,yBAAyB,CACnE,CACAJ,GAAO,YAAcK,GAErB,SAASE,GAAYC,EAAMF,EAAS,CAClC,OAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACd,IAAIN,EAAQ,IAAIG,GAAYC,CAAO,EACnC,cAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,MAAON,CACT,CAAC,EACMA,CACT,CACF,CAAC,CACH,CAEAK,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,wDACA,uDACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,iEACA,gEACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,0EACA,yEACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,8GAEA,6GAEF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,2JAGA,0JAGF,CACF,CAAC,EAEDM,GAAY,aAAc,CACxB,KAAM,OACN,MAAO,SACP,EAAG,sEACH,EAAG,QACH,EAAG,IACH,EAAG,sEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,GACF,CACF,CAAC,EAEDM,GAAY,UAAW,CACrB,KAAM,UACN,MAAO,SACP,EAAG,sEACH,EAAG,KACH,EAAG,IAEH,EAAG,sEACH,EAAG,sEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,mEAGA,kEACF,CACF,CAAC,EAED,IAAIQ,GACJ,GAAI,CACFA,GAAM,IACR,MAAY,CACVA,GAAM,MACR,CAEAF,GAAY,YAAa,CACvB,KAAM,QACN,MAAO,OACP,EAAG,0EACH,EAAG,IACH,EAAG,IACH,EAAG,0EACH,EAAG,IACH,KAAMN,GAAK,OAGX,KAAM,mEACN,OAAQ,mEACR,MAAO,CACL,CACE,EAAG,mCACH,EAAG,mCACL,EACA,CACE,EAAG,oCACH,EAAG,kCACL,CACF,EAEA,KAAM,GACN,EAAG,CACD,mEACA,mEACAQ,EACF,CACF,CAAC,IC7MD,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAQ,KACRC,GAAS,KAEb,SAASC,GAASC,EAAS,CACzB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAASC,CAAO,EAC7B,KAAK,KAAOA,EAAQ,KACpB,KAAK,WAAa,CAAC,CAACA,EAAQ,WAE5B,KAAK,OAAS,KAAK,KAAK,QACxB,KAAK,WAAaA,EAAQ,YAAc,KAAK,KAAK,aAElD,KAAK,QAAU,KACf,KAAK,eAAiB,KACtB,KAAK,EAAI,KACT,KAAK,EAAI,KAET,IAAIC,EAAUJ,GAAM,QAAQG,EAAQ,QAASA,EAAQ,YAAc,KAAK,EACpEE,EAAQL,GAAM,QAAQG,EAAQ,MAAOA,EAAQ,UAAY,KAAK,EAC9DG,EAAON,GAAM,QAAQG,EAAQ,KAAMA,EAAQ,SAAW,KAAK,EAC/DF,GAAOG,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EACrE,KAAK,MAAMA,EAASC,EAAOC,CAAI,CACjC,CACAR,GAAO,QAAUI,GAEjBA,GAAS,UAAU,MAAQ,SAAcE,EAASC,EAAOC,EAAM,CAC7D,IAAIC,EAAOH,EAAQ,OAAOC,CAAK,EAAE,OAAOC,CAAI,EAE5C,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,QAASE,EAAI,EAAGA,EAAI,KAAK,EAAE,OAAQA,IACjC,KAAK,EAAEA,CAAC,EAAI,EACZ,KAAK,EAAEA,CAAC,EAAI,EAGd,KAAK,QAAQD,CAAI,EACjB,KAAK,QAAU,EACf,KAAK,eAAiB,eACxB,EAEAL,GAAS,UAAU,MAAQ,UAAgB,CACzC,OAAO,IAAIH,GAAK,KAAK,KAAK,KAAM,KAAK,CAAC,CACxC,EAEAG,GAAS,UAAU,QAAU,SAAgBK,EAAM,CACjD,IAAIE,EAAO,KAAK,MAAM,EACN,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAK,CAAC,EAC3BF,IACFE,EAAOA,EAAK,OAAOF,CAAI,GACzB,KAAK,EAAIE,EAAK,OAAO,EACrB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EACvCF,IAGL,KAAK,EAAI,KAAK,MAAM,EACN,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAK,CAAC,EACf,OAAOA,CAAI,EACX,OAAO,EACrB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAC9C,EAEAL,GAAS,UAAU,OAAS,SAAgBE,EAASM,EAAYC,EAAKC,EAAQ,CAExE,OAAOF,GAAe,WACxBE,EAASD,EACTA,EAAMD,EACNA,EAAa,MAGfN,EAAUJ,GAAM,QAAQI,EAASM,CAAU,EAC3CC,EAAMX,GAAM,QAAQW,EAAKC,CAAM,EAE/BX,GAAOG,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EAErE,KAAK,QAAQA,EAAQ,OAAOO,GAAO,CAAC,CAAC,CAAC,EACtC,KAAK,QAAU,CACjB,EAEAT,GAAS,UAAU,SAAW,SAAkBW,EAAKC,EAAKH,EAAKC,EAAQ,CACrE,GAAI,KAAK,QAAU,KAAK,eACtB,MAAM,IAAI,MAAM,oBAAoB,EAGlC,OAAOE,GAAQ,WACjBF,EAASD,EACTA,EAAMG,EACNA,EAAM,MAIJH,IACFA,EAAMX,GAAM,QAAQW,EAAKC,GAAU,KAAK,EACxC,KAAK,QAAQD,CAAG,GAIlB,QADII,EAAO,CAAC,EACLA,EAAK,OAASF,GACnB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAC5CE,EAAOA,EAAK,OAAO,KAAK,CAAC,EAG3B,IAAIC,EAAMD,EAAK,MAAM,EAAGF,CAAG,EAC3B,YAAK,QAAQF,CAAG,EAChB,KAAK,UACEX,GAAM,OAAOgB,EAAKF,CAAG,CAC9B,IChHA,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAQC,EAAIC,EAAS,CAC5B,KAAK,GAAKD,EACV,KAAK,KAAO,KACZ,KAAK,IAAM,KAGPC,EAAQ,MACV,KAAK,eAAeA,EAAQ,KAAMA,EAAQ,OAAO,EAC/CA,EAAQ,KACV,KAAK,cAAcA,EAAQ,IAAKA,EAAQ,MAAM,CAClD,CACAN,GAAO,QAAUI,GAEjBA,GAAQ,WAAa,SAAoBC,EAAIE,EAAKC,EAAK,CACrD,OAAID,aAAeH,GACVG,EAEF,IAAIH,GAAQC,EAAI,CACrB,IAAKE,EACL,OAAQC,CACV,CAAC,CACH,EAEAJ,GAAQ,YAAc,SAAqBC,EAAII,EAAMD,EAAK,CACxD,OAAIC,aAAgBL,GACXK,EAEF,IAAIL,GAAQC,EAAI,CACrB,KAAMI,EACN,QAASD,CACX,CAAC,CACH,EAEAJ,GAAQ,UAAU,SAAW,UAAoB,CAC/C,IAAIG,EAAM,KAAK,UAAU,EAEzB,OAAIA,EAAI,WAAW,EACV,CAAE,OAAQ,GAAO,OAAQ,oBAAqB,EAClDA,EAAI,SAAS,EAEbA,EAAI,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,WAAW,EAGlC,CAAE,OAAQ,GAAM,OAAQ,IAAK,EAF3B,CAAE,OAAQ,GAAO,OAAQ,qBAAsB,EAF/C,CAAE,OAAQ,GAAO,OAAQ,2BAA4B,CAKhE,EAEAH,GAAQ,UAAU,UAAY,SAAmBM,EAASF,EAAK,CAU7D,OARI,OAAOE,GAAY,WACrBF,EAAME,EACNA,EAAU,MAGP,KAAK,MACR,KAAK,IAAM,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,GAE/BF,EAGE,KAAK,IAAI,OAAOA,EAAKE,CAAO,EAF1B,KAAK,GAGhB,EAEAN,GAAQ,UAAU,WAAa,SAAoBI,EAAK,CACtD,OAAIA,IAAQ,MACH,KAAK,KAAK,SAAS,GAAI,CAAC,EAExB,KAAK,IAChB,EAEAJ,GAAQ,UAAU,eAAiB,SAAwBO,EAAKH,EAAK,CACnE,KAAK,KAAO,IAAIP,GAAGU,EAAKH,GAAO,EAAE,EAIjC,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,CAC5C,EAEAJ,GAAQ,UAAU,cAAgB,SAAuBO,EAAKH,EAAK,CACjE,GAAIG,EAAI,GAAKA,EAAI,EAAG,CAId,KAAK,GAAG,MAAM,OAAS,OACzBR,GAAOQ,EAAI,EAAG,mBAAmB,GACxB,KAAK,GAAG,MAAM,OAAS,SACvB,KAAK,GAAG,MAAM,OAAS,YAChCR,GAAOQ,EAAI,GAAKA,EAAI,EAAG,8BAA8B,EAEvD,KAAK,IAAM,KAAK,GAAG,MAAM,MAAMA,EAAI,EAAGA,EAAI,CAAC,EAC3C,MACF,CACA,KAAK,IAAM,KAAK,GAAG,MAAM,YAAYA,EAAKH,CAAG,CAC/C,EAGAJ,GAAQ,UAAU,OAAS,SAAgBG,EAAK,CAC9C,OAAIA,EAAI,SAAS,GACfJ,GAAOI,EAAI,SAAS,EAAG,4BAA4B,EAE9CA,EAAI,IAAI,KAAK,IAAI,EAAE,KAAK,CACjC,EAGAH,GAAQ,UAAU,KAAO,SAAcQ,EAAKJ,EAAKF,EAAS,CACxD,OAAO,KAAK,GAAG,KAAKM,EAAK,KAAMJ,EAAKF,CAAO,CAC7C,EAEAF,GAAQ,UAAU,OAAS,SAAgBQ,EAAKC,EAAW,CACzD,OAAO,KAAK,GAAG,OAAOD,EAAKC,EAAW,IAAI,CAC5C,EAEAT,GAAQ,UAAU,QAAU,UAAmB,CAC7C,MAAO,eAAiB,KAAK,MAAQ,KAAK,KAAK,SAAS,GAAI,CAAC,GACtD,UAAY,KAAK,KAAO,KAAK,IAAI,QAAQ,GAAK,IACvD,ICxHA,IAAAU,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KAELC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAUC,EAASC,EAAK,CAC/B,GAAID,aAAmBD,GACrB,OAAOC,EAEL,KAAK,WAAWA,EAASC,CAAG,IAGhCH,GAAOE,EAAQ,GAAKA,EAAQ,EAAG,0BAA0B,EACzD,KAAK,EAAI,IAAIJ,GAAGI,EAAQ,EAAG,EAAE,EAC7B,KAAK,EAAI,IAAIJ,GAAGI,EAAQ,EAAG,EAAE,EACzBA,EAAQ,gBAAkB,OAC5B,KAAK,cAAgB,KAErB,KAAK,cAAgBA,EAAQ,cACjC,CACAL,GAAO,QAAUI,GAEjB,SAASG,IAAW,CAClB,KAAK,MAAQ,CACf,CAEA,SAASC,GAAUC,EAAKC,EAAG,CACzB,IAAIC,EAAUF,EAAIC,EAAE,OAAO,EAC3B,GAAI,EAAEC,EAAU,KACd,OAAOA,EAET,IAAIC,EAAWD,EAAU,GAGzB,GAAIC,IAAa,GAAKA,EAAW,EAC/B,MAAO,GAIT,QADIC,EAAM,EACDC,EAAI,EAAGC,EAAML,EAAE,MAAOI,EAAIF,EAAUE,IAAKC,IAChDF,IAAQ,EACRA,GAAOJ,EAAIM,CAAG,EACdF,KAAS,EAIX,OAAIA,GAAO,IACF,IAGTH,EAAE,MAAQK,EACHF,EACT,CAEA,SAASG,GAAUP,EAAK,CAGtB,QAFIK,EAAI,EACJG,EAAMR,EAAI,OAAS,EAChB,CAACA,EAAIK,CAAC,GAAK,EAAEL,EAAIK,EAAI,CAAC,EAAI,MAASA,EAAIG,GAC5CH,IAEF,OAAIA,IAAM,EACDL,EAEFA,EAAI,MAAMK,CAAC,CACpB,CAEAV,GAAU,UAAU,WAAa,SAAoBc,EAAMZ,EAAK,CAC9DY,EAAOhB,GAAM,QAAQgB,EAAMZ,CAAG,EAC9B,IAAII,EAAI,IAAIH,GACZ,GAAIW,EAAKR,EAAE,OAAO,IAAM,GACtB,MAAO,GAET,IAAIO,EAAMT,GAAUU,EAAMR,CAAC,EAO3B,GANIO,IAAQ,IAGPA,EAAMP,EAAE,QAAWQ,EAAK,QAGzBA,EAAKR,EAAE,OAAO,IAAM,EACtB,MAAO,GAET,IAAIS,EAAOX,GAAUU,EAAMR,CAAC,EAC5B,GAAIS,IAAS,GACX,MAAO,GAET,IAAIC,EAAIF,EAAK,MAAMR,EAAE,MAAOS,EAAOT,EAAE,KAAK,EAE1C,GADAA,EAAE,OAASS,EACPD,EAAKR,EAAE,OAAO,IAAM,EACtB,MAAO,GAET,IAAIW,EAAOb,GAAUU,EAAMR,CAAC,EAI5B,GAHIW,IAAS,IAGTH,EAAK,SAAWG,EAAOX,EAAE,MAC3B,MAAO,GAET,IAAIY,EAAIJ,EAAK,MAAMR,EAAE,MAAOW,EAAOX,EAAE,KAAK,EAC1C,GAAIU,EAAE,CAAC,IAAM,EACX,GAAIA,EAAE,CAAC,EAAI,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAGX,GAAIE,EAAE,CAAC,IAAM,EACX,GAAIA,EAAE,CAAC,EAAI,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAIX,YAAK,EAAI,IAAIrB,GAAGmB,CAAC,EACjB,KAAK,EAAI,IAAInB,GAAGqB,CAAC,EACjB,KAAK,cAAgB,KAEd,EACT,EAEA,SAASC,GAAgBC,EAAKP,EAAK,CACjC,GAAIA,EAAM,IAAM,CACdO,EAAI,KAAKP,CAAG,EACZ,MACF,CACA,IAAIQ,EAAS,GAAK,KAAK,IAAIR,CAAG,EAAI,KAAK,MAAQ,GAE/C,IADAO,EAAI,KAAKC,EAAS,GAAI,EACf,EAAEA,GACPD,EAAI,KAAMP,KAASQ,GAAU,GAAM,GAAI,EAEzCD,EAAI,KAAKP,CAAG,CACd,CAEAb,GAAU,UAAU,MAAQ,SAAeE,EAAK,CAC9C,IAAI,EAAI,KAAK,EAAE,QAAQ,EACnBgB,EAAI,KAAK,EAAE,QAAQ,EAYvB,IATI,EAAE,CAAC,EAAI,MACT,EAAI,CAAE,CAAE,EAAE,OAAO,CAAC,GAEhBA,EAAE,CAAC,EAAI,MACTA,EAAI,CAAE,CAAE,EAAE,OAAOA,CAAC,GAEpB,EAAIN,GAAU,CAAC,EACfM,EAAIN,GAAUM,CAAC,EAER,CAACA,EAAE,CAAC,GAAK,EAAEA,EAAE,CAAC,EAAI,MACvBA,EAAIA,EAAE,MAAM,CAAC,EAEf,IAAIE,EAAM,CAAE,CAAK,EACjBD,GAAgBC,EAAK,EAAE,MAAM,EAC7BA,EAAMA,EAAI,OAAO,CAAC,EAClBA,EAAI,KAAK,CAAI,EACbD,GAAgBC,EAAKF,EAAE,MAAM,EAC7B,IAAII,EAAWF,EAAI,OAAOF,CAAC,EACvBK,EAAM,CAAE,EAAK,EACjB,OAAAJ,GAAgBI,EAAKD,EAAS,MAAM,EACpCC,EAAMA,EAAI,OAAOD,CAAQ,EAClBxB,GAAM,OAAOyB,EAAKrB,CAAG,CAC9B,ICrKA,IAAAsB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAW,KACXC,GAAQ,KACRC,GAAS,KACTC,GAAO,KACPC,GAASH,GAAM,OAEfI,GAAU,KACVC,GAAY,KAEhB,SAASC,GAAGC,EAAS,CACnB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAGC,CAAO,EAGnB,OAAOA,GAAY,WACrBJ,GAAO,OAAO,UAAU,eAAe,KAAKF,GAAQM,CAAO,EACzD,iBAAmBA,CAAO,EAE5BA,EAAUN,GAAOM,CAAO,GAItBA,aAAmBN,GAAO,cAC5BM,EAAU,CAAE,MAAOA,CAAQ,GAE7B,KAAK,MAAQA,EAAQ,MAAM,MAC3B,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,GAAK,KAAK,EAAE,MAAM,CAAC,EACxB,KAAK,EAAI,KAAK,MAAM,EAGpB,KAAK,EAAIA,EAAQ,MAAM,EACvB,KAAK,EAAE,WAAWA,EAAQ,MAAM,EAAE,UAAU,EAAI,CAAC,EAGjD,KAAK,KAAOA,EAAQ,MAAQA,EAAQ,MAAM,IAC5C,CACAV,GAAO,QAAUS,GAEjBA,GAAG,UAAU,QAAU,SAAiBC,EAAS,CAC/C,OAAO,IAAIH,GAAQ,KAAMG,CAAO,CAClC,EAEAD,GAAG,UAAU,eAAiB,SAAwBE,EAAMC,EAAK,CAC/D,OAAOL,GAAQ,YAAY,KAAMI,EAAMC,CAAG,CAC5C,EAEAH,GAAG,UAAU,cAAgB,SAAuBI,EAAKD,EAAK,CAC5D,OAAOL,GAAQ,WAAW,KAAMM,EAAKD,CAAG,CAC1C,EAEAH,GAAG,UAAU,WAAa,SAAoBC,EAAS,CAChDA,IACHA,EAAU,CAAC,GAcb,QAXII,EAAO,IAAIZ,GAAS,CACtB,KAAM,KAAK,KACX,KAAMQ,EAAQ,KACd,QAASA,EAAQ,SAAW,OAC5B,QAASA,EAAQ,SAAWL,GAAK,KAAK,KAAK,YAAY,EACvD,WAAYK,EAAQ,SAAWA,EAAQ,YAAc,OACrD,MAAO,KAAK,EAAE,QAAQ,CACxB,CAAC,EAEGK,EAAQ,KAAK,EAAE,WAAW,EAC1BC,EAAM,KAAK,EAAE,IAAI,IAAIf,GAAG,CAAC,CAAC,IACrB,CACP,IAAIU,EAAO,IAAIV,GAAGa,EAAK,SAASC,CAAK,CAAC,EACtC,GAAI,EAAAJ,EAAK,IAAIK,CAAG,EAAI,GAGpB,OAAAL,EAAK,MAAM,CAAC,EACL,KAAK,eAAeA,CAAI,CACjC,CACF,EAEAF,GAAG,UAAU,aAAe,SAAsBQ,EAAKC,EAAW,CAChE,IAAIC,EAAQF,EAAI,WAAW,EAAI,EAAI,KAAK,EAAE,UAAU,EAGpD,OAFIE,EAAQ,IACVF,EAAMA,EAAI,MAAME,CAAK,GACnB,CAACD,GAAaD,EAAI,IAAI,KAAK,CAAC,GAAK,EAC5BA,EAAI,IAAI,KAAK,CAAC,EAEdA,CACX,EAEAR,GAAG,UAAU,KAAO,SAAcQ,EAAKG,EAAKR,EAAKF,EAAS,CACpD,OAAOE,GAAQ,WACjBF,EAAUE,EACVA,EAAM,MAEHF,IACHA,EAAU,CAAC,GAEbU,EAAM,KAAK,eAAeA,EAAKR,CAAG,EAClCK,EAAM,KAAK,aAAa,IAAIhB,GAAGgB,EAAK,EAAE,CAAC,EAqBvC,QAlBIF,EAAQ,KAAK,EAAE,WAAW,EAC1BM,EAAOD,EAAI,WAAW,EAAE,QAAQ,KAAML,CAAK,EAG3CO,EAAQL,EAAI,QAAQ,KAAMF,CAAK,EAG/BD,EAAO,IAAIZ,GAAS,CACtB,KAAM,KAAK,KACX,QAASmB,EACT,MAAOC,EACP,KAAMZ,EAAQ,KACd,QAASA,EAAQ,SAAW,MAC9B,CAAC,EAGGa,EAAM,KAAK,EAAE,IAAI,IAAItB,GAAG,CAAC,CAAC,EAErBuB,EAAO,GAAKA,IAAQ,CAC3B,IAAIC,EAAIf,EAAQ,EACdA,EAAQ,EAAEc,CAAI,EACd,IAAIvB,GAAGa,EAAK,SAAS,KAAK,EAAE,WAAW,CAAC,CAAC,EAE3C,GADAW,EAAI,KAAK,aAAaA,EAAG,EAAI,EACzB,EAAAA,EAAE,KAAK,CAAC,GAAK,GAAKA,EAAE,IAAIF,CAAG,GAAK,GAGpC,KAAIG,EAAK,KAAK,EAAE,IAAID,CAAC,EACrB,GAAI,CAAAC,EAAG,WAAW,EAGlB,KAAIC,EAAMD,EAAG,KAAK,EACdE,EAAID,EAAI,KAAK,KAAK,CAAC,EACvB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIC,EAAIJ,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIG,EAAE,IAAIR,EAAI,WAAW,CAAC,EAAE,KAAKH,CAAG,CAAC,EAE5D,GADAY,EAAIA,EAAE,KAAK,KAAK,CAAC,EACbA,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIC,GAAiBJ,EAAG,KAAK,EAAE,MAAM,EAAI,EAAI,IACxBC,EAAI,IAAIC,CAAC,IAAM,EAAI,EAAI,GAG5C,OAAIlB,EAAQ,WAAamB,EAAE,IAAI,KAAK,EAAE,EAAI,IACxCA,EAAI,KAAK,EAAE,IAAIA,CAAC,EAChBC,GAAiB,GAGZ,IAAItB,GAAU,CAAE,EAAGoB,EAAG,EAAGC,EAAG,cAAeC,CAAc,CAAC,KACnE,CACF,EAEArB,GAAG,UAAU,OAAS,SAAgBQ,EAAKc,EAAWX,EAAKR,EAAK,CAC9DK,EAAM,KAAK,aAAa,IAAIhB,GAAGgB,EAAK,EAAE,CAAC,EACvCG,EAAM,KAAK,cAAcA,EAAKR,CAAG,EACjCmB,EAAY,IAAIvB,GAAUuB,EAAW,KAAK,EAG1C,IAAIH,EAAIG,EAAU,EACdF,EAAIE,EAAU,EAGlB,GAFIH,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,GAElCC,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,EACpC,MAAO,GAGT,IAAIG,EAAOH,EAAE,KAAK,KAAK,CAAC,EACpBI,EAAKD,EAAK,IAAIf,CAAG,EAAE,KAAK,KAAK,CAAC,EAC9BiB,EAAKF,EAAK,IAAIJ,CAAC,EAAE,KAAK,KAAK,CAAC,EAC5BO,EAEJ,OAAK,KAAK,MAAM,eAWhBA,EAAI,KAAK,EAAE,QAAQF,EAAIb,EAAI,UAAU,EAAGc,CAAE,EACtCC,EAAE,WAAW,EACR,GAKFA,EAAE,OAAOP,CAAC,IAjBfO,EAAI,KAAK,EAAE,OAAOF,EAAIb,EAAI,UAAU,EAAGc,CAAE,EACrCC,EAAE,WAAW,EACR,GAEFA,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIP,CAAC,IAAM,EAc5C,EAEAnB,GAAG,UAAU,cAAgB,SAASQ,EAAKc,EAAWK,EAAGxB,EAAK,CAC5DN,IAAQ,EAAI8B,KAAOA,EAAG,0CAA0C,EAChEL,EAAY,IAAIvB,GAAUuB,EAAWnB,CAAG,EAExC,IAAIyB,EAAI,KAAK,EACTC,EAAI,IAAIrC,GAAGgB,CAAG,EACdW,EAAIG,EAAU,EACdF,EAAIE,EAAU,EAGdQ,EAASH,EAAI,EACbI,EAAcJ,GAAK,EACvB,GAAIR,EAAE,IAAI,KAAK,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,GAAK,GAAKY,EACjD,MAAM,IAAI,MAAM,sCAAsC,EAGpDA,EACFZ,EAAI,KAAK,MAAM,WAAWA,EAAE,IAAI,KAAK,MAAM,CAAC,EAAGW,CAAM,EAErDX,EAAI,KAAK,MAAM,WAAWA,EAAGW,CAAM,EAErC,IAAIE,EAAOV,EAAU,EAAE,KAAKM,CAAC,EACzBK,EAAKL,EAAE,IAAIC,CAAC,EAAE,IAAIG,CAAI,EAAE,KAAKJ,CAAC,EAC9BM,EAAKd,EAAE,IAAIY,CAAI,EAAE,KAAKJ,CAAC,EAI3B,OAAO,KAAK,EAAE,OAAOK,EAAId,EAAGe,CAAE,CAChC,EAEAlC,GAAG,UAAU,oBAAsB,SAAS6B,EAAGP,EAAWa,EAAGhC,EAAK,CAEhE,GADAmB,EAAY,IAAIvB,GAAUuB,EAAWnB,CAAG,EACpCmB,EAAU,gBAAkB,KAC9B,OAAOA,EAAU,cAEnB,QAASc,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIC,EACJ,GAAI,CACFA,EAAS,KAAK,cAAcR,EAAGP,EAAWc,CAAC,CAC7C,MAAY,CACV,QACF,CAEA,GAAIC,EAAO,GAAGF,CAAC,EACb,OAAOC,CACX,CACA,MAAM,IAAI,MAAM,sCAAsC,CACxD,IClPA,IAAAE,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAaF,GAAM,WACnBG,GAAiBH,GAAM,eAW3B,SAASI,GAAQC,EAAOC,EAAQ,CAC9B,KAAK,MAAQD,EACb,KAAK,QAAUH,GAAWI,EAAO,MAAM,EACnCD,EAAM,QAAQC,EAAO,GAAG,EAC1B,KAAK,KAAOA,EAAO,IAEnB,KAAK,UAAYJ,GAAWI,EAAO,GAAG,CAC1C,CAEAF,GAAQ,WAAa,SAAoBC,EAAOE,EAAK,CACnD,OAAIA,aAAeH,GACVG,EACF,IAAIH,GAAQC,EAAO,CAAE,IAAKE,CAAI,CAAC,CACxC,EAEAH,GAAQ,WAAa,SAAoBC,EAAOG,EAAQ,CACtD,OAAIA,aAAkBJ,GACbI,EACF,IAAIJ,GAAQC,EAAO,CAAE,OAAQG,CAAO,CAAC,CAC9C,EAEAJ,GAAQ,UAAU,OAAS,UAAkB,CAC3C,OAAO,KAAK,OACd,EAEAD,GAAeC,GAAS,WAAY,UAAoB,CACtD,OAAO,KAAK,MAAM,YAAY,KAAK,IAAI,CAAC,CAC1C,CAAC,EAEDD,GAAeC,GAAS,MAAO,UAAe,CAC5C,OAAI,KAAK,UACA,KAAK,MAAM,YAAY,KAAK,SAAS,EACvC,KAAK,MAAM,EAAE,IAAI,KAAK,KAAK,CAAC,CACrC,CAAC,EAEDD,GAAeC,GAAS,YAAa,UAAqB,CACxD,IAAIC,EAAQ,KAAK,MACbI,EAAO,KAAK,KAAK,EACjBC,EAASL,EAAM,eAAiB,EAEhCM,EAAIF,EAAK,MAAM,EAAGJ,EAAM,cAAc,EAC1C,OAAAM,EAAE,CAAC,GAAK,IACRA,EAAED,CAAM,GAAK,IACbC,EAAED,CAAM,GAAK,GAENC,CACT,CAAC,EAEDR,GAAeC,GAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,UAAU,KAAK,UAAU,CAAC,CAC9C,CAAC,EAEDD,GAAeC,GAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,OAAO,CACxD,CAAC,EAEDD,GAAeC,GAAS,gBAAiB,UAAyB,CAChE,OAAO,KAAK,KAAK,EAAE,MAAM,KAAK,MAAM,cAAc,CACpD,CAAC,EAEDA,GAAQ,UAAU,KAAO,SAAcQ,EAAS,CAC9C,OAAAX,GAAO,KAAK,QAAS,yBAAyB,EACvC,KAAK,MAAM,KAAKW,EAAS,IAAI,CACtC,EAEAR,GAAQ,UAAU,OAAS,SAAgBQ,EAASC,EAAK,CACvD,OAAO,KAAK,MAAM,OAAOD,EAASC,EAAK,IAAI,CAC7C,EAEAT,GAAQ,UAAU,UAAY,SAAmBU,EAAK,CACpD,OAAAb,GAAO,KAAK,QAAS,wBAAwB,EACtCD,GAAM,OAAO,KAAK,OAAO,EAAGc,CAAG,CACxC,EAEAV,GAAQ,UAAU,UAAY,SAAmBU,EAAK,CACpD,OAAOd,GAAM,OAAO,KAAK,SAAS,EAAGc,CAAG,CAC1C,EAEAf,GAAO,QAAUK,KC9FjB,IAAAW,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAiBF,GAAM,eACvBG,GAAaH,GAAM,WAUvB,SAASI,GAAUC,EAAOC,EAAK,CAC7B,KAAK,MAAQD,EAET,OAAOC,GAAQ,WACjBA,EAAMH,GAAWG,CAAG,GAElB,MAAM,QAAQA,CAAG,IACnBA,EAAM,CACJ,EAAGA,EAAI,MAAM,EAAGD,EAAM,cAAc,EACpC,EAAGC,EAAI,MAAMD,EAAM,cAAc,CACnC,GAGFJ,GAAOK,EAAI,GAAKA,EAAI,EAAG,0BAA0B,EAE7CD,EAAM,QAAQC,EAAI,CAAC,IACrB,KAAK,GAAKA,EAAI,GACZA,EAAI,aAAaP,KACnB,KAAK,GAAKO,EAAI,GAEhB,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,SACpD,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,QACtD,CAEAJ,GAAeE,GAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC,CAC7C,CAAC,EAEDF,GAAeE,GAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,YAAY,KAAK,SAAS,CAAC,CAC/C,CAAC,EAEDF,GAAeE,GAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,YAAY,KAAK,EAAE,CAAC,CACxC,CAAC,EAEDF,GAAeE,GAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,UAAU,KAAK,EAAE,CAAC,CACtC,CAAC,EAEDA,GAAU,UAAU,QAAU,UAAmB,CAC/C,OAAO,KAAK,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,CAC/C,EAEAA,GAAU,UAAU,MAAQ,UAAiB,CAC3C,OAAOJ,GAAM,OAAO,KAAK,QAAQ,EAAG,KAAK,EAAE,YAAY,CACzD,EAEAF,GAAO,QAAUM,KChEjB,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAS,KACTC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAaF,GAAM,WACnBG,GAAU,KACVC,GAAY,KAEhB,SAASC,GAAMC,EAAO,CAGpB,GAFAL,GAAOK,IAAU,UAAW,iCAAiC,EAEzD,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAMC,CAAK,EAExBA,EAAQP,GAAOO,CAAK,EAAE,MACtB,KAAK,MAAQA,EACb,KAAK,EAAIA,EAAM,EACf,KAAK,EAAE,WAAWA,EAAM,EAAE,UAAU,EAAI,CAAC,EAEzC,KAAK,WAAaA,EAAM,MAAM,EAAE,YAChC,KAAK,eAAiB,KAAK,KAAKA,EAAM,EAAE,UAAU,EAAI,CAAC,EACvD,KAAK,KAAOR,GAAK,MACnB,CAEAD,GAAO,QAAUQ,GAOjBA,GAAM,UAAU,KAAO,SAAcE,EAASC,EAAQ,CACpDD,EAAUL,GAAWK,CAAO,EAC5B,IAAIE,EAAM,KAAK,cAAcD,CAAM,EAC/BE,EAAI,KAAK,QAAQD,EAAI,cAAc,EAAGF,CAAO,EAC7CI,EAAI,KAAK,EAAE,IAAID,CAAC,EAChBE,EAAW,KAAK,YAAYD,CAAC,EAC7BE,EAAK,KAAK,QAAQD,EAAUH,EAAI,SAAS,EAAGF,CAAO,EACpD,IAAIE,EAAI,KAAK,CAAC,EACb,EAAIC,EAAE,IAAIG,CAAE,EAAE,KAAK,KAAK,MAAM,CAAC,EACnC,OAAO,KAAK,cAAc,CAAE,EAAGF,EAAG,EAAM,SAAUC,CAAS,CAAC,CAC9D,EAQAP,GAAM,UAAU,OAAS,SAAgBE,EAASO,EAAKC,EAAK,CAC1DR,EAAUL,GAAWK,CAAO,EAC5BO,EAAM,KAAK,cAAcA,CAAG,EAC5B,IAAIL,EAAM,KAAK,cAAcM,CAAG,EAC5B,EAAI,KAAK,QAAQD,EAAI,SAAS,EAAGL,EAAI,SAAS,EAAGF,CAAO,EACxDS,EAAK,KAAK,EAAE,IAAIF,EAAI,EAAE,CAAC,EACvBG,EAAUH,EAAI,EAAE,EAAE,IAAIL,EAAI,IAAI,EAAE,IAAI,CAAC,CAAC,EAC1C,OAAOQ,EAAQ,GAAGD,CAAE,CACtB,EAEAX,GAAM,UAAU,QAAU,UAAmB,CAE3C,QADIP,EAAO,KAAK,KAAK,EACZoB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCpB,EAAK,OAAO,UAAUoB,CAAC,CAAC,EAC1B,OAAOlB,GAAM,UAAUF,EAAK,OAAO,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CACzD,EAEAO,GAAM,UAAU,cAAgB,SAAuBU,EAAK,CAC1D,OAAOZ,GAAQ,WAAW,KAAMY,CAAG,CACrC,EAEAV,GAAM,UAAU,cAAgB,SAAuBG,EAAQ,CAC7D,OAAOL,GAAQ,WAAW,KAAMK,CAAM,CACxC,EAEAH,GAAM,UAAU,cAAgB,SAAuBS,EAAK,CAC1D,OAAIA,aAAeV,GACVU,EACF,IAAIV,GAAU,KAAMU,CAAG,CAChC,EAUAT,GAAM,UAAU,YAAc,SAAqBc,EAAO,CACxD,IAAIC,EAAMD,EAAM,KAAK,EAAE,QAAQ,KAAM,KAAK,cAAc,EACxD,OAAAC,EAAI,KAAK,eAAiB,CAAC,GAAKD,EAAM,KAAK,EAAE,MAAM,EAAI,IAAO,EACvDC,CACT,EAEAf,GAAM,UAAU,YAAc,SAAqBgB,EAAO,CACxDA,EAAQrB,GAAM,WAAWqB,CAAK,EAE9B,IAAIC,EAASD,EAAM,OAAS,EACxBE,EAASF,EAAM,MAAM,EAAGC,CAAM,EAAE,OAAOD,EAAMC,CAAM,EAAI,IAAK,EAC5DE,GAAUH,EAAMC,CAAM,EAAI,OAAU,EAEpCG,EAAIzB,GAAM,UAAUuB,CAAM,EAC9B,OAAO,KAAK,MAAM,WAAWE,EAAGD,CAAM,CACxC,EAEAnB,GAAM,UAAU,UAAY,SAAmBqB,EAAK,CAClD,OAAOA,EAAI,QAAQ,KAAM,KAAK,cAAc,CAC9C,EAEArB,GAAM,UAAU,UAAY,SAAmBgB,EAAO,CACpD,OAAOrB,GAAM,UAAUqB,CAAK,CAC9B,EAEAhB,GAAM,UAAU,QAAU,SAAiBsB,EAAK,CAC9C,OAAOA,aAAe,KAAK,UAC7B,ICrHA,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAWD,GAEfC,GAAS,QAAU,KAA2B,QAC9CA,GAAS,MAAQ,KACjBA,GAAS,KAAO,KAChBA,GAAS,MAAQ,KACjBA,GAAS,OAAS,KAGlBA,GAAS,GAAK,KACdA,GAAS,MAAQ,OCZV,IAAMC,GAAmB,CAC5B,CACI,OAAQ,CAAC,EACT,gBAAiB,aACjB,KAAM,aACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,SACN,KAAM,SACV,CACJ,EACA,KAAM,mBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,wBACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,SACN,KAAM,SACV,CACJ,EACA,KAAM,8BACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,IACN,KAAM,SACV,CACJ,EACA,KAAM,yBACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,iBACN,KAAM,SACV,CACJ,EACA,KAAM,+BACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,oBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,aACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,wBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,kBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,8BACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,CACJ,EACA,KAAM,+BACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CAAC,EACT,KAAM,sBACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,SACd,KAAM,UACN,KAAM,QACV,CACJ,EACA,KAAM,cACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACV,CACJ,EACA,KAAM,2BACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,iBACN,KAAM,SACV,CACJ,EACA,KAAM,WACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,4BACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,eACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,SACN,KAAM,QACV,EACA,CACI,aAAc,SACd,KAAM,OACN,KAAM,QACV,EACA,CACI,aAAc,SACd,KAAM,UACN,KAAM,QACV,EACA,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,oBACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,aAAc,YACd,KAAM,aACN,KAAM,WACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,QACN,KAAM,SACV,EACA,CACI,aAAc,QACd,KAAM,OACN,KAAM,OACV,CACJ,EACA,KAAM,UACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,YACd,KAAM,OACN,KAAM,WACV,EACA,CACI,aAAc,YACd,KAAM,QACN,KAAM,WACV,EACA,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,CACJ,EACA,KAAM,eACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,KACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,QACN,KAAM,SACV,EACA,CACI,aAAc,QACd,KAAM,OACN,KAAM,OACV,EACA,CACI,aAAc,UACd,KAAM,aACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,cACN,KAAM,SACV,EACA,CACI,aAAc,QACd,KAAM,YACN,KAAM,OACV,CACJ,EACA,KAAM,2BACN,QAAS,CAAC,EACV,gBAAiB,UACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACV,CACJ,EACA,KAAM,aACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,YACd,KAAM,GACN,KAAM,WACV,EACA,CACI,aAAc,YACd,KAAM,GACN,KAAM,WACV,EACA,CACI,aAAc,QACd,KAAM,GACN,KAAM,OACV,CACJ,EACA,KAAM,yBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,QACd,KAAM,GACN,KAAM,OACV,CACJ,EACA,KAAM,oBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,EACA,CACI,aAAc,QACd,KAAM,GACN,KAAM,OACV,CACJ,EACA,KAAM,mBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,QACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,gBACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,SACd,KAAM,cACN,KAAM,QACV,CACJ,EACA,KAAM,oBACN,QAAS,CACL,CACI,aAAc,OACd,KAAM,GACN,KAAM,MACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,oBACN,KAAM,SACV,EACA,CACI,aAAc,QACd,KAAM,OACN,KAAM,OACV,CACJ,EACA,KAAM,mBACN,QAAS,CAAC,EACV,gBAAiB,UACjB,KAAM,UACV,EACA,CACI,gBAAiB,UACjB,KAAM,SACV,CACJ,EAEaC,GAA0B,CACnC,CACI,OAAQ,CAAC,EACT,gBAAiB,aACjB,KAAM,aACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,+BACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,aACN,KAAM,SACV,CACJ,EACA,KAAM,mCACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,SACN,KAAM,SACV,CACJ,EACA,KAAM,mBACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,iBACN,KAAM,SACV,CACJ,EACA,KAAM,+BACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,oBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,aACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,wBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,kBACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,8BACN,KAAM,OACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,CACJ,EACA,KAAM,+BACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,yBACd,KAAM,UACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACV,CACJ,EACA,KAAM,iBACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,SACd,KAAM,UACN,KAAM,QACV,CACJ,EACA,KAAM,cACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,oBACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,eACN,KAAM,SACV,CACJ,EACA,KAAM,mBACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACV,CACJ,EACA,KAAM,cACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACV,EACA,CACI,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACV,CACJ,EACA,KAAM,cACN,KAAM,OACV,EACA,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,iBACN,KAAM,SACV,CACJ,EACA,KAAM,WACN,KAAM,OACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,qBACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,4BACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,wBACN,QAAS,CACL,CACI,aAAc,yBACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,QACN,KAAM,SACV,CACJ,EACA,KAAM,gBACN,QAAS,CACL,CACI,aAAc,yBACd,KAAM,MACN,KAAM,SACV,CACJ,EACA,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,QACN,KAAM,SACV,CACJ,EACA,KAAM,oBACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,CACJ,EACA,KAAM,eACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACV,CACJ,EACA,KAAM,YACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACV,CACJ,EACA,KAAM,UACN,QAAS,CACL,CACI,aAAc,OACd,KAAM,GACN,KAAM,MACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,aACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CAAC,EACT,KAAM,gBACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACV,CACJ,EACA,gBAAiB,OACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,qBACN,KAAM,SACV,CACJ,EACA,KAAM,eACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACV,EACA,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACV,EACA,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACV,CACJ,EACA,KAAM,aACN,QAAS,CAAC,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AMC,GAAO,CACX,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,6BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,2BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,WACN,QAAS,CACP,CACE,aAAc,QACd,KAAM,GACN,KAAM,OACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,OACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,SACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,CACF,EAEaC,GAAN,KAAqB,CAE1B,OAAO,iBAAkC,CACvC,OAAO,IAAIF,GAAUC,EAAI,CAC3B,CACA,OAAO,QAAQE,EAAiBC,EAAuC,CACrE,OAAO,IAAIL,GAASI,EAASF,GAAMG,CAAM,CAC3C,CACF,EARaF,GACK,IAAMD,GC9TxB,OAAS,YAAAI,GAAU,aAAAC,OAAsC,SAMzD,IAAMC,GAAO,CACX,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,CACF,EAEaC,GAAN,KAAsB,CAE3B,OAAO,iBAAmC,CACxC,OAAO,IAAIF,GAAUC,EAAI,CAC3B,CACA,OAAO,QAAQE,EAAiBC,EAAwC,CACtE,OAAO,IAAIL,GAASI,EAASF,GAAMG,CAAM,CAC3C,CACF,EARaF,GACK,IAAMD,GCjMxB,OAAS,YAAAI,GAAU,aAAAC,OAAsC,SAMzD,IAAMC,GAAO,CACX,CACE,OAAQ,CAAC,EACT,KAAM,+BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,KAAM,mCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,MACN,KAAM,SACR,CACF,EACA,KAAM,mBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,6BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,2BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,MACN,KAAM,SACR,CACF,EACA,KAAM,kBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,gBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,gBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,SACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,oBACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,eACN,KAAM,SACR,CACF,EACA,KAAM,mBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,cACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,cACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,qBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,MACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,WACN,QAAS,CACP,CACE,aAAc,QACd,KAAM,GACN,KAAM,OACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,OACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,OACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,QACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,SACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,qBACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,aACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,SACd,KAAM,cACN,KAAM,QACR,CACF,EACA,KAAM,oBACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,SACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,eACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,EACA,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,EACA,CACE,aAAc,QACd,KAAM,GACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,UACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,CACF,EAEaC,GAAN,KAAqB,CAE1B,OAAO,iBAAkC,CACvC,OAAO,IAAIF,GAAUC,EAAI,CAC3B,CACA,OAAO,QAAQE,EAAiBC,EAAuC,CACrE,OAAO,IAAIL,GAASI,EAASF,GAAMG,CAAM,CAC3C,CACF,EARaF,GACK,IAAMD,GCtsBxB,OAAS,YAAAI,GAAU,aAAAC,OAAsC,SAMzD,IAAMC,GAAO,CACX,CACE,OAAQ,CAAC,EACT,KAAM,+BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,KAAM,mCACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,+BACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,wBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,8BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,IACN,KAAM,SACR,CACF,EACA,KAAM,yBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,MACN,KAAM,SACR,CACF,EACA,KAAM,0BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,6BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,2BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,0BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,SACd,KAAM,QACN,KAAM,QACR,CACF,EACA,KAAM,sBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,2BACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,gBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,gBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,eACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,qBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,QACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,iCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,SACd,KAAM,MACN,KAAM,QACR,CACF,EACA,KAAM,gBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,wBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,eACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,KAAM,kBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CAAC,EACT,KAAM,sBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,SACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,oBACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,eACN,KAAM,SACR,CACF,EACA,KAAM,mBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,cACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,cACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,aACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,qBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,mBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,OACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,SACd,KAAM,MACN,KAAM,QACR,CACF,EACA,KAAM,cACN,QAAS,CACP,CACE,WAAY,CACV,CACE,aAAc,SACd,KAAM,OACN,KAAM,QACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,aAAc,mCACd,KAAM,GACN,KAAM,OACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,QACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,gBACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,gBACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,kBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,WACN,QAAS,CACP,CACE,aAAc,QACd,KAAM,GACN,KAAM,OACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,IACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,IACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,IACN,KAAM,SACR,CACF,EACA,KAAM,gBACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,eACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,SACN,KAAM,QACR,EACA,CACE,aAAc,SACd,KAAM,OACN,KAAM,QACR,EACA,CACE,aAAc,SACd,KAAM,UACN,KAAM,QACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,oBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,aACN,KAAM,WACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,8BACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,0BACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,OACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,SACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,QACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,SACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,IACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,IACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,IACN,KAAM,SACR,CACF,EACA,KAAM,SACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,qBACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,aACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,SACd,KAAM,cACN,KAAM,QACR,CACF,EACA,KAAM,oBACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,SACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,GACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,UACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,UACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,CACF,EAEaC,GAAN,KAAqB,CAE1B,OAAO,iBAAkC,CACvC,OAAO,IAAIF,GAAUC,EAAI,CAC3B,CACA,OAAO,QAAQE,EAAiBC,EAAuC,CACrE,OAAO,IAAIL,GAASI,EAASF,GAAMG,CAAM,CAC3C,CACF,EARaF,GACK,IAAMD,GC9uCxB,OAAS,YAAAI,GAAU,aAAAC,OAAsC,SAMzD,IAAMC,GAAO,CACX,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,cACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,QACd,KAAM,UACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,QAAS,CAAC,EACV,gBAAiB,aACjB,KAAM,UACR,C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","names":["require_sha3","__commonJSMin","exports","module","root","NODE_JS","COMMON_JS","HEX_CHARS","SHAKE_PADDING","KECCAK_PADDING","PADDING","SHIFT","RC","BITS","SHAKE_BITS","OUTPUT_TYPES","createOutputMethod","bits","padding","outputType","message","Keccak","createShakeOutputMethod","outputBits","createMethod","method","i","type","createShakeMethod","algorithms","methods","methodNames","algorithm","j","methodName","notString","length","blocks","byteCount","blockCount","index","s","code","f","outputBlocks","extraBytes","hex","block","bytes","buffer","array","offset","h","l","n","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","require_util","__commonJSMin","exports","module","ERROR_MSG_INPUT","normalizeInput","input","ret","toHex","bytes","n","uint32ToHex","val","debugPrint","label","arr","size","msg","i","testSpeed","hashFn","N","M","startMs","genMs","hashHex","hashMs","ms","require_blake2b","__commonJSMin","exports","module","util","ADD64AA","v","a","b","o0","o1","ADD64AC","b0","b1","B2B_GET32","arr","i","B2B_G","c","d","ix","iy","x0","m","x1","y0","y1","xor0","xor1","BLAKE2B_IV32","SIGMA8","SIGMA82","x","blake2bCompress","ctx","last","parameterBlock","blake2bInit","outlen","key","salt","personal","blake2bUpdate","input","blake2bFinal","out","blake2b","blake2bHex","output","require_blake2s","__commonJSMin","exports","module","util","B2S_GET32","v","i","B2S_G","a","b","c","d","x","y","ROTR32","BLAKE2S_IV","SIGMA","m","blake2sCompress","ctx","last","blake2sInit","outlen","key","keylen","blake2sUpdate","input","blake2sFinal","out","blake2s","blake2sHex","output","require_blakejs","__commonJSMin","exports","module","b2b","b2s","require_bn","__commonJSMin","exports","module","assert","val","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","num","left","right","start","i","j","w","off","parseHex4Bits","string","index","c","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","b","len","limbLen","limbPow","total","mod","word","pow","dest","move","src","size","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","ret","length","allocate","ArrayType","byteLength","reqLength","res","postfix","position","shift","t","hi","toBitArray","bit","wbit","width","bytesNeeded","bitsLeft","a","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","x","y","N","l","rb","rbt","rws","iws","rtws","itws","s","rtwdf","itwdf","p","rtwdf_","itwdf_","re","ie","ro","io","rx","m","odd","ws","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","isNegNum","q","bits","carryMask","newCarry","hint","extended","h","mask","maskedWords","mode","bhi","bhiBits","diff","qj","positive","div","dm","half","r2","acc","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","name","tmp","rlen","input","K256","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","u","bn_js_1","__importDefault","encode","input","output","buf","encodeLength","inputBuf","toBuffer","exports","safeParseInt","v","base","len","offset","hexLength","intToHex","lLength","firstByte","decode","stream","inputBuffer","decoded","_decode","getLength","llength","length","data","innerRemainder","d","totalLength","isHexPrefixed","str","stripHexPrefix","integer","hex","padToEven","a","intToBuffer","require_package","__commonJSMin","exports","module","require_bn","__commonJSMin","exports","module","assert","val","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","num","left","right","start","i","j","w","off","parseHex4Bits","string","index","c","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","len","limbLen","limbPow","total","mod","word","pow","dest","size","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","ret","length","ArrayType","byteLength","reqLength","littleEndian","res","b","q","t","hi","toBitArray","bit","wbit","width","a","bytesNeeded","bitsLeft","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","x","y","N","l","rb","rbt","rws","iws","rtws","itws","s","rtwdf","itwdf","p","rtwdf_","itwdf_","re","ie","ro","io","rx","n","m","odd","ws","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","bits","carryMask","newCarry","hint","extended","h","mask","maskedWords","shift","mode","bhi","bhiBits","diff","qj","positive","div","dm","half","r2","acc","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","name","tmp","rlen","input","K256","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","u","require_minimalistic_assert","__commonJSMin","exports","module","assert","val","msg","l","require_utils","__commonJSMin","exports","utils","toArray","msg","enc","res","c","hi","lo","zero2","word","toHex","i","arr","require_utils","__commonJSMin","exports","utils","BN","minAssert","minUtils","getNAF","num","w","bits","naf","ws","k","i","z","mod","getJSF","k1","k2","jsf","d1","d2","m8","m14","m24","u1","u2","cachedProperty","obj","name","computer","key","parseBytes","bytes","intFromLE","require_brorand","__commonJSMin","exports","module","r","len","Rand","rand","n","res","arr","crypto","require_base","__commonJSMin","exports","module","BN","utils","getNAF","getJSF","assert","BaseCurve","type","conf","adjustCount","p","k","doubles","naf","I","repr","j","nafW","l","a","b","i","w","nafPoints","wnd","acc","z","defW","points","coeffs","len","jacobianResult","wndWidth","max","comb","index","jsf","ja","jb","tmp","zero","BasePoint","curve","bytes","enc","res","compact","x","power","precomputed","step","dbl","require_inherits_browser","__commonJSMin","exports","module","ctor","superCtor","TempCtor","require_inherits","__commonJSMin","exports","module","util","require_short","__commonJSMin","exports","module","utils","BN","inherits","Base","assert","ShortCurve","conf","beta","lambda","betas","lambdas","basis","vec","num","red","tinv","ntinv","s","l1","l2","aprxSqrt","u","v","x1","y1","x2","y2","a0","b0","a1","b1","a2","b2","prevR","i","r","x","q","y","len1","len2","k","v1","v2","c1","c2","p1","p2","q1","q2","k1","k2","odd","isOdd","point","ax","rhs","points","coeffs","jacobianResult","npoints","ncoeffs","split","p","res","j","Point","curve","isRed","obj","pre","endoMul","obj2point","c","nx","ny","ys1","a","dyinv","_precompute","negate","JPoint","z","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h","h2","h3","nz","pow","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","xx","yy","yyyy","m","t","yyyy8","b","d","e","f","c8","delta","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","zz","mm","ee","yyu4","kbase","z3","pz3","zs","rx","xc","require_mont","__commonJSMin","exports","module","BN","inherits","Base","utils","MontCurve","conf","point","x","x2","rhs","y","Point","curve","z","bytes","enc","obj","a","aa","b","bb","c","nx","nz","p","diff","d","da","cb","k","t","bits","i","other","require_edwards","__commonJSMin","exports","module","utils","BN","inherits","Base","assert","EdwardsCurve","conf","num","x","y","z","t","odd","x2","rhs","lhs","y2","isOdd","point","Point","curve","obj","a","b","c","d","e","g","f","h","nx","ny","nt","nz","j","p","tmp","k","k1","k2","zi","other","rx","xc","require_curve","__commonJSMin","exports","curve","require_utils","__commonJSMin","exports","assert","inherits","isSurrogatePair","msg","i","toArray","enc","res","p","c","toHex","zero2","htonl","w","toHex32","endian","zero8","word","join32","start","end","len","k","split32","m","rotr32","b","rotl32","sum32","a","sum32_3","sum32_4","d","sum32_5","e","sum64","buf","pos","ah","al","bh","bl","lo","hi","sum64_hi","sum64_lo","sum64_4_hi","ch","cl","dh","dl","carry","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","num","r","rotr64_lo","shr64_hi","shr64_lo","require_common","__commonJSMin","exports","utils","assert","BlockHash","msg","enc","r","i","len","bytes","k","res","t","require_common","__commonJSMin","exports","utils","rotr32","ft_1","s","x","y","z","ch32","p32","maj32","s0_256","s1_256","g0_256","g1_256","require__","__commonJSMin","exports","module","utils","common","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","msg","start","W","i","a","c","d","e","s","t","enc","require__","__commonJSMin","exports","module","utils","common","shaCommon","assert","sum32","sum32_4","sum32_5","ch32","maj32","s0_256","s1_256","g0_256","g1_256","BlockHash","sha256_K","SHA256","msg","start","W","i","a","c","d","e","f","g","h","T1","T2","enc","require__","__commonJSMin","exports","module","utils","SHA256","SHA224","enc","require__","__commonJSMin","exports","module","utils","common","assert","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","BlockHash","sha512_K","SHA512","msg","start","W","i","c0_hi","g1_512_hi","c0_lo","g1_512_lo","c1_hi","c1_lo","c2_hi","g0_512_hi","c2_lo","g0_512_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","s1_512_hi","s1_512_lo","ch64_hi","ch64_lo","c4_hi","c4_lo","T1_hi","T1_lo","s0_512_hi","s0_512_lo","maj64_hi","maj64_lo","T2_hi","T2_lo","enc","xh","xl","yh","yl","zh","r","zl","require__","__commonJSMin","exports","module","utils","SHA512","SHA384","enc","require_sha","__commonJSMin","exports","require_ripemd","__commonJSMin","exports","utils","common","rotl32","sum32","sum32_3","sum32_4","BlockHash","RIPEMD160","msg","start","A","B","C","D","E","Ah","Bh","Ch","Dh","Eh","j","T","f","r","K","s","rh","Kh","sh","enc","x","y","z","require_hmac","__commonJSMin","exports","module","utils","assert","Hmac","hash","key","enc","i","msg","require_hash","__commonJSMin","exports","hash","require_secp256k1","__commonJSMin","exports","module","require_curves","__commonJSMin","exports","curves","hash","curve","utils","assert","PresetCurve","options","defineCurve","name","pre","require_hmac_drbg","__commonJSMin","exports","module","hash","utils","assert","HmacDRBG","options","entropy","nonce","pers","seed","i","kmac","entropyEnc","add","addEnc","len","enc","temp","res","require_key","__commonJSMin","exports","module","BN","utils","assert","KeyPair","ec","options","pub","enc","priv","compact","key","msg","signature","require_signature","__commonJSMin","exports","module","BN","utils","assert","Signature","options","enc","Position","getLength","buf","p","initial","octetLen","val","i","off","rmPadding","len","data","rlen","r","slen","s","constructLength","arr","octets","backHalf","res","require_ec","__commonJSMin","exports","module","BN","HmacDRBG","utils","curves","rand","assert","KeyPair","Signature","EC","options","priv","enc","pub","drbg","bytes","ns2","msg","truncOnly","delta","key","bkey","nonce","ns1","iter","k","kp","kpX","r","s","recoveryParam","signature","sinv","u1","u2","p","j","n","e","isYOdd","isSecondKey","rInv","s1","s2","Q","i","Qprime","require_key","__commonJSMin","exports","module","utils","assert","parseBytes","cachedProperty","KeyPair","eddsa","params","pub","secret","hash","lastIx","a","message","sig","enc","require_signature","__commonJSMin","exports","module","BN","utils","assert","cachedProperty","parseBytes","Signature","eddsa","sig","require_eddsa","__commonJSMin","exports","module","hash","curves","utils","assert","parseBytes","KeyPair","Signature","EDDSA","curve","message","secret","key","r","R","Rencoded","s_","sig","pub","SG","RplusAh","i","point","enc","bytes","lastIx","normed","xIsOdd","y","num","val","require_elliptic","__commonJSMin","exports","elliptic","SimpleAccountABI","SimpleAccountFactoryABI","Box","twitterSvg","googleSvg","jsx","GoogleLogo","boxSize","props","Box","googleSvg","Box","jsx","TwitterLogo","isDark","boxSize","props","Box","twitterSvg","Icon","jsx","VechainLogo","isDark","props","Image","jsx","VechainLogoHorizontal","isDark","props","Modal","ModalContent","ModalOverlay","useMediaQuery","useState","useEffect","Grid","GridItem","HStack","Icon","Image","ModalBody","ModalCloseButton","ModalFooter","ModalHeader","Stack","Text","useColorMode","useCrossAppAccounts","usePrivy","useLoginWithOAuth","useLoginWithPasskey","createContext","useContext","useState","useCallback","BasePrivyProvider","DAppKitProvider","usePrivy","useCrossAppAccounts","useConnex","useColorMode","usePrivy","useDappKitWallet","createContext","useContext","useState","useEffect","useCrossAppAccounts","usePrivy","useWallets","publicKeyToAddress","publicKey","address","keccak256","checksumAddress","toRlp","bytes","to","encodable","getEncodable","cursor","createCursor","bytesToHex","getEncodable","bytes","getEncodableList","x","getEncodableBytes","list","bodyLength","acc","sizeOfBodyLength","getSizeOfLength","cursor","encode","bytesOrHex","hexToBytes","sizeOfBytesLength","length","BaseError","hashAuthorization","parameters","chainId","contractAddress","nonce","to","hash","keccak256","concatHex","toRlp","numberToHex","hexToBytes","blobsToCommitments","parameters","kzg","to","blobs","x","hexToBytes","commitments","blob","bytesToHex","blobsToProofs","parameters","kzg","to","blobs","x","hexToBytes","commitments","proofs","i","blob","commitment","bytesToHex","sha256","value","to_","to","bytes","isHex","toBytes","toHex","commitmentToVersionedHash","parameters","commitment","version","to","versionedHash","sha256","bytesToHex","commitmentsToVersionedHashes","parameters","commitments","version","to","hashes","commitment","commitmentToVersionedHash","BlobSizeTooLargeError","BaseError","maxSize","size","EmptyBlobError","InvalidVersionedHashSizeError","hash","InvalidVersionedHashVersionError","version","toBlobs","parameters","to","data","hexToBytes","size_","size","EmptyBlobError","BlobSizeTooLargeError","blobs","active","position","blob","createCursor","bytes","x","bytesToHex","toBlobSidecars","parameters","data","kzg","to","blobs","toBlobs","commitments","blobsToCommitments","proofs","blobsToProofs","sidecars","i","getTransactionType","transaction","InvalidSerializableTransactionError","bytesRegex","integerRegex","InvalidDomainError","BaseError","domain","stringify","InvalidPrimaryTypeError","primaryType","types","InvalidStructTypeError","type","hashTypedData","parameters","domain","message","primaryType","types","getTypesForEIP712Domain","validateTypedData","parts","hashDomain","hashStruct","keccak256","concat","data","encoded","encodeData","encodedTypes","encodedValues","hashType","field","type","value","encodeField","encodeAbiParameters","encodedHashType","toHex","encodeType","result","unsortedDeps","findTypeDependencies","deps","name","t","primaryType_","results","parsedType","typeValuePairs","item","v","validateTypedData","parameters","domain","message","primaryType","types","validateData","struct","data","param","name","type","value","integerMatch","integerRegex","_type","base","size_","numberToHex","isAddress","InvalidAddressError","bytesMatch","bytesRegex","size","BytesSizeMismatchError","validateReference","InvalidDomainError","InvalidPrimaryTypeError","getTypesForEIP712Domain","validateReference","type","InvalidStructTypeError","presignMessagePrefix","toPrefixedMessage","message_","message","stringToHex","bytesToHex","prefix","presignMessagePrefix","size","concat","hashMessage","message","to_","keccak256","toPrefixedMessage","assertTransactionEIP7702","transaction","authorizationList","authorization","contractAddress","chainId","isAddress","InvalidAddressError","InvalidChainIdError","assertTransactionEIP1559","assertTransactionEIP4844","blobVersionedHashes","EmptyBlobError","hash","size_","size","version","hexToNumber","slice","InvalidVersionedHashSizeError","InvalidVersionedHashVersionError","maxPriorityFeePerGas","maxFeePerGas","to","maxUint256","FeeCapTooHighError","TipAboveFeeCapError","assertTransactionEIP2930","gasPrice","BaseError","assertTransactionLegacy","serializeAuthorizationList","authorizationList","serializedAuthorizationList","authorization","contractAddress","chainId","nonce","signature","toHex","toYParitySignatureArray","serializeAccessList","accessList","serializedAccessList","i","address","storageKeys","j","InvalidStorageKeySizeError","isAddress","InvalidAddressError","serializeTransaction","transaction","signature","type","getTransactionType","serializeTransactionEIP1559","serializeTransactionEIP2930","serializeTransactionEIP4844","serializeTransactionEIP7702","serializeTransactionLegacy","authorizationList","chainId","gas","nonce","to","value","maxFeePerGas","maxPriorityFeePerGas","accessList","data","assertTransactionEIP7702","serializedAccessList","serializeAccessList","serializedAuthorizationList","serializeAuthorizationList","concatHex","toRlp","toHex","toYParitySignatureArray","maxFeePerBlobGas","assertTransactionEIP4844","blobVersionedHashes","sidecars","blobs","x","bytesToHex","kzg","commitments","blobsToCommitments","commitmentsToVersionedHashes","proofs","blobsToProofs","toBlobSidecars","serializedTransaction","i","blob","commitment","proof","assertTransactionEIP1559","gasPrice","assertTransactionEIP2930","assertTransactionLegacy","v","InvalidLegacyVError","r","trim","s","signature_","yParity","serializeSignature","r","s","to","v","yParity","yParity_","signature","secp256k1","hexToBigInt","hexToBytes","ABIContract","Address","Clause","ThorClient","VeChainProvider","ProviderInternalBaseWallet","signerUtils","ThorClient","NETWORK_URL","THOR_CLIENT","DELEGATOR_URL","ACCOUNT_FACTORY_ADDRESSES","TOKEN_LOGOS","EXPLORER_URL","VECHAIN_PRIVY_APP_ID","WALLET_INFOS","SOCIAL_INFOS","picasso","humanAddress","address","charAtStart","charAtEnd","humanDomain","domain","lengthBefore","lengthAfter","before","after","getPicassoImage","base64","image","generatePrivateKey","toHex","secp256k1","toAccount","source","isAddress","InvalidAddressError","extraEntropy","sign","hash","privateKey","to","r","s","recovery","secp256k1","extraEntropy","signature","numberToHex","serializeSignature","experimental_signAuthorization","parameters","contractAddress","chainId","nonce","privateKey","to","signature","sign","hashAuthorization","signMessage","message","privateKey","sign","hashMessage","signTransaction","parameters","privateKey","transaction","serializer","serializeTransaction","signableTransaction","signature","sign","keccak256","signTypedData","parameters","privateKey","typedData","sign","hashTypedData","privateKeyToAccount","privateKey","options","nonceManager","publicKey","toHex","secp256k1","address","publicKeyToAddress","toAccount","hash","sign","authorization","experimental_signAuthorization","message","signMessage","transaction","serializer","signTransaction","typedData","signTypedData","randomTransactionUser","privateKey","generatePrivateKey","account","privateKeyToAccount","import_js_sha3","Buffer","keccak256","data","h","d","address","fromPublicKey","pub","keccak256","test","v","toChecksumed","addr","hash","checksumed","i","byte","import_blakejs","Buffer","blake2b256","data","ctx","blake","d","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","clone","configObject","div","convertBase","parseNumeric","P","BigNumber","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","ALPHABET","n","b","alphabet","c","caseChanged","e","i","isNum","len","str","x","intCheck","round","obj","p","v","isArray","maxOrMin","pow2_53","random53bitInt","dp","a","k","rand","decimal","toBaseOut","baseIn","baseOut","j","arr","arrL","sign","callerIsToString","d","r","xc","y","rm","toFixedPoint","coeffToString","multiply","base","m","temp","xlo","xhi","carry","klo","khi","compare","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","s","yc","bitFloor","format","id","c0","ne","toExponential","args","method","normalise","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","p1","p2","sd","ni","rd","pows10","out","half","isModExp","nIsBig","nIsNeg","nIsOdd","isOdd","t","xLTy","xe","ye","xcL","ycL","ylo","yhi","zc","sqrtBase","rep","g1","g2","groupSeparator","intPart","fractionPart","isNeg","intDigits","md","d0","d1","d2","exp","n0","n1","z","l","min","max","name","zs","bignumber_default","rlp","Buffer","RLP","profile","data","packed","pack","buf","unpack","ScalarKind","BufferKind","ctx","assert","NumericKind","maxBytes","isHex","isHexString","isDec","isDecString","bn","bignumber_default","hex","num","BlobKind","FixedBlobKind","bytes","encoder","decoder","NullableFixedBlobKind","CompactFixedBlobKind","nzIndex","v","obj","kind","k","item","part","i","parts","o","p","cond","msg","RLPError","str","_RLPError","import_elliptic","randomBytes","Buffer","curve","EC","N","ZERO","isValidPrivateKey","key","isValidMessageHash","hash","secp256k1","generatePrivateKey","rng","privKey","derivePublicKey","keyPair","sign","msgHash","sig","r","s","recover","recovery","Buffer","Transaction","_Transaction","body","raw","unsigned","signature","unsignedTxRLP","decoded","txRLP","reserved","features","featuresKind","tx","signingHash","pubKey","secp256k1","origin","address","blake2b256","delegateFor","buf","hash","_b","_a","list","_c","expectedSigLen","intrinsicGas","clauses","sum","c","dataGas","data","i","RLP","PREFIX","PREFIX_REGEX","HEX_REGEX","addPrefix","hex","validate","PREFIX_REGEX","PREFIX","isValid","HEX_REGEX","normalize","hex","addPrefix","compareAddresses","address1","address2","normalize","compareListOfAddresses","add1","add2","sortedAdd1","e","a","b","sortedAdd2","i","regexPattern","isValidAddress","addr","address","addPrefix","leftPadWithZeros","str","length","cleanStr","jsx","VechainAccountContext","createContext","SmartAccountProvider","children","nodeUrl","delegatorUrl","delegateAllTransactions","signTypedData","exportWallet","user","usePrivy","signTypedDataCrossApp","useCrossAppAccounts","wallets","useWallets","embeddedWallet","wallet","smartAccountAddress","setSmartAccountAddress","useState","owner","setOwner","chainId","setChainId","thor","ThorClient","isDeployed","setIsDeployed","accountFactory","setAccountFactory","isCrossAppPrivyAccount","account","connectedAccount","useEffect","ABIContract","SimpleAccountFactoryABI","accountAddress","e","genesis","chainIdValue","error","Address","ACCOUNT_FACTORY_ADDRESSES","sendTransaction","txClauses","title","description","buttonText","dataToSign","txData","encodeFunctionData","signatures","data","index","txClause","funcData","clauses","Clause","SimpleAccountABI","gasResult","txBody","ProviderInternalBaseWallet","randomTransactionUser","signer","VeChainProvider","txInput","signerUtils","rawDelegateSigned","id","res","useSmartAccount","context","useContext","useWallet","user","authenticated","logout","ready","usePrivy","dappKitAccount","dappKitDisconnect","useDappKitWallet","smartAccount","useSmartAccount","isConnectedWithDappKit","isConnectedWithPrivy","isConnected","isCrossAppPrivyAccount","account","connectionSource","crossAppAccount","privyEmbeddedWallet","connectedWalletAddress","selectedAddress","walletDomain","useCachedVeChainDomain","smartAccountDomain","embeddedWalletDomain","crossAppAccountDomain","selectedAccount","getPicassoImage","connectedWallet","disconnect","useState","useEffect","useConnex","pollForReceipt","thor","id","blocksTimeout","transaction","receipt","i","useTxReceipt","txId","blockTimeout","setReceipt","error","setError","isLoading","setIsLoading","result","e","useQuery","ABIContract","getSmartAccountAddress","ownerAddress","account","THOR_CLIENT","ABIContract","SimpleAccountFactoryABI","getSmartAccountAddressQueryKey","useGetSmartAccountAddress","useQuery","useQuery","useConnex","ethers","getAccountBalance","thor","address","account","getAccountBalanceQueryKey","useAccountBalance","isValidAddress","useQuery","useConnex","Contract","Interface","_abi","ERC20__factory","address","runner","Contract","Interface","_abi","IERC20__factory","address","runner","Contract","Interface","_abi","IB3TR__factory","address","runner","Contract","Interface","_abi","IVOT3__factory","address","runner","Contract","Interface","_abi","IVechainEnergyOracleV1__factory","address","runner","OracleInterface","IVechainEnergyOracleV1__factory","PRICE_FEED_IDS","getTokenUsdPrice","thor","token","functionFragment","res","BigNumber","getTokenUsdPriceQueryKey","useGetTokenUsdPrice","useConnex","useQuery","useQuery","useConnex","B3TRInterface","IB3TR__factory","getB3trBalance","thor","address","functionFragment","res","getB3trBalanceQueryKey","useGetB3trBalance","useConnex","useQuery","useQuery","useConnex","VOT3Interface","IVOT3__factory","getVot3Balance","thor","address","functionFragment","res","getVot3BalanceQueryKey","useGetVot3Balance","useConnex","useQuery","ethers","useBalances","selectedAccount","useWallet","vetData","vetLoading","useAccountBalance","vetUsdPrice","vetUsdPriceLoading","useGetTokenUsdPrice","vthoUsdPrice","vthoUsdPriceLoading","b3trBalance","b3trLoading","useGetB3trBalance","b3trUsdPrice","b3trUsdPriceLoading","vot3Balance","vot3Loading","useGetVot3Balance","veDelegateBalance","veDelegateLoading","useGetVeDelegateBalance","isLoading","balances","ethers","prices","totalBalance","useQuery","useConnex","ERC20Interface","IERC20__factory","getVeDelegateBalance","thor","address","functionFragment","res","getVeDelegateBalanceQueryKey","useGetVeDelegateBalance","useConnex","useQuery","useQuery","fetchPrivyAppInfo","appId","response","getPrivyAppInfoQueryKey","appIds","useFetchAppInfo","normalizedIds","results","id","result","index","useQuery","useVechainDomain","getVetDomainQueryKey","addressOrDomain","useGetVetDomain","baseResult","useVechainDomain","DOMAIN_CACHE_KEY","CACHE_EXPIRY_TIME","useCachedVeChainDomain","address","cachedData","cachedDomain","domain","cachedDomains","Fragment","jsx","useConnectModal","open","close","isOpen","useDAppKitPrivyConfig","ConnectModalProvider","children","Fragment","jsx","useAccountModal","open","close","isOpen","useDAppKitPrivyConfig","AccountModalProvider","children","useCallback","useEffect","useMemo","useState","useConnex","estimateTxGasWithNext","clauses","caller","buffer","nodeUrl","response","clause","execGas","sum","out","gasEstimate","Transaction","useSendTransaction","signerAccountAddress","onTxConfirmed","onTxFailedOrCancelled","suggestedMaxGas","privyUIOptions","vendor","thor","useConnex","dappKitConfig","feeDelegationConfig","useDAppKitPrivyConfig","connection","useWallet","smartAccount","useSmartAccount","convertClauses","parsedClauses","sendTransaction","useCallback","transaction","gasLimitNext","e","parsedGasLimit","sendTransactionTx","setSendTransactionTx","useState","sendTransactionPending","setSendTransactionPending","sendTransactionError","setSendTransactionError","sendTransactionAdapter","_clauses","error","txReceipt","isTxReceiptLoading","txReceiptError","useTxReceipt","explainTxRevertReason","transactionData","setError","status","useMemo","useEffect","revertReason","resetStatus","isTransactionPending","useCallback","ethers","useQueryClient","ERC20Interface","ERC20__factory","useTransferERC20","fromAddress","receiverAddress","amount","tokenAddress","tokenName","onSuccess","queryClient","useQueryClient","refresh","useRefreshBalances","buildClauses","useCallback","isValidAddress","clausesArray","ethers","handleOnSuccess","result","useSendTransaction","ethers","useCallback","useTransferVET","fromAddress","receiverAddress","amount","onSuccess","refresh","useRefreshBalances","buildClauses","isValidAddress","clausesArray","error","result","useSendTransaction","useQueryClient","useRefreshBalances","queryClient","useQueryClient","selectedAccount","useWallet","address","getAccountBalanceQueryKey","getB3trBalanceQueryKey","getVot3BalanceQueryKey","getVeDelegateBalanceQueryKey","getTokenUsdPriceQueryKey","ChakraProvider","extendTheme","anatomy","name","map","called","assert","parts","values","part","toPart","extend","selectors","key","classnames","className","accordionAnatomy","anatomy","alertAnatomy","avatarAnatomy","breadcrumbAnatomy","buttonAnatomy","checkboxAnatomy","circularProgressAnatomy","drawerAnatomy","editableAnatomy","formAnatomy","formErrorAnatomy","inputAnatomy","listAnatomy","menuAnatomy","modalAnatomy","numberInputAnatomy","pinInputAnatomy","popoverAnatomy","progressAnatomy","radioAnatomy","selectAnatomy","sliderAnatomy","statAnatomy","switchAnatomy","tableAnatomy","tabsAnatomy","tagAnatomy","cardAnatomy","stepperAnatomy","createMultiStyleConfigHelpers","definePartsStyle","defineMultiStyleConfig","modalAnatomy","variants","props","modalTheme","createMultiStyleConfigHelpers","definePartsStyle","defineMultiStyleConfig","modalAnatomy","variants","props","cardTheme","defineStyle","defineStyleConfig","baseStyle","variants","colorMode","buttonTheme","themeConfig","modalTheme","cardTheme","buttonTheme","Theme","extendTheme","React","QueryClient","QueryClientProvider","QueryClientContext","Fragment","jsx","internalQueryClient","getOrCreateQueryClient","EnsureQueryClient","children","e","queryClient","jsx","jsxs","DAppKitPrivyContext","createContext","useDAppKitPrivyConfig","context","useContext","DAppKitPrivyProvider","children","privyConfig","feeDelegationConfig","dappKitConfig","isConnectModalOpen","setIsConnectModalOpen","useState","openConnectModal","useCallback","closeConnectModal","isAccountModalOpen","setIsAccountModalOpen","openAccountModal","closeAccountModal","loginMethods","appID","EnsureQueryClient","ChakraProvider","Theme","BasePrivyProvider","DAppKitProvider","SmartAccountProvider","ConnectModal","AccountModal","motion","jsx","FadeInView","children","motion","jsx","FadeInViewFromBottom","children","motion","jsx","FadeInViewFromLeft","children","motion","jsx","FadeInViewFromRight","children","IconButton","IoChevronBack","jsx","ModalBackButton","onClick","props","Text","VStack","Icon","HStack","useState","IoCopyOutline","IoCheckmarkOutline","jsx","jsxs","AddressDisplay","wallet","label","size","copied","setCopied","useState","copiedDomain","setCopiedDomain","copyToClipboard","textToCopy","VStack","Text","HStack","Icon","IoCheckmarkOutline","IoCopyOutline","humanAddress","HStack","Link","useColorMode","package_default","jsx","jsxs","VersionFooter","props","colorMode","useColorMode","HStack","VechainLogoHorizontal","Link","package_default","Box","useColorMode","useEffect","useState","useRef","Fragment","jsx","jsxs","StickyHeaderContainer","children","colorMode","isDark","hasContentBelow","setHasContentBelow","observerRef","observer","entry","Box","useColorMode","jsx","StickyFooterContainer","children","colorMode","HiOutlineWallet","FcGoogle","CiCircleMore","IoIosFingerPrint","IoPlanet","useWalletModal","useEffect","jsx","jsxs","MainContent","setCurrentContent","onClose","logo","colorMode","useColorMode","isDark","connection","useWallet","privyConfig","useDAppKitPrivyConfig","viewMoreLogin","usePrivy","openDappKitModal","useWalletModal","loginWithCrossAppAccount","useCrossAppAccounts","loginWithPasskey","useLoginWithPasskey","handleLoginWithPasskey","error","initOAuth","useLoginWithOAuth","useEffect","FadeInViewFromBottom","ModalHeader","HStack","Image","ModalCloseButton","ModalBody","Text","Stack","Grid","GridItem","ConnectionButton","Icon","FcGoogle","VECHAIN_PRIVY_APP_ID","VechainLogo","IoIosFingerPrint","HiOutlineWallet","IoPlanet","CiCircleMore","ModalFooter","VersionFooter","Button","Icon","Image","ModalBody","ModalCloseButton","ModalFooter","ModalHeader","Spinner","Text","VStack","useColorMode","useCrossAppAccounts","GiSolarSystem","jsx","jsxs","EcosystemContent","setCurrentContent","onClose","colorMode","useColorMode","isDark","loginWithCrossAppAccount","useCrossAppAccounts","connectWithVebetterDaoApps","appId","privyConfig","useDAppKitPrivyConfig","appsInfo","isLoading","useFetchAppInfo","FadeInViewFromBottom","ModalHeader","Icon","ModalBackButton","ModalCloseButton","ModalBody","VStack","Spinner","appInfo","Button","Image","Text","ModalFooter","useDappKitWallet","jsx","jsxs","ConnectModal","isOpen","onClose","logo","isDesktop","useMediaQuery","_modalContentProps","currentContent","setCurrentContent","useState","connection","useWallet","setSource","connect","useEffect","Modal","ModalOverlay","ModalContent","MainContent","EcosystemContent","Button","Icon","Text","jsx","ConnectionButton","isDark","onClick","leftIcon","text","icon","Button","Icon","Input","InputGroup","InputLeftElement","useColorMode","useDisclosure","VStack","useLoginWithEmail","useState","MdEmail","Button","VStack","Text","HStack","PinInput","PinInputField","Icon","useColorMode","ModalFooter","ModalBody","ModalHeader","ModalCloseButton","Container","Modal","ModalContent","ModalOverlay","useMediaQuery","MdEmail","useEffect","useState","useLoginWithEmail","jsx","jsxs","EmailCodeVerificationModal","email","onResend","isLoading","isOpen","onClose","colorMode","useColorMode","isDark","isDesktop","useMediaQuery","code","setCode","error","setError","loginWithCode","Modal","ModalOverlay","ModalContent","FadeInViewFromBottom","ModalHeader","ModalCloseButton","Container","ModalBody","VStack","Icon","MdEmail","Text","HStack","PinInput","PinInputField","ModalFooter","Button","Fragment","jsx","jsxs","EmailLoginButton","colorMode","useColorMode","isDark","email","setEmail","useState","sendCode","emailState","useLoginWithEmail","emailCodeVerificationModal","useDisclosure","handleSendCode","VStack","InputGroup","InputLeftElement","Icon","MdEmail","Input","e","Button","EmailCodeVerificationModal","Button","HStack","Image","Text","useDisclosure","useLoginWithOAuth","usePrivy","useEffect","Fragment","jsx","jsxs","WalletButton","connection","selectedAccount","useWallet","authenticated","user","createWallet","connectModal","useDisclosure","accountModal","privyConfig","useDAppKitPrivyConfig","isLoadingLoginOAuth","embeddedWallet","asyncCreateWallet","error","Button","HStack","Image","Text","humanAddress","ConnectModal","AccountModal","LoginLoadingModal","useMemo","Heading","VStack","Text","Spinner","jsx","jsxs","ConfirmationModalContent","title","connection","useWallet","FadeInViewFromBottom","VStack","Heading","Spinner","Text","ModalContent","Show","Fragment","jsx","jsxs","CustomModalContent","children","others","Heading","VStack","Text","ModalCloseButton","Button","Link","Icon","motion","MdOutlineErrorOutline","jsx","jsxs","ErrorModalContent","title","description","showTryAgainButton","onTryAgain","showExplorerButton","txId","chainId","useSmartAccount","explorerUrl","EXPLORER_URL","FadeInViewFromBottom","ModalCloseButton","VStack","Heading","motion","Icon","MdOutlineErrorOutline","Text","Link","Button","Heading","Link","ModalCloseButton","Spinner","Text","VStack","jsx","jsxs","LoadingModalContent","title","showExplorerButton","txId","chainId","useSmartAccount","explorerUrl","EXPLORER_URL","FadeInViewFromBottom","ModalCloseButton","VStack","Heading","Spinner","Link","Text","Heading","Text","VStack","ModalCloseButton","Link","Icon","Box","HStack","Link","motion","FaTelegramPlane","FaWhatsapp","RiTwitterXFill","jsx","jsxs","TWITTER_INJECT","WHATSAPP_INJECT","TELEGRAM_INJECT","BouncingAnimation","children","ShareButtons","descriptionEncoded","motion","FcCheckmark","jsx","jsxs","SuccessModalContent","title","showSocialButtons","showExplorerButton","txId","socialDescriptionEncoded","chainId","useSmartAccount","explorerUrl","EXPLORER_URL","socialDescription","FadeInViewFromBottom","ModalCloseButton","VStack","Heading","motion","Icon","FcCheckmark","Link","Text","ShareButtons","Modal","ModalOverlay","useMediaQuery","jsx","jsxs","TransactionModal","isOpen","onClose","status","pendingTitle","confirmationTitle","errorTitle","errorDescription","successTitle","showSocialButtons","socialDescriptionEncoded","showTryAgainButton","onTryAgain","showExplorerButton","txId","isDesktop","useMediaQuery","_modalContentProps","modalContent","useMemo","ConfirmationModalContent","LoadingModalContent","ErrorModalContent","SuccessModalContent","Modal","ModalOverlay","CustomModalContent","Box","VStack","Text","Link","Icon","HStack","Heading","Spinner","useColorMode","Button","useMemo","FcCheckmark","IoOpenOutline","MdOutlineErrorOutline","jsx","jsxs","TransactionToast","isOpen","onClose","status","txReceipt","error","resetStatus","colorMode","useColorMode","isDark","chainId","useSmartAccount","explorerUrl","EXPLORER_URL","statusConfig","Spinner","Icon","handleClose","toastContent","useMemo","config","HStack","VStack","Heading","Text","Link","Box","Button","Modal","ModalContent","ModalOverlay","useMediaQuery","useState","useEffect","Container","Image","ModalBody","ModalCloseButton","ModalFooter","ModalHeader","VStack","useColorMode","jsx","jsxs","AccountMainContent","setCurrentContent","wallet","colorMode","useColorMode","isDark","connection","useWallet","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalCloseButton","VStack","Image","Container","ModalBody","AccountSelector","BalanceSection","QuickActionsSection","AssetsSection","ModalFooter","VersionFooter","Button","Grid","HStack","ModalBody","ModalCloseButton","ModalFooter","ModalHeader","useColorMode","MdAccountCircle","MdOutlineNavigateNext","HiOutlineWallet","RxExit","jsx","jsxs","AccountsListContent","setCurrentContent","onClose","colorMode","useColorMode","isDark","connection","selectedAccount","connectedWallet","disconnect","useWallet","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","ModalBody","HStack","Grid","AccountDetailsButton","AddressDisplay","ModalFooter","Button","Image","ModalBody","ModalCloseButton","VStack","ModalFooter","ModalHeader","Text","useColorMode","Link","Icon","useState","IoOpenOutline","MdOutlineNavigateNext","FaRegAddressCard","FaUserEdit","jsx","jsxs","SmartAccountContent","setCurrentContent","smartAccount","useWallet","exportWallet","usePrivy","walletImage","getPicassoImage","colorMode","useColorMode","isDark","isExpanded","setIsExpanded","useState","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","ModalBody","VStack","Image","AddressDisplay","Text","Link","Icon","IoOpenOutline","ActionButton","ModalFooter","Image","ModalBody","ModalCloseButton","VStack","ModalFooter","ModalHeader","useColorMode","Text","Divider","GiHouseKeys","MdOutlineNavigateNext","IoIosFingerPrint","FaRegAddressCard","RxExit","Fragment","jsx","jsxs","WalletSettingsContent","setCurrentContent","onLogoutSuccess","exportWallet","linkPasskey","usePrivy","privyConfig","useDAppKitPrivyConfig","wallet","embeddedWallet","connection","crossAppWallet","disconnect","useWallet","account","colorMode","useColorMode","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","ModalBody","VStack","Image","AddressDisplay","Text","ActionButton","GiHouseKeys","MdOutlineNavigateNext","IoIosFingerPrint","Divider","ModalFooter","Container","ModalBody","ModalCloseButton","ModalHeader","VStack","Input","Button","Text","useColorMode","InputGroup","Box","HStack","Center","Icon","ModalFooter","Image","useState","useCallback","FiArrowDown","Container","ModalBody","ModalCloseButton","ModalHeader","VStack","Input","Button","Text","useColorMode","InputGroup","InputLeftElement","HStack","Icon","Image","Box","CiSearch","FiSlash","useState","jsx","jsxs","compactFormatter","SelectTokenContent","onSelectToken","onBack","colorMode","useColorMode","isDark","balances","prices","useBalances","searchQuery","setSearchQuery","filteredTokens","token","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","Container","ModalBody","VStack","InputGroup","Input","e","InputLeftElement","CiSearch","Text","Icon","FiSlash","hasBalance","usdValue","Button","HStack","Image","TOKEN_LOGOS","Box","ZeroAddress","useVechainDomain","jsx","jsxs","compactFormatter","SendTokenContent","setCurrentContent","onSend","colorMode","useColorMode","isDark","toAddressOrDomain","setToAddress","useState","amount","setAmount","error","setError","isSelectingToken","setIsSelectingToken","selectedToken","setSelectedToken","addressError","setAddressError","resolvedDomain","resolvedAddress","isLoadingDomain","validateAddress","useCallback","value","compareAddresses","ZeroAddress","isValidAddress","handleAmountChange","e","newAmount","handleSetMaxAmount","maxAmount","handleSend","SelectTokenContent","token","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","Container","ModalBody","VStack","Box","HStack","Input","Button","Image","TOKEN_LOGOS","Text","Center","Icon","FiArrowDown","InputGroup","ModalFooter","Container","ModalBody","ModalCloseButton","ModalHeader","VStack","Button","Text","useColorMode","Box","HStack","Image","Divider","Alert","AlertIcon","ModalFooter","useDisclosure","Fragment","jsx","jsxs","compactFormatter","SendTokenSummaryContent","setCurrentContent","toAddressOrDomain","resolvedDomain","resolvedAddress","amount","selectedToken","colorMode","useColorMode","isDark","selectedAccount","connection","useWallet","transactionModal","useDisclosure","transferERC20","useTransferERC20","transferVET","useTransferVET","handleSend","error","status","txReceipt","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","Container","ModalBody","VStack","Alert","AlertIcon","Box","Text","HStack","Image","humanAddress","Divider","getPicassoImage","StickyFooterContainer","ModalFooter","Button","TransactionModal","Container","ModalBody","ModalCloseButton","ModalHeader","VStack","Text","useColorMode","ModalFooter","QRCode","jsx","jsxs","ReceiveTokenContent","setCurrentContent","colorMode","useColorMode","isDark","selectedAccount","useWallet","FadeInViewFromBottom","StickyHeaderContainer","ModalHeader","ModalBackButton","ModalCloseButton","Container","ModalBody","VStack","AddressDisplay","QRCode","Text","ModalFooter","jsx","jsxs","AccountModal","isOpen","onClose","isDesktop","useMediaQuery","_modalContentProps","selectedAccount","useWallet","currentContent","setCurrentContent","useState","useEffect","Modal","ModalOverlay","ModalContent","SendTokenSummaryContent","AccountMainContent","WalletSettingsContent","SmartAccountContent","AccountsListContent","SendTokenContent","ReceiveTokenContent","Button","Box","HStack","VStack","Text","Icon","Image","useColorMode","Tag","jsx","jsxs","AccountDetailsButton","leftIcon","rightIcon","title","address","onClick","leftImage","isActive","colorMode","useColorMode","isDark","Button","HStack","Box","Image","Icon","VStack","Text","Tag","humanAddress","Button","Box","HStack","VStack","Text","Icon","Image","Tag","jsx","jsxs","ActionButton","leftIcon","rightIcon","title","description","onClick","leftImage","hide","showComingSoon","backgroundColor","FadeInView","Button","HStack","Box","Image","Icon","VStack","Text","Tag","Text","Icon","HStack","Button","IoIosArrowDown","useState","IoCheckmarkOutline","IoCopyOutline","jsx","jsxs","AccountSelector","wallet","size","onClick","copied","setCopied","connection","useWallet","copyToClipboard","textToCopy","HStack","Button","Text","humanAddress","Icon","e","Heading","Spinner","VStack","Text","jsx","jsxs","compactFormatter","BalanceSection","mb","isLoading","totalBalance","useBalances","Spinner","VStack","Heading","Text","VStack","HStack","Tabs","TabList","Tab","TabPanels","TabPanel","useColorModeValue","useRef","HStack","Icon","Text","Button","VStack","IoRefresh","motion","HStack","Image","Text","Box","jsx","jsxs","compactFormatter","AssetRow","symbol","amount","usdValue","HStack","Image","TOKEN_LOGOS","Box","Text","jsx","jsxs","MotionVStack","motion","VStack","AssetsTabPanel","balances","prices","useBalances","refresh","useRefreshBalances","AssetRow","HStack","Button","Icon","IoRefresh","Text","Icon","Text","VStack","IoWalletOutline","motion","jsx","jsxs","MotionVStack","NFTsTabPanel","Icon","Text","VStack","BiTransferAlt","motion","jsx","jsxs","MotionVStack","ActivityTabPanel","jsx","jsxs","AssetsSection","tabTextColor","useColorModeValue","tabPanelsRef","useRef","VStack","Tabs","HStack","TabList","Tab","TabPanels","TabPanel","AssetsTabPanel","NFTsTabPanel","ActivityTabPanel","Grid","Icon","IconButton","MdSwapHoriz","BsLightningCharge","FaRegArrowAltCircleDown","FiSend","jsx","jsxs","QuickActionsSection","setCurrentContent","Modal","ModalBody","ModalContent","ModalFooter","ModalHeader","ModalOverlay","Spinner","Text","useMediaQuery","VStack","jsx","jsxs","LoginLoadingModal","isOpen","onClose","isDesktop"]}