diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css index c4c94bc0e2..88d54404e0 100644 --- a/docs/assets/css/main.css +++ b/docs/assets/css/main.css @@ -69,6 +69,24 @@ a:focus { color: var(--turquoise); text-decoration: underline; } +i { + font-size: 1.25em; + cursor: pointer; +} +.sidebar { + display: block; + height: 100%; + width: 100%; + position: fixed; + z-index: 2; + background: var(--main-bg-color); + overflow-x: scroll; + padding-left: 1em; + transition: 0.3s ease-in-out; +} +.hide { + display: none; +} .small { font-size: 0.9em; } @@ -107,7 +125,7 @@ a:focus { padding: 0.25em 0.5em; cursor: pointer; border-radius: 0 0 3px 3px; - z-index: 1000; + z-index: 1; text-transform: uppercase; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); position: absolute; @@ -118,7 +136,7 @@ a:focus { } .editor-container { position: relative; - z-index: 999; + z-index: 0; } .editor-container::before { content: " "; @@ -186,6 +204,12 @@ header { box-shadow: 0 6px 6px rgba(0, 0, 0, 0.25); z-index: 999; } +header h1 { + display: inline-block; +} +header span { + padding-left: 1em; +} main { display: flex; overflow: auto; @@ -196,7 +220,7 @@ aside { } aside ul { list-style: none; - padding-left: 1.5rem; + padding: 0 0 2rem 0; margin: 1rem 0; } aside ul li { @@ -212,3 +236,31 @@ article div.content { article div.wide-content { padding: 0 0; } +article.sidebar-open { + transition: 0.3s ease-in-out; +} +/* medium devices (tablets) */ +@media (min-width: 768px) { + .sidebar { + width: 33.3%; + } + article.sidebar-open { + margin-left: 33.3%; + } +} +/* large devices (desktops) */ +@media (min-width: 992px) { + header span { + display: none; + } + .sidebar { + width: 25%; + display: block; + } + article { + margin-left: 25%; + } + article.sidebar-open { + margin-left: 25%; + } +} diff --git a/docs/assets/js/ganache/ganache.min.js.map b/docs/assets/js/ganache/ganache.min.js.map index 1714643787..ed48481f69 100644 --- a/docs/assets/js/ganache/ganache.min.js.map +++ b/docs/assets/js/ganache/ganache.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://Ganache/webpack/universalModuleDefinition","webpack://Ganache/../chains/ethereum/ethereum/node_modules/buffer/index.js","webpack://Ganache/./node_modules/process/browser.js","webpack://Ganache/./node_modules/buffer/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/buffer/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/buffer/index.js","webpack://Ganache/./node_modules/assert/build/assert.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../utils/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/./node_modules/inherits/inherits_browser.js","webpack://Ganache/./node_modules/safe-buffer/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/evm.js","webpack://Ganache/../core/node_modules/get-intrinsic/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/inherits/inherits_browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethjs-util/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/rlp/dist/index.js","webpack://Ganache/../chains/ethereum/utils/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/safe-buffer/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/inherits/inherits_browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/inherits/inherits_browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/inherits/inherits_browser.js","webpack://Ganache/../utils/lib/src/utils/index.js","webpack://Ganache/../chains/ethereum/utils/lib/src/index.js","webpack://Ganache/../chains/ethereum/transaction/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/debug/src/debug.js","webpack://Ganache/./node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/exceptions.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/evm.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/exceptions.js","webpack://Ganache/../utils/lib/src/things/json-rpc/json-rpc-base-types.js","webpack://Ganache/./node_modules/events/events.js","webpack://Ganache/../chains/ethereum/options/node_modules/inherits/inherits_browser.js","webpack://Ganache/./node_modules/stream-browserify/index.js","webpack://Ganache/./node_modules/util/util.js","webpack://Ganache/../chains/ethereum/options/node_modules/safe-buffer/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/db/manager.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/runBlock.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereum-cryptography/secp256k1.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/debug/src/browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../options/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/functions.js","webpack://Ganache/../chains/ethereum/utils/node_modules/safe-buffer/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/safe-buffer/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/block/node_modules/safe-buffer/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/get-intrinsic/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/utils.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../rlp/lib/index.js","webpack://Ganache/../chains/ethereum/address/lib/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/utils.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/utils.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/utils.js","webpack://Ganache/./node_modules/minimalistic-assert/index.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/utils.js","webpack://Ganache/../chains/ethereum/options/lib/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/bytes.js","webpack://Ganache/../core/node_modules/es-abstract/2020/Type.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethjs-util/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/checkpointTrie.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/trieNode.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/checkpointTrie.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/trieNode.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/block/dist.browser/header.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/ethash/dist.browser/util.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/global.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/block/dist.browser/header.js","webpack://Ganache/../flavors/lib/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/block/lib/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/secure.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/block/dist.browser/block.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/secure.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/well-known-symbol.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/block/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/block/dist.browser/block.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/runTx.js","webpack://Ganache/../core/node_modules/call-bind/callBound.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/utils.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/utils.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/utils.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/utils.js","webpack://Ganache/./node_modules/hash.js/lib/hash/utils.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/baseTrie.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/db.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/baseTrie.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/db.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/common/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/fails.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/has.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/util.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/api.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereum-cryptography/secp256k1.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/utils/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/block/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/create-hash/browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/./node_modules/cipher-base/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/checkpointDb.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/checkpointDb.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/baseTransaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/state/stateManager.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/descriptors.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/is-object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/eei.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/util/bls12_381.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/functions.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/util/bls12_381.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/trie.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/handlers/http-handler.js","webpack://Ganache/../core/lib/src/server.js","webpack://Ganache/../utils/lib/src/types/index.js","webpack://Ganache/../utils/lib/src/utils/constants.js","webpack://Ganache/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://Ganache/../chains/ethereum/utils/node_modules/minimalistic-assert/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereum-cryptography/secp256k1.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/minimalistic-assert/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereum-cryptography/secp256k1.js","webpack://Ganache/../chains/ethereum/block/node_modules/minimalistic-assert/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/minimalistic-assert/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/wallet.js","webpack://Ganache/./node_modules/randombytes/browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash.clonedeep/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/blockchain.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/util/walkController.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/block/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/util/walkController.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/tx/dist.browser/baseTransaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isBuffer.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_nodeUtil.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/data-managers/manager.js","webpack://Ganache/../core/node_modules/has/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/connector.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/emittery/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/provider.js","webpack://Ganache/../chains/ethereum/utils/node_modules/rlp/dist/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/account.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/_stream_duplex.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/hash.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethjs-util/lib/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/_stream_duplex.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/hash.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethjs-util/lib/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/_stream_duplex.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/readable-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/_stream_duplex.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/bn.js/lib/bn.js","webpack://Ganache/./node_modules/sha.js/hash.js","webpack://Ganache/../chains/ethereum/options/lib/index.js","webpack://Ganache/../chains/ethereum/options/lib/src/helpers.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/_stream_duplex.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/hash.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/miner/miner.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/xtend/immutable.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/readStream.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/database.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/readStream.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/legacyTransaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/eip2930Transaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/eip1559Transaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/ethash/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-define-property.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/an-object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/iterators.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/state/cache.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/interpreter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/codes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/rustbn.js/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/call-bind/callBound.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/data-managers/block-manager.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/data-managers/blocklog-manager.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/data-managers/transaction-manager.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/transaction-pool.js","webpack://Ganache/../promise-queue/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/data-managers/transaction-receipt-manager.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/fork.js","webpack://Ganache/../core/node_modules/call-bind/index.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsPropertyKey.js","webpack://Ganache/../core/lib/src/servers/http-server.js","webpack://Ganache/./node_modules/readable-stream/errors-browser.js","webpack://Ganache/../chains/ethereum/ethereum/lib/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/errors-browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/errors-browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/runtime-transaction.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/transaction-receipt.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/errors-browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereum-cryptography/keccak.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/errors-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/./node_modules/create-hash/browser.js","webpack://Ganache/./node_modules/buffer-xor/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/errors-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/semaphore-async-await/dist/Semaphore.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/tx/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/tx/dist.browser/legacyTransaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/tx/dist.browser/eip2930Transaction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/has/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/Type.js","webpack://Ganache/../colors/lib/index.js","webpack://Ganache/../utils/lib/src/utils/executor.js","webpack://Ganache/../utils/lib/src/utils/request-coordinator.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Ganache/../utils/lib/src/things/promievent.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/curve/base.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/common.js","webpack://Ganache/./node_modules/call-bind/index.js","webpack://Ganache/./node_modules/define-properties/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/hash.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/curve/base.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/common.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/signing.js","webpack://Ganache/./node_modules/path-browserify/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/curve/base.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/common.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/secp256k1/elliptic.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/curve/base.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/common.js","webpack://Ganache/./node_modules/crypto-browserify/index.js","webpack://Ganache/./node_modules/readable-stream/readable-browser.js","webpack://Ganache/./node_modules/evp_bytestokey/index.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://Ganache/./node_modules/hash.js/lib/hash/common.js","webpack://Ganache/./node_modules/parse-asn1/index.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://Ganache/../options/lib/src/create.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/semaphore-async-await/dist/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-mem/level-mem.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-supports/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/errno/errno.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ltgt/index.js","webpack://Ganache/./node_modules/ltgt/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/dist.browser/chains/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/common/dist.browser/chains/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-indexed-object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/function-bind-context.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/hidden-keys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/internal-state.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/0a-bls12-g1add.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/0b-bls12-g1mul.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/0c-bls12-g1multiexp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/0d-bls12-g2add.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/0e-bls12-g2mul.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/0f-bls12-g2multiexp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/10-bls12-pairing.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/11-bls12-map-fp-to-g1.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/12-bls12-map-fp2-to-g2.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/runBlockchain.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/data-managers/account-manager.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/util.js","webpack://Ganache/../chains/filecoin/options/lib/src/helpers.js","webpack://Ganache/../core/node_modules/define-properties/index.js","webpack://Ganache/../core/node_modules/promise.allsettled/requirePromise.js","webpack://Ganache/../core/lib/src/servers/ws-server.js","webpack://Ganache/../core/lib/index.js","webpack://Ganache/./node_modules/readable-stream/lib/_stream_readable.js","webpack://Ganache/./node_modules/readable-stream/lib/_stream_writable.js","webpack://Ganache/./node_modules/readable-stream/lib/_stream_transform.js","webpack://Ganache/../utils/node_modules/seedrandom/seedrandom.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/secp256k1v3-adapter.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/curves.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/constants.js","webpack://Ganache/./node_modules/call-bind/callBound.js","webpack://Ganache/./node_modules/get-intrinsic/index.js","webpack://Ganache/./node_modules/has-symbols/index.js","webpack://Ganache/./node_modules/function-bind/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/readable-browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/base-transaction.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/rlp/dist/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/readable-browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/curves.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash.js","webpack://Ganache/../chains/ethereum/block/node_modules/rlp/dist/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/readable-browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/curves.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/brorand/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/curves.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/randombytes/browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/tweetnacl-util/nacl-util.js","webpack://Ganache/./node_modules/md5.js/index.js","webpack://Ganache/./node_modules/ripemd160/index.js","webpack://Ganache/./node_modules/sha.js/index.js","webpack://Ganache/./node_modules/des.js/lib/des/cipher.js","webpack://Ganache/./node_modules/browserify-aes/modes/index.js","webpack://Ganache/./node_modules/browserify-aes/aes.js","webpack://Ganache/./node_modules/brorand/index.js","webpack://Ganache/./node_modules/browserify-rsa/index.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/curves.js","webpack://Ganache/./node_modules/hash.js/lib/hash.js","webpack://Ganache/./node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","webpack://Ganache/./node_modules/safer-buffer/safer.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/seedrandom.js","webpack://Ganache/../chains/ethereum/options/lib/src/wallet-options.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/seedrandom.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/readable-browser.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/levelup/lib/levelup.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-errors/errors.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/prr/prr.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/levelup/lib/common.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/encoding-down/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/abstract-leveldown/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/functional-red-black-tree/rbtree.js","webpack://Ganache/./node_modules/level-js/node_modules/buffer/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/subleveldown/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/helpers.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/db/operation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/classof-raw.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/require-object-coercible.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/path.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/uid.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/is-pure.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/shared-store.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/get-built-in.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-length.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-integer.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/classof.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/set-to-string-tag.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/shared-key.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/define-iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/message.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/bloom/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_baseGetTag.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isObjectLike.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/slice.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/define-properties/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/call-bind/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/function-bind/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/state/stateManager.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/handlers/base-handler.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/seedrandom.js","webpack://Ganache/../core/node_modules/function-bind/index.js","webpack://Ganache/../core/node_modules/has-symbols/index.js","webpack://Ganache/../core/node_modules/has-symbols/shams.js","webpack://Ganache/../core/node_modules/es-get-iterator/index.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsArray.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/assertRecord.js","webpack://Ganache/./index.ts","webpack://Ganache/./node_modules/base64-js/index.js","webpack://Ganache/./node_modules/ieee754/index.js","webpack://Ganache/../utils/lib/src/utils/keccak.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://Ganache/./node_modules/string_decoder/lib/string_decoder.js","webpack://Ganache/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Ganache/../utils/lib/src/utils/random-number-generator.js","webpack://Ganache/../utils/node_modules/seedrandom/lib/alea.js","webpack://Ganache/../utils/node_modules/seedrandom/lib/xor128.js","webpack://Ganache/../utils/node_modules/seedrandom/lib/xorwow.js","webpack://Ganache/../utils/node_modules/seedrandom/lib/xorshift7.js","webpack://Ganache/../utils/node_modules/seedrandom/lib/xor4096.js","webpack://Ganache/../utils/node_modules/seedrandom/lib/tychei.js","webpack://Ganache/../chains/ethereum/utils/node_modules/secp256k1/elliptic.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic.js","webpack://Ganache/../chains/ethereum/utils/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://Ganache/../chains/ethereum/utils/node_modules/brorand/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/curve/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha/256.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha/512.js","webpack://Ganache/../chains/ethereum/utils/node_modules/randombytes/browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/is-hex-prefixed/src/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/rlp/node_modules/bn.js/lib/bn.js","webpack://Ganache/./node_modules/foreach/index.js","webpack://Ganache/./node_modules/available-typed-arrays/index.js","webpack://Ganache/./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://Ganache/./node_modules/is-typed-array/index.js","webpack://Ganache/./node_modules/object-is/index.js","webpack://Ganache/./node_modules/object-keys/isArguments.js","webpack://Ganache/./node_modules/object-is/implementation.js","webpack://Ganache/./node_modules/object-is/polyfill.js","webpack://Ganache/./node_modules/is-nan/implementation.js","webpack://Ganache/./node_modules/is-nan/polyfill.js","webpack://Ganache/../chains/ethereum/utils/node_modules/create-hash/browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash-base/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/_stream_readable.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/state.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/_stream_writable.js","webpack://Ganache/../chains/ethereum/utils/node_modules/string_decoder/lib/string_decoder.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/_stream_transform.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/sha256.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/sha512.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../rlp/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/utils/lib/src/things/tags.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/rlp/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/is-hex-prefixed/src/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash-base/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/_stream_readable.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/state.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/_stream_writable.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/string_decoder/lib/string_decoder.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/_stream_transform.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/sha256.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/sha512.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/secp256k1/elliptic.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/secp256k1/lib/elliptic.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/brorand/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/curve/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha/256.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha/512.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/randombytes/browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/block/node_modules/rlp/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/block/node_modules/is-hex-prefixed/src/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash-base/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/_stream_readable.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/state.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/_stream_writable.js","webpack://Ganache/../chains/ethereum/block/node_modules/string_decoder/lib/string_decoder.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/_stream_transform.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/sha256.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/sha512.js","webpack://Ganache/../chains/ethereum/block/node_modules/secp256k1/elliptic.js","webpack://Ganache/../chains/ethereum/block/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://Ganache/../chains/ethereum/block/node_modules/brorand/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/curve/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha/256.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha/512.js","webpack://Ganache/../chains/ethereum/block/node_modules/randombytes/browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/rlp/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/is-hex-prefixed/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/keccak/js.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/md5.js/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash-base/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/_stream_readable.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/state.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/_stream_writable.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/string_decoder/lib/string_decoder.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/_stream_transform.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ripemd160/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/sha256.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/sha512.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/curve/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha/256.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha/512.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/tweetnacl/nacl-fast.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/pbkdf2/lib/precondition.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/pbkdf2/lib/default-encoding.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/pbkdf2/lib/sync-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/pbkdf2/lib/to-buffer.js","webpack://Ganache/./node_modules/hash-base/index.js","webpack://Ganache/./node_modules/sha.js/sha256.js","webpack://Ganache/./node_modules/sha.js/sha512.js","webpack://Ganache/./node_modules/create-hmac/browser.js","webpack://Ganache/./node_modules/create-hash/md5.js","webpack://Ganache/./node_modules/pbkdf2/lib/precondition.js","webpack://Ganache/./node_modules/pbkdf2/lib/default-encoding.js","webpack://Ganache/./node_modules/pbkdf2/lib/sync-browser.js","webpack://Ganache/./node_modules/pbkdf2/lib/to-buffer.js","webpack://Ganache/./node_modules/des.js/lib/des/des.js","webpack://Ganache/./node_modules/browserify-aes/browser.js","webpack://Ganache/./node_modules/browserify-aes/incr32.js","webpack://Ganache/./node_modules/browserify-aes/authCipher.js","webpack://Ganache/./node_modules/browserify-aes/streamCipher.js","webpack://Ganache/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://Ganache/./node_modules/miller-rabin/lib/mr.js","webpack://Ganache/./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","webpack://Ganache/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha/256.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha/512.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://Ganache/./node_modules/public-encrypt/browser.js","webpack://Ganache/./node_modules/public-encrypt/mgf.js","webpack://Ganache/./node_modules/public-encrypt/xor.js","webpack://Ganache/./node_modules/public-encrypt/withPublic.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/lib/alea.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/lib/xor128.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/lib/xorwow.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/lib/xorshift7.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/lib/xor4096.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/lib/tychei.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/lib/alea.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/lib/xor128.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/lib/xorwow.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/lib/xorshift7.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/lib/xor4096.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/lib/tychei.js","webpack://Ganache/../chains/ethereum/options/node_modules/md5.js/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/hash-base/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/_stream_readable.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/state.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/_stream_writable.js","webpack://Ganache/../chains/ethereum/options/node_modules/string_decoder/lib/string_decoder.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/_stream_transform.js","webpack://Ganache/../chains/ethereum/options/node_modules/ripemd160/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/sha256.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/sha512.js","webpack://Ganache/../chains/ethereum/options/node_modules/pbkdf2/lib/precondition.js","webpack://Ganache/../chains/ethereum/options/node_modules/pbkdf2/lib/default-encoding.js","webpack://Ganache/../chains/ethereum/options/node_modules/pbkdf2/lib/sync-browser.js","webpack://Ganache/../chains/ethereum/options/node_modules/pbkdf2/lib/to-buffer.js","webpack://Ganache/../chains/ethereum/options/node_modules/randombytes/browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/semaphore-async-await/dist/Lock.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/node_modules/abstract-leveldown/abstract-iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/node_modules/abstract-leveldown/next-tick-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/immediate/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/node_modules/abstract-leveldown/abstract-chained-batch.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/levelup/lib/promisify.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/abstract-leveldown/abstract-iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/abstract-leveldown/next-tick-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/abstract-leveldown/abstract-chained-batch.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-codec/lib/encodings.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/abstract-leveldown/abstract-iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/abstract-leveldown/next-tick-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/immediate/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/abstract-leveldown/abstract-chained-batch.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/util/nibbles.js","webpack://Ganache/./node_modules/xtend/immutable.js","webpack://Ganache/./node_modules/abstract-leveldown/abstract-iterator.js","webpack://Ganache/./node_modules/abstract-leveldown/next-tick-browser.js","webpack://Ganache/./node_modules/abstract-leveldown/abstract-chained-batch.js","webpack://Ganache/./node_modules/level-js/util/key-range.js","webpack://Ganache/./node_modules/level-js/util/deserialize.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/crc-32/crc32.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/util/nibbles.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/transactionFactory.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/db/cache.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/es/set/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/export.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/indexed-object.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-primitive.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/document-create-element.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/internal-metadata.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/iterate.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/shared.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/native-symbol.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/an-instance.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-create.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/enum-bug-keys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/redefine.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/iterators-core.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/tx/dist.browser/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/tx/dist.browser/transactionFactory.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/EIP2929.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/memory.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/rustbn.js/lib/index.asm.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/runCode.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/txContext.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/runCall.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async-eventemitter/lib/AsyncEventEmitter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/eachSeries.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/eachLimit.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/eachOfLimit.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/once.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isArrayLike.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_Symbol.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_root.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_freeGlobal.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isObject.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isLength.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/getIterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/onlyOnce.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/breakLoop.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/withoutIndex.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/asyncify.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/initialParams.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/doLimit.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object-keys/isArguments.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/util.promisify/implementation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/is-callable/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/has-symbols/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/has-symbols/shams.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object.getownpropertydescriptors/implementation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/helpers/assertRecord.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/IsPropertyKey.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/ToBoolean.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object.getownpropertydescriptors/polyfill.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/util.promisify/polyfill.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/state-manager.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/eei.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/EIP2929.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/interpreter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/memory.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/cache.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/rate-limiter/rate-limiter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/semaphore/lib/semaphore.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/handlers/ws-handler.js","webpack://Ganache/../chains/filecoin/options/lib/src/index.js","webpack://Ganache/../chains/filecoin/options/lib/src/wallet-options.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/lib/alea.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/lib/xor128.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/lib/xorwow.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/lib/xorshift7.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/lib/xor4096.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/lib/tychei.js","webpack://Ganache/../flavors/node_modules/color-convert/conversions.js","webpack://Ganache/../core/node_modules/object-keys/isArguments.js","webpack://Ganache/../core/node_modules/promise.allsettled/implementation.js","webpack://Ganache/../core/node_modules/is-string/index.js","webpack://Ganache/../core/node_modules/array.prototype.map/implementation.js","webpack://Ganache/../core/node_modules/es-abstract/2020/Get.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsConstructor.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/DefineOwnProperty.js","webpack://Ganache/../core/node_modules/es-abstract/2020/FromPropertyDescriptor.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsDataDescriptor.js","webpack://Ganache/../core/node_modules/es-abstract/2020/SameValue.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/isNaN.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToPropertyDescriptor.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToBoolean.js","webpack://Ganache/../core/node_modules/is-callable/index.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/isPrimitive.js","webpack://Ganache/../core/node_modules/is-symbol/index.js","webpack://Ganache/../core/node_modules/array.prototype.map/polyfill.js","webpack://Ganache/../core/node_modules/promise.allsettled/polyfill.js","webpack://Ganache/../core/lib/src/connector-loader.js","webpack://Ganache/./webpack/polyfills/browser-bigint-buffer.ts","webpack://Ganache/../utils/lib/src/utils/uint-to-buffer.js","webpack://Ganache/../utils/lib/src/utils/has-own.js","webpack://Ganache/../utils/lib/src/things/json-rpc/json-rpc-quantity.js","webpack://Ganache/../utils/node_modules/keccak/js.js","webpack://Ganache/../utils/node_modules/keccak/lib/api/index.js","webpack://Ganache/../utils/node_modules/keccak/lib/api/keccak.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Ganache/./node_modules/util-deprecate/browser.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://Ganache/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://Ganache/../utils/node_modules/keccak/lib/api/shake.js","webpack://Ganache/../utils/node_modules/keccak/lib/keccak.js","webpack://Ganache/../utils/node_modules/seedrandom/index.js","webpack://Ganache/../utils/lib/src/things/jsonrpc.js","webpack://Ganache/../utils/node_modules/emittery/index.js","webpack://Ganache/../chains/ethereum/utils/lib/src/errors/coded-error.js","webpack://Ganache/../chains/ethereum/utils/lib/src/errors/errors.js","webpack://Ganache/../chains/ethereum/utils/lib/src/errors/runtime-error.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/lib/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/secp256k1/lib/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/secp256k1/lib/elliptic.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/curve/short.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha/1.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha/common.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha/224.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha/384.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/hmac.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/ec/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/ec/key.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://Ganache/../chains/ethereum/utils/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://Ganache/../chains/ethereum/utils/node_modules/strip-hex-prefix/src/index.js","webpack://Ganache/./node_modules/assert/build/internal/errors.js","webpack://Ganache/./node_modules/util/support/types.js","webpack://Ganache/./node_modules/is-arguments/index.js","webpack://Ganache/./node_modules/has-symbols/shams.js","webpack://Ganache/./node_modules/function-bind/implementation.js","webpack://Ganache/./node_modules/has/src/index.js","webpack://Ganache/./node_modules/is-generator-function/index.js","webpack://Ganache/./node_modules/which-typed-array/index.js","webpack://Ganache/./node_modules/util/support/isBufferBrowser.js","webpack://Ganache/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://Ganache/./node_modules/es6-object-assign/index.js","webpack://Ganache/./node_modules/object-keys/index.js","webpack://Ganache/./node_modules/object-keys/implementation.js","webpack://Ganache/./node_modules/object-is/shim.js","webpack://Ganache/./node_modules/assert/build/internal/util/comparisons.js","webpack://Ganache/./node_modules/is-nan/index.js","webpack://Ganache/./node_modules/is-nan/shim.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereum-cryptography/keccak.js","webpack://Ganache/../chains/ethereum/utils/node_modules/keccak/js.js","webpack://Ganache/../chains/ethereum/utils/node_modules/keccak/lib/api/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/keccak/lib/api/keccak.js","webpack://Ganache/../chains/ethereum/utils/node_modules/keccak/lib/api/shake.js","webpack://Ganache/../chains/ethereum/utils/node_modules/keccak/lib/keccak.js","webpack://Ganache/../chains/ethereum/utils/node_modules/md5.js/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Ganache/../chains/ethereum/utils/node_modules/util-deprecate/browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Ganache/../chains/ethereum/utils/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ripemd160/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/sha.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/sha1.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/sha224.js","webpack://Ganache/../chains/ethereum/utils/node_modules/sha.js/sha384.js","webpack://Ganache/../chains/ethereum/utils/node_modules/cipher-base/index.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/filters.js","webpack://Ganache/../chains/ethereum/block/lib/src/block.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/strip-hex-prefix/src/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/keccak/js.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/keccak/lib/api/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/keccak/lib/api/keccak.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/keccak/lib/api/shake.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/keccak/lib/keccak.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/create-hash/browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/md5.js/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/util-deprecate/browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ripemd160/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/sha.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/sha1.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/sha224.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/sha.js/sha384.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/cipher-base/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/secp256k1/lib/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/curve/short.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha/1.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha/common.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha/224.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha/384.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/hmac.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/ec/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/ec/key.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/params.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/frozen-transaction.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/node-gyp-build/index.js","webpack://Ganache/./node_modules/os-browserify/browser.js","webpack://Ganache/../chains/ethereum/block/lib/src/runtime-block.js","webpack://Ganache/../chains/ethereum/block/node_modules/strip-hex-prefix/src/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/keccak/js.js","webpack://Ganache/../chains/ethereum/block/node_modules/keccak/lib/api/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/keccak/lib/api/keccak.js","webpack://Ganache/../chains/ethereum/block/node_modules/keccak/lib/api/shake.js","webpack://Ganache/../chains/ethereum/block/node_modules/keccak/lib/keccak.js","webpack://Ganache/../chains/ethereum/block/node_modules/create-hash/browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/md5.js/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Ganache/../chains/ethereum/block/node_modules/util-deprecate/browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Ganache/../chains/ethereum/block/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Ganache/../chains/ethereum/block/node_modules/ripemd160/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/sha.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/sha1.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/sha224.js","webpack://Ganache/../chains/ethereum/block/node_modules/sha.js/sha384.js","webpack://Ganache/../chains/ethereum/block/node_modules/cipher-base/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/secp256k1/lib/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/secp256k1/lib/elliptic.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/curve/short.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha/1.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha/common.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha/224.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha/384.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/hmac.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/ec/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/ec/key.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://Ganache/../chains/ethereum/block/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://Ganache/../chains/ethereum/block/lib/src/serialize.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/strip-hex-prefix/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/keccak/lib/api/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/keccak/lib/api/keccak.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/keccak/lib/api/shake.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/keccak/lib/keccak.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/util-deprecate/browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/sha.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/sha1.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/sha224.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/sha.js/sha384.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/cipher-base/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/secp256k1/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/secp256k1/lib/elliptic.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/curve/short.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha/1.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha/common.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha/224.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha/384.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/hmac.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/ec/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/ec/key.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/secp256k1-adapter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-abi/lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/secp256k1-adapter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/pbkdf2/lib/async.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/create-hash/md5.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/bip39/src/_wordlists.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hdkey/lib/hdkey.js","webpack://Ganache/./node_modules/sha.js/sha.js","webpack://Ganache/./node_modules/sha.js/sha1.js","webpack://Ganache/./node_modules/sha.js/sha224.js","webpack://Ganache/./node_modules/sha.js/sha384.js","webpack://Ganache/./node_modules/create-hmac/legacy.js","webpack://Ganache/./node_modules/pbkdf2/browser.js","webpack://Ganache/./node_modules/pbkdf2/lib/async.js","webpack://Ganache/./node_modules/browserify-des/index.js","webpack://Ganache/./node_modules/des.js/lib/des/utils.js","webpack://Ganache/./node_modules/des.js/lib/des/ede.js","webpack://Ganache/./node_modules/browserify-aes/modes/ctr.js","webpack://Ganache/./node_modules/browserify-aes/ghash.js","webpack://Ganache/./node_modules/diffie-hellman/lib/dh.js","webpack://Ganache/./node_modules/browserify-sign/browser/index.js","webpack://Ganache/./node_modules/browserify-sign/browser/sign.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha/1.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha/common.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha/224.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha/384.js","webpack://Ganache/./node_modules/hash.js/lib/hash/hmac.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://Ganache/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://Ganache/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/api.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://Ganache/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://Ganache/./node_modules/parse-asn1/certificate.js","webpack://Ganache/./node_modules/parse-asn1/fixProc.js","webpack://Ganache/./node_modules/browserify-sign/browser/verify.js","webpack://Ganache/./node_modules/create-ecdh/browser.js","webpack://Ganache/./node_modules/public-encrypt/publicEncrypt.js","webpack://Ganache/./node_modules/public-encrypt/privateDecrypt.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/bs58check/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/bs58check/base.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/bs58/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/base-x/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/seedrandom/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/helpers/filter-parsing.js","webpack://Ganache/../chains/ethereum/options/lib/src/chain-options.js","webpack://Ganache/../chains/ethereum/options/lib/src/database-options.js","webpack://Ganache/../chains/ethereum/options/lib/src/logging-options.js","webpack://Ganache/../chains/ethereum/options/lib/src/miner-options.js","webpack://Ganache/../chains/ethereum/options/node_modules/seedrandom/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/create-hash/browser.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Ganache/../chains/ethereum/options/node_modules/util-deprecate/browser.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Ganache/../chains/ethereum/options/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/sha.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/sha1.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/sha224.js","webpack://Ganache/../chains/ethereum/options/node_modules/sha.js/sha384.js","webpack://Ganache/../chains/ethereum/options/node_modules/cipher-base/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/pbkdf2/lib/async.js","webpack://Ganache/../chains/ethereum/options/node_modules/create-hash/md5.js","webpack://Ganache/../chains/ethereum/options/node_modules/bip39/src/_wordlists.js","webpack://Ganache/../chains/ethereum/options/lib/src/fork-options.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-packager/level-packager.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/deferred-leveldown.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/node_modules/abstract-leveldown/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/node_modules/abstract-leveldown/abstract-leveldown.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/xtend/mutable.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/deferred-leveldown/deferred-iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-iterator-stream/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/levelup/lib/batch.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/errno/custom.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/abstract-leveldown/abstract-leveldown.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-codec/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/memdown.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/abstract-leveldown/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/abstract-leveldown/abstract-leveldown.js","webpack://Ganache/./node_modules/level-js/index.js","webpack://Ganache/./node_modules/abstract-leveldown/index.js","webpack://Ganache/./node_modules/abstract-leveldown/abstract-leveldown.js","webpack://Ganache/./node_modules/level-supports/index.js","webpack://Ganache/./node_modules/xtend/mutable.js","webpack://Ganache/./node_modules/abstract-leveldown/node_modules/buffer/index.js","webpack://Ganache/./node_modules/immediate/lib/index.js","webpack://Ganache/./node_modules/level-js/iterator.js","webpack://Ganache/./node_modules/level-js/util/serialize.js","webpack://Ganache/./node_modules/level-js/util/support.js","webpack://Ganache/./node_modules/level-js/util/clear.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/subleveldown/leveldown.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/level-option-wrap/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/defined/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/reachdown/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/subleveldown/matchdown.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ms/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/tx/dist.browser/util.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/miller-rabin/lib/mr.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/ethash/node_modules/buffer-xor/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lru-cache/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/yallist/yallist.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/yallist/iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/db/constants.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/modules/es.set.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/collection.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/is-forced.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/a-function.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/freezing.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/set-global.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/engine-v8-version.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/engine-user-agent.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/get-iterator-method.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/iterator-close.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-to-string.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/array-iteration.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/array-species-create.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/is-array.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/native-weak-map.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/inspect-source.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/collection-strong.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-define-properties.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-keys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-keys-internal.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/array-includes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/to-absolute-index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/html.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/redefine-all.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/create-iterator-constructor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/a-possible-prototype.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/set-species.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/string-multibyte.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/modules/es.array.iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/dom-iterables.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/dist/genesisStates/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/noop.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isFunction.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_getRawTag.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_objectToString.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/keys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_arrayLikeKeys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_baseTimes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isArguments.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_baseIsArguments.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isArray.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/stubFalse.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_isIndex.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/isTypedArray.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_baseIsTypedArray.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_baseUnary.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_baseKeys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_isPrototype.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_nativeKeys.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/lodash/_overArg.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/util.promisify/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object-keys/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object-keys/implementation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/for-each/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object.getownpropertydescriptors/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/function-bind/implementation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/CreateDataProperty.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/helpers/DefineOwnProperty.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/FromPropertyDescriptor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/5/Type.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/IsArray.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/IsRegExp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/is-regex/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/ToPropertyDescriptor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/IsCallable.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/IsDataDescriptor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/IsExtensible.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/helpers/isPrimitive.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/SameValue.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/helpers/isNaN.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/RequireObjectCoercible.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/5/CheckObjectCoercible.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/es-abstract/2020/ToObject.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/object.getownpropertydescriptors/shim.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/util.promisify/shim.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/mcl-wasm/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/mcl-wasm/src/mcl_c.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/mcl-wasm/src/mcl.js","webpack://Ganache/../promise-queue/node_modules/emittery/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/state/cache.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/helpers/trie.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/abort-controller/browser.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/deferred.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ws/browser.js","webpack://Ganache/../chains/filecoin/options/node_modules/seedrandom/index.js","webpack://Ganache/../flavors/node_modules/chalk/source/index.js","webpack://Ganache/../flavors/node_modules/ansi-styles/index.js","webpack://Ganache/../flavors/node_modules/color-convert/index.js","webpack://Ganache/../flavors/node_modules/color-name/index.js","webpack://Ganache/../flavors/node_modules/color-convert/route.js","webpack://Ganache/../flavors/node_modules/supports-color/browser.js","webpack://Ganache/../flavors/node_modules/chalk/source/util.js","webpack://Ganache/../flavors/node_modules/chalk/source/templates.js","webpack://Ganache/../core/lib/src/options/index.js","webpack://Ganache/../core/node_modules/promise.allsettled/index.js","webpack://Ganache/../core/node_modules/function-bind/implementation.js","webpack://Ganache/../core/node_modules/object-keys/index.js","webpack://Ganache/../core/node_modules/object-keys/implementation.js","webpack://Ganache/../core/node_modules/es-abstract/2020/PromiseResolve.js","webpack://Ganache/../core/node_modules/es-abstract/5/Type.js","webpack://Ganache/../core/node_modules/iterate-value/index.js","webpack://Ganache/../core/node_modules/is-arguments/index.js","webpack://Ganache/../core/node_modules/isarray/index.js","webpack://Ganache/../core/node_modules/is-map/index.js","webpack://Ganache/../core/node_modules/is-set/index.js","webpack://Ganache/../core/node_modules/iterate-iterator/index.js","webpack://Ganache/../core/node_modules/array.prototype.map/index.js","webpack://Ganache/../core/node_modules/es-abstract/2020/RequireObjectCoercible.js","webpack://Ganache/../core/node_modules/es-abstract/5/CheckObjectCoercible.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ArraySpeciesCreate.js","webpack://Ganache/../core/node_modules/object-inspect/index.js","webpack://Ganache/../core/node_modules/es-abstract/2020/DefinePropertyOrThrow.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/isPropertyDescriptor.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsAccessorDescriptor.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsCallable.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsInteger.js","webpack://Ganache/../core/node_modules/es-abstract/2020/abs.js","webpack://Ganache/../core/node_modules/es-abstract/2020/floor.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/isFinite.js","webpack://Ganache/../core/node_modules/es-abstract/2020/Call.js","webpack://Ganache/../core/node_modules/es-abstract/2020/CreateDataPropertyOrThrow.js","webpack://Ganache/../core/node_modules/es-abstract/2020/CreateDataProperty.js","webpack://Ganache/../core/node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsRegExp.js","webpack://Ganache/../core/node_modules/is-regex/index.js","webpack://Ganache/../core/node_modules/es-abstract/2020/IsExtensible.js","webpack://Ganache/../core/node_modules/es-abstract/2020/HasProperty.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToUint32.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToNumber.js","webpack://Ganache/../core/node_modules/es-abstract/helpers/regexTester.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToPrimitive.js","webpack://Ganache/../core/node_modules/es-to-primitive/es2015.js","webpack://Ganache/../core/node_modules/es-to-primitive/helpers/isPrimitive.js","webpack://Ganache/../core/node_modules/is-date-object/index.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToObject.js","webpack://Ganache/../core/node_modules/es-abstract/2020/ToString.js","webpack://Ganache/../core/node_modules/es-array-method-boxes-properly/index.js","webpack://Ganache/../core/node_modules/array.prototype.map/shim.js","webpack://Ganache/../core/node_modules/promise.allsettled/shim.js","webpack://Ganache/../core/node_modules/aggregate-error/index.js","webpack://Ganache/../core/node_modules/indent-string/index.js","webpack://Ganache/../core/node_modules/clean-stack/index.js","webpack://Ganache/../core/node_modules/emittery/index.js","webpack://Ganache/../utils/lib/src/types/connector.js","webpack://Ganache/../utils/lib/src/types/provider.js","webpack://Ganache/../utils/lib/src/types/api.js","webpack://Ganache/../utils/lib/src/utils/bigint-to-buffer.js","webpack://Ganache/../utils/lib/src/common.js","webpack://Ganache/../utils/lib/src/utils/buffer-to-bigint.js","webpack://Ganache/../utils/lib/src/utils/heap.js","webpack://Ganache/../utils/lib/src/utils/unref.js","webpack://Ganache/../utils/lib/src/utils/buffer-to-key.js","webpack://Ganache/../utils/node_modules/keccak/lib/keccak-state-unroll.js","webpack://Ganache/../utils/lib/src/utils/find-insert-position.js","webpack://Ganache/../utils/lib/src/things/subscription.js","webpack://Ganache/../utils/lib/src/things/json-rpc/json-rpc-data.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/sha.js","webpack://Ganache/../chains/ethereum/utils/node_modules/hash.js/lib/hash/ripemd.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereum-cryptography/random.js","webpack://Ganache/../chains/ethereum/utils/node_modules/base64-js/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ieee754/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/secp256k1v3-lib/index.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/secp256k1v3-lib/der.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereum-cryptography/hash-utils.js","webpack://Ganache/../chains/ethereum/utils/node_modules/keccak/lib/keccak-state-unroll.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/signature.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/object.js","webpack://Ganache/../chains/ethereum/utils/lib/src/errors/abort-error.js","webpack://Ganache/../chains/ethereum/utils/lib/src/things/account.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/utils/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../rlp/node_modules/rlp/dist/index.js","webpack://Ganache/../chains/ethereum/utils/lib/src/things/blocklogs.js","webpack://Ganache/../chains/ethereum/utils/lib/src/things/trace-data.js","webpack://Ganache/../chains/ethereum/utils/lib/src/things/trace-storage-map.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/extract-values-from-types.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/shh.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/step-event.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/subscriptions.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/tuple-from-union.js","webpack://Ganache/../chains/ethereum/utils/lib/src/types/debug-storage.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/base64-js/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ieee754/index.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereum-cryptography/keccak.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereum-cryptography/hash-utils.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/keccak/lib/keccak-state-unroll.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/sha.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/hash.js/lib/hash/ripemd.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereum-cryptography/random.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/transaction/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/block-transaction.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/fake-transaction.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/hardfork.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/raw.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/rpc-transaction.js","webpack://Ganache/../chains/ethereum/transaction/lib/src/vm-transaction.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereum-cryptography/keccak.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereum-cryptography/hash-utils.js","webpack://Ganache/../chains/ethereum/block/node_modules/keccak/lib/keccak-state-unroll.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/sha.js","webpack://Ganache/../chains/ethereum/block/node_modules/hash.js/lib/hash/ripemd.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereum-cryptography/random.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/block/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../chains/ethereum/block/lib/src/snapshots.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/base64-js/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ieee754/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereum-cryptography/hash-utils.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/keccak/lib/keccak-state-unroll.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/sha.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/hash.js/lib/hash/ripemd.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereum-cryptography/random.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/address.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/ethereumjs-util/dist/externals.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-abi/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/bip39/src/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/pbkdf2/browser.js","webpack://Ganache/./node_modules/browserify-sign/algos.js","webpack://Ganache/./node_modules/browserify-cipher/browser.js","webpack://Ganache/./node_modules/des.js/lib/des.js","webpack://Ganache/./node_modules/des.js/lib/des/cbc.js","webpack://Ganache/./node_modules/browserify-aes/encrypter.js","webpack://Ganache/./node_modules/browserify-aes/modes/ecb.js","webpack://Ganache/./node_modules/browserify-aes/modes/cbc.js","webpack://Ganache/./node_modules/browserify-aes/modes/cfb.js","webpack://Ganache/./node_modules/browserify-aes/modes/cfb8.js","webpack://Ganache/./node_modules/browserify-aes/modes/cfb1.js","webpack://Ganache/./node_modules/browserify-aes/modes/ofb.js","webpack://Ganache/./node_modules/browserify-aes/decrypter.js","webpack://Ganache/./node_modules/browserify-des/modes.js","webpack://Ganache/./node_modules/diffie-hellman/browser.js","webpack://Ganache/./node_modules/hash.js/lib/hash/sha.js","webpack://Ganache/./node_modules/hash.js/lib/hash/ripemd.js","webpack://Ganache/./node_modules/parse-asn1/asn1.js","webpack://Ganache/./node_modules/randomfill/browser.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/helpers/gas-estimator.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/helpers/assert-arg-length.js","webpack://Ganache/../chains/ethereum/options/node_modules/bip39/src/index.js","webpack://Ganache/../chains/ethereum/options/node_modules/pbkdf2/browser.js","webpack://Ganache/../options/lib/src/base.js","webpack://Ganache/../options/lib/src/exclusive.js","webpack://Ganache/../options/lib/src/definition.js","webpack://Ganache/../options/lib/src/constants.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/immediate/lib/queueMicrotask.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/immediate/lib/mutation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/immediate/lib/messageChannel.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/immediate/lib/stateChange.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/immediate/lib/timeout.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/immediate/lib/nextTick.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/immediate/lib/mutation.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/immediate/lib/messageChannel.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/immediate/lib/stateChange.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/node_modules/immediate/lib/timeout.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/memdown/immediate-browser.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/prioritizedTaskExecutor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/merkle-patricia-tree/dist.browser/util/hex.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/miner/replace-from-heap.js","webpack://Ganache/./webpack/polyfills/browser-tmp-promise.ts","webpack://Ganache/./node_modules/immediate/lib/queueMicrotask.js","webpack://Ganache/./node_modules/immediate/lib/mutation.js","webpack://Ganache/./node_modules/immediate/lib/messageChannel.js","webpack://Ganache/./node_modules/immediate/lib/stateChange.js","webpack://Ganache/./node_modules/immediate/lib/timeout.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/dist.browser/hardforks/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/common/dist.browser/eips/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/prioritizedTaskExecutor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/merkle-patricia-tree/dist.browser/util/hex.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/common/dist.browser/hardforks/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/common/dist.browser/eips/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/block/dist.browser/clique.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/block/dist.browser/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/db/helpers.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/blockchain/dist.browser/clique.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/state/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/modules/es.string.iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/core-js-pure/modules/web.dom-collections.iterator.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/01-ecrecover.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/block/dist.browser/clique.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/block/dist.browser/types.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/stack.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/EIP1283.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/opcodes/EIP2200.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/02-sha256.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/03-ripemd160.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/04-identity.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/05-modexp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/06-ecadd.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/07-ecmul.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/08-ecpairing.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist.browser/evm/precompiles/09-blake2f.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async-eventemitter/index.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/wrapAsync.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/async/internal/setImmediate.js","webpack://Ganache/../promise-queue/lib/src/entry.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/helpers/run-transactions.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/01-ecrecover.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/message.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/stack.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/codes.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/EIP1283.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/opcodes/EIP2200.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/02-sha256.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/03-ripemd160.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/04-identity.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/05-modexp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/06-ecadd.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/07-ecmul.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/08-ecpairing.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/09-blake2f.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/0a-bls12-g1add.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/0b-bls12-g1mul.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/0c-bls12-g1multiexp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/0d-bls12-g2add.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/0e-bls12-g2mul.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/0f-bls12-g2multiexp.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/10-bls12-pairing.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/11-bls12-map-fp-to-g1.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/evm/precompiles/12-bls12-map-fp2-to-g2.js","webpack://Ganache/../chains/ethereum/ethereum/node_modules/@ethereumjs/vm/dist/state/index.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/lexicographic-key-codec.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/helpers/precompiles.js","webpack://Ganache/../chains/ethereum/ethereum/lib/src/forking/rate-limiter/limit-counter.js","webpack://Ganache/../chains/filecoin/options/lib/index.js","webpack://Ganache/../chains/filecoin/options/lib/src/chain-options.js","webpack://Ganache/../chains/filecoin/options/lib/src/database-options.js","webpack://Ganache/../chains/filecoin/options/lib/src/logging-options.js","webpack://Ganache/../chains/filecoin/options/lib/src/miner-options.js","webpack://Ganache/../colors/lib/src/index.js","webpack://Ganache/../flavors/lib|sync","webpack://Ganache/../core/lib/src/options/server-options.js","webpack://Ganache/../core/node_modules/es-abstract/GetIntrinsic.js","webpack://Ganache/../core/lib/src/servers/utils/websocket-close-codes.js","webpack://Ganache/../core/lib/src/servers/utils/content-types.js","webpack://Ganache/../core/lib/src/servers/utils/http-response-codes.js","webpack://Ganache/webpack/bootstrap","webpack://Ganache/webpack/startup","webpack://Ganache/webpack/runtime/amd define","webpack://Ganache/webpack/runtime/amd options","webpack://Ganache/webpack/runtime/global","webpack://Ganache/webpack/runtime/hasOwnProperty shorthand","webpack://Ganache/webpack/runtime/node module decorator"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","self","base64","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","length","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Uint8Array","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","value","fromString","string","encoding","isEncoding","byteLength","actual","write","slice","ArrayBuffer","isView","fromArrayView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","SharedArrayBuffer","valueOf","b","fromObject","obj","isBuffer","len","checked","undefined","numberIsNaN","type","Array","isArray","data","toPrimitive","assertSize","size","array","i","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","m","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","str","byteArray","push","charCodeAt","base64Write","ucs2Write","utf16leToBytes","units","c","hi","lo","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","kMaxLength","TYPED_ARRAY_SUPPORT","typedArraySupport","proto","foo","e","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","Error","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","base64clean","split","src","dst","constructor","name","alphabet","table","i16","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","marker","Item","noop","nextTick","args","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","errors","E","sym","getMessage","Base","NodeError","super","writable","configurable","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","floor","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","abs","fn","BufferBigIntNotDefined","__createBinding","create","o","k","k2","__exportStar","p","hasOwnProperty","_typeof","iterator","isDeepEqual","isDeepStrictEqual","_require$codes","codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","AssertionError","_require$types","isPromise","isRegExp","objectAssign","assign","objectIs","is","Map","lazyLoadComparison","comparison","warned","assert","ok","NO_EXCEPTION_SENTINEL","innerFail","innerOk","argLen","generatedMessage","err","expected","operator","stackStartFn","_len","_key","fail","internalMessage","argsLen","warn","emitWarning","bind","errArgs","equal","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","keys","_this","_classCallCheck","instance","Constructor","forEach","key","test","compareExceptionKey","expectedException","isPrototypeOf","getActual","checkIsPromise","then","catch","waitForActual","promiseFn","Promise","resolve","resultPromise","expectsError","details","fnType","expectsNoError","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","result","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","shift","tmp1","join","_require","keccak224","keccak384","k256","keccak256","keccak512","secp256k1","rlp","BN","createHash","MAX_INTEGER","TWO_POW256","KECCAK256_NULL_S","SHA3_NULL_S","KECCAK256_NULL","SHA3_NULL","KECCAK256_RLP_ARRAY_S","SHA3_RLP_ARRAY_S","KECCAK256_RLP_ARRAY","SHA3_RLP_ARRAY","KECCAK256_RLP_S","SHA3_RLP_S","KECCAK256_RLP","SHA3_RLP","zeros","zeroAddress","bufferToHex","setLengthLeft","setLength","right","toBuffer","setLengthRight","unpad","stripZeros","stripHexPrefix","v","isHexString","padToEven","intToBuffer","isBN","toArrayLike","toArray","bufferToInt","toNumber","fromSigned","num","fromTwos","toUnsigned","toTwos","keccak","bits","sha3","sha256","update","digest","ripemd160","padded","hash","rlphash","encode","isValidPrivate","privateKey","privateKeyVerify","isValidPublic","publicKey","sanitize","publicKeyVerify","pubToAddress","publicToAddress","pubKey","publicKeyConvert","privateToPublic","publicKeyCreate","importPublic","ecsign","msgHash","sig","sign","r","signature","s","recovery","hashPersonalMessage","prefix","ecrecover","senderPubKey","recover","toRpcSig","fromRpcSig","privateToAddress","isValidAddress","address","isZeroAddress","addHexPrefix","toChecksumAddress","toUpperCase","isValidChecksumAddress","generateAddress","nonce","isZero","isPrecompiled","isHexPrefixed","isValidSignature","homestead","SECP256K1_N_DIV_2","SECP256K1_N","gt","cmp","baToJSON","ba","defineProperties","fields","raw","_fields","label","field","serialize","getter","setter","allowZero","allowLess","default","alias","decode","d","__importDefault","mod","__esModule","PromiEvent","JsonRpcErrorCode","makeResponse","makeRequest","makeError","jsonrpc_1","promievent_1","intToHex","hex","prop","inherits","ctor","superCtor","super_","TempCtor","copyProps","SafeBuffer","number","base","endian","negative","words","red","_init","wordSize","window","parseHex4Bits","index","parseHexByte","lowerBound","parseBase","move","dest","left","init","_initNumber","_initArray","_parseHex","_parseBase","ceil","w","_strip","limbLen","limbPow","total","word","imuln","_iaddn","_move","clone","_expand","strip","_normSign","for","groupSizes","groupBases","padding","carry","groupSize","groupBase","modrn","idivn","smallMulTo","ncarry","rword","maxJ","ArrayType","reqLength","allocate","_toArrayLikeLE","position","_toArrayLikeBE","clz32","_countBits","t","_zeroBits","bitLength","zeroBits","width","inotn","iaddn","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","comb10MulTo","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","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","mulp","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","toBitArray","q","iushln","carryMask","newCarry","ishln","iushrn","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","andln","acc","modn","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","__assign","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","step","rejected","done","adopt","__generator","body","f","sent","trys","ops","verb","op","pop","VmErrorResult","COOGResult","OOGResult","debug_1","ethereumjs_util_1","block_1","exceptions_1","precompiles_1","eei_1","util_1","interpreter_1","debug","debugGas","gasLimit","returnValue","gasUsed","exceptionError","VmError","ERROR","OUT_OF_GAS","gasUsedCreateCode","CODESTORE_OUT_OF_GAS","EVM","vm","txContext","block","_vm","_state","stateManager","_tx","_block","_refund","executeMessage","_a","_b","_c","_d","_emit","to","_common","isActivatedEIP","addWarmedAddress","_generateAddress","checkpoint","repeat","caller","delegatecall","_executeCall","_executeCreate","execResult","short","gasRefund","gteHardfork","logs","revert","commit","account","toAccount","errorMessage","e_1","exit","getAccount","_reduceSenderBalance","_addToBalance","_loadCode","isCompiled","runPrecompile","runInterpreter","newContractEvent","e_2","totalGas","returnFee","allowedCodeSize","CodestoreOOG","account_1","codeHash","createdAddress","CREATE_COLLISION","clearContractStorage","param","_allowUnlimitedContractSize","putContractCode","putAccount","opts","eei","oldRefund","interpreterRes","blockchain","Address","zero","callData","callValue","isStatic","depth","gasPrice","origin","Block","contract","codeAddress","selfdestruct","_result","_gasLeft","REVERT","runState","_env","gas","getPrecompile","_VM","precompile","getContractCode","addr","newNonce","salt","generateAddress2","balance","newBalance","VALUE_OVERFLOW","_touchAccount","$SyntaxError","SyntaxError","$Function","Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","getPrototypeOf","__proto__","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isNaN","JSON","parseFloat","Proxy","ReferenceError","Reflect","RegExp","Set","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakRef","WeakSet","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","splice","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","match","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","GetIntrinsic","parts","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","arrayContainsArray","superset","subset","some","getBinarySize","fromAscii","stringValue","fromUtf8","toAscii","substring","toUtf8","getKeys","params","allowEmpty","getLength","safeParseInt","encodeLength","hexLength","_decode","llength","innerRemainder","decoded","remainder","totalLength","integer","inputBuf","stream","inputBuffer","prevTime","createDebug","namespace","enabled","curr","ms","coerce","unshift","format","formatter","formatters","formatArgs","logFn","log","useColors","color","selectColor","colors","disable","enable","namespaces","save","names","skips","humanize","errorType","interpreter","BaseJsonRpcType","toBuffers","toStrings","bufCache","strCache","utils_1","utils_2","constants_1","toStringTag","BUFFER_EMPTY","uintToBuffer","bigIntToBuffer","fixedValue","_depth","_options","ReflectOwnKeys","R","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","emitter","eventListener","errorListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","events","existing","newListener","count","ProcessEmitWarning","warning","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","setMaxListeners","getMaxListeners","doError","er","context","handler","originalListener","spliceOne","rawListeners","eventNames","Stream","EE","Readable","Writable","Duplex","Transform","PassThrough","finished","pipeline","pipe","options","source","ondata","chunk","pause","ondrain","readable","resume","_isStdio","onend","onclose","didOnEnd","destroy","onerror","cleanup","getOwnPropertyDescriptors","descriptors","formatRegExp","isString","objects","stringify","isNull","isObject","deprecate","noDeprecation","deprecated","throwDeprecation","traceDeprecation","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","seen","stylize","stylizeNoColor","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","primitive","formatPrimitive","simple","isNumber","visibleKeys","arrayToHash","idx","isError","formatError","isDate","braces","toUTCString","formatArray","formatProperty","map","reduceToSingleString","reduce","cur","numLinesEst","line","ar","objectToString","pad","debuglog","pid","types","isNullOrUndefined","isSymbol","isNativeError","isPrimitive","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","promisify","original","promiseResolve","promiseReject","promise","custom","callbackify","callbackified","maybeCb","rej","__setModuleDefault","__importStar","__read","__spread","DBManager","cache_1","operation_1","level","db","common","_db","_cache","td","header","numberToHash","hashToNumber","getHeads","heads","DBTarget","Heads","getHeadHeader","HeadHeader","getHeadBlock","HeadBlock","getCliqueLatestSignerStates","signerStates","error_1","CliqueSignerStates","getCliqueLatestVotes","signerVotes","error_2","CliqueVotes","vote","getCliqueLatestBlockSigners","blockSigners","error_3","CliqueBlockSigners","getBlock","blockId","error_4","blockData","getHeader","getBody","hardforkByBlockNumber","fromValuesArray","blockHash","blockNumber","Body","encodedHeader","Header","BlockHeader","fromRLPSerializedHeader","getTotalDifficulty","TotalDifficulty","HashToNumber","NotFoundError","NumberToHash","dbOperationTarget","dbGetOperation","cacheString","dbKey","dbOpts","DBOp","baseDBOp","batch","convertedOps","updateCache","__values","rlp_1","merkle_patricia_tree_1","bloom_1","DAOConfig","opcodes_1","DAOAccountList","DAOAccounts","DAORefundContract","applyBlock","blockResults","skipBlockValidation","validate","applyTransactions","consensusType","assignBlockRewards","bloom","receiptTrie","receipts","txResults","txIdx","tx","skipBalance","skipNonce","txRes","abstractTxReceipt","txReceipt","encodedReceipt","receiptLog","statusInfo","stateRoot","BaseTrie","transactions","runTx","bitvector","transactionType","status","getStateRoot","values","put","receiptRoot","results","minerReward","ommers","ommers_1","ommers_1_1","ommer","reward_1","e_1_1","reward","uncleHeaders","calculateOmmerReward","ommerBlockNumber","heightDiff","rewardAccount","coinbase","return","calculateMinerReward","ommersNum","totalNiblingReward","_applyDAOHardfork","DAORefundContractAddress","DAORefundAccount","DAOAccountList_1","DAOAccountList_1_1","e_2_1","accountExists","Account","runBlock","generateStateRoot","err_1","afterBlockEvent","generate","_hardforkByBlockNumber","setHardforkByBlockNumber","hardfork","setStateRoot","hardforkIsActiveOnChain","hardforkBlockBN","fromBlockData","logsBloom","assert_1","bn_js_1","ethjs_util_1","bytes_1","hash_1","helpers_1","types_1","_validate","accountData","serialized","bnToRlp","hexAddress","assertIsHexString","eip1191ChainId","toType","TypeOutput","keccakFromString","assertIsBuffer","nonceBN","initCode","secp256k1_1","random_1","createPrivateKey","pk","getRandomBytes","createPrivateKeySync","getRandomBytesSync","__export","assertIsString","load","storage","DEBUG","lastC","removeItem","document","documentElement","WebkitAppearance","firebug","exception","navigator","userAgent","$1","chrome","local","localstorage","localStorage","handlers","EIP1283_1","EIP2200_1","EIP2929_1","trap","STOP","popN","exponent","OUT_OF_RANGE","amount","useGas","signBit","isSigned","shiftedOutWidth","subMemUsage","memory","divCeil","getAddress","addressBN","addressToBuffer","accessAddressEIP2929","getExternalBalance","getTxOrigin","getCaller","getCallValue","getCallDataSize","loaded","getCallData","memOffset","dataOffset","dataLength","getDataSlice","memOffsetNum","dataLengthNum","extend","getCodeSize","codeOffset","getCode","lengthNum","getExternalCodeSize","getExternalCode","isAccountEmpty","getReturnDataSize","returnDataOffset","getReturnData","getTxGasPrice","getBlockNumber","getBlockHash","getBlockCoinbase","getBlockTimestamp","getBlockDifficulty","getBlockGasLimit","getChainId","getSelfBalance","offsetNum","byte","keyBuf","valueBN","accessStorageEIP2929","storageLoad","STATIC_STATE_CHANGE","getContractStorage","updateSstoreGasEIP1283","setLengthLeftStorage","updateSstoreGasEIP2200","updateSstoreGas","storageStore","INVALID_JUMP","describeLocation","destNum","jumpIsValid","programCounter","memoryWordCount","getGasLeft","INVALID_BEGINSUB","returnStack","INVALID_RETURNSUB","INVALID_JUMPSUB","jumpSubIsValid","numToPush","opCode","stackPos","dup","memLength","topicsCount","topicsBuf","mem","maxCallGas","create2","currentGasLimit","toAddr","inOffset","inLength","outOffset","outLength","toAddress","writeCallOutput","callCode","callDelegate","callStatic","returnData","finish","selfdestructToAddressBN","selfdestructToAddress","deductGas","selfDestruct","pushFn","dupFn","swapFn","ripemd160FromArray","ripemd160FromString","sha256FromArray","sha256FromString","keccakFromArray","keccakFromHexString","assertIsArray","_sha256","_ripemd160","keccak_1","extendStatics","__extends","__","events_1","crc_32_1","chains_1","hardforks_1","eips_1","Common","_super","_supportedHardforks","_eips","_customChains","customChains","_chainParams","setChain","chain","DEFAULT_HARDFORK","defaultHardfork","_hardfork","supportedHardforks","setHardfork","eips","setEIPs","forCustomChain","baseChain","customChainParams","standardChainParams","_getChainParams","initializedChains","_getInitializedChains","required_1","required_1_1","_isSupportedHardfork","HARDFORK_CHANGES_1","hardforks","HARDFORK_CHANGES_1_1","getHardforkByBlockNumber","e_3","hf","e_3_1","_chooseHardfork","onlySupported","_getHardfork","e_4","hfs","hfs_1","hfs_1_1","e_4_1","chainName","e_5","e_5_1","e_6","_loop_1","eip","EIPs","minHF","this_1","requiredEIPs","elem","eips_2","eips_2_1","e_6_1","topic","e_7","paramByEIP","e_7_1","paramByHardfork","e_8","e_9","HARDFORK_CHANGES_2","HARDFORK_CHANGES_2_1","hfChanges","hfEIPs","hfEIPs_1","hfEIPs_1_1","valueEIP","e_9_1","e_8_1","eipParams","paramByBlock","activeHfs","activeHardforks","e_10","HARDFORK_CHANGES_3","HARDFORK_CHANGES_3_1","e_10_1","hardforkIsActiveOnBlock","hfBlock","activeOnBlock","hardforkGteHardfork","hardfork1","hardfork2","e_11","onlyActive","posHf1","posHf2","hardforks_2","hardforks_2_1","e_11_1","e_12","e_12_1","e_13","hfs_2","hfs_2_1","e_13_1","activeHardfork","hardforkBlock","isHardforkBlock","nextHardforkBlock","nextHardforkBlockBN","isNextHardforkBlock","_calcForkHash","e_14","genesis","hfBuffer","prevBlock","hfBlockBuffer","padStart","e_14_1","forkHash","hardforkForForkHash","resArray","filter","bootstrapNodes","dnsNetworks","chainId","chainIdBN","networkId","networkIdBN","consensusAlgorithm","consensusConfig","utils","minAssert","minUtils","zero2","toHex","getNAF","naf","getJSF","k1","jsf","m8","d1","d2","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","ethjsUtil","unpadHexString","unpadArray","unpadBuffer","encodeRange","enc","encodedLength","encLength","lLength","items","encoded","ranges","lengthEncodedLength","entry","Data","ByteLength","assertEqual","EthereumOptionsConfig","EthereumDefaults","chain_options_1","database_options_1","logging_options_1","miner_options_1","wallet_options_1","fork_options_1","options_1","ChainOptions","database","DatabaseOptions","logging","LoggingOptions","miner","MinerOptions","wallet","WalletOptions","fork","ForkOptions","OptionsConfig","semaphore_async_await_1","ethash_1","common_1","manager_1","clique_1","Blockchain","CLIQUE_SIGNER_HISTORY_BLOCK_LIMIT","_cliqueLatestSignerStates","_cliqueLatestVotes","_cliqueLatestBlockSigners","_hardforkByHeadBlockNumber","hardforkByHeadBlockNumber","_validateConsensus","validateConsensus","_validateBlocks","validateBlocks","dbManager","_ethash","_heads","_lock","genesisBlock","isGenesis","initPromise","fromBlocksData","blocksData","blocksData_1","blocksData_1_1","putBlock","rawHead","_headHeaderHash","_genesis","dbGenesisBlock","genesisHash_1","genesisHash","dbOps_1","latestHeader","DBSetTD","difficulty","DBSetBlockOrHeader","DBSaveLookups","cliqueSaveGenesisSigners","_headBlockHash","_getHeader","initAndLock","action","runWithLock","acquire","release","_requireClique","cliqueCheckRecentlySigned","cliqueSignerLimit","signers","cliqueSigner","genesisSignerState","cliqueEpochTransitionSigners","cliqueUpdateSignerStates","cliqueUpdateVotes","signerState","dbOps","lastBlockNumber","blockLimit_1","states","lastItem","formatted","signer","_e","cliqueActiveSigners","signer_1","beneficiary_1","latestVote","state_1","lastEpochBlockNumber","blockLimit_2","limit_1","activeSigners","consensus","votes","beneficiaryVotesAUTH","_loop_2","votes_1","votes_1_1","numBeneficiaryVotesAUTH","beneficiaryVotesDROP","_loop_3","votes_2","votes_2_1","numBeneficiaryVotesDROP","newSignerState","epoch","CLIQUE_NONCE_AUTH","voteCMP","sort","CLIQUE_NONCE_DROP","cliqueUpdateLatestBlockSigners","length_1","getIteratorHead","_getBlock","getHead","getLatestHeader","getLatestBlock","putBlocks","blocks","_putBlockOrHeader","putHeaders","headers","putHeader","item","currentTd","checkpointSigners","cSigner","parentTd","_f","_g","verifyPOW","cliqueVerifySignature","cliqueIsEpochTransition","entries","parentHash","_deleteCanonicalChainReferences","_rebuildCanonical","DBSetHashToNumber","_saveHeadOps","getBlocks","maxBlocks","skip","reverse","nextBlock","error_5","nextBlockNumber","selectNeededHashes","hashes","error_6","delBlock","_delBlock","blockHeader","canonicalHash","inCanonical","safeNumberToHash","_delChild","headHash","childHeader","error_7","del","_getCanonicalHeader","onBlock","_iterator","lastBlock","headBlockNumber","blocksRanCounter","reorg","error_8","_saveHeads","setIteratorHead","tag","setHead","currentNumber","currentCanonicalHash","staleHash","staleHeads","staleHeadBlock","loopCondition","error_9","error_10","ES5Type","Type","CheckpointTrie","baseTrie_1","checkpointDb_1","_i","CheckpointDB","isCheckpoint","lock","wait","signal","includeCheckpoints","trie","_leveldb","checkpoints","Trie","isRawNode","decodeNode","decodeRawNode","LeafNode","ExtensionNode","BranchNode","nibbles_1","hex_1","_branches","_value","fromArray","node","setBranch","getBranch","getChildren","children","nibbles","_nibbles","encodeKey","decodeKey","removeHexPrefix","encodedKey","nibblesToBuffer","bufferToNibbles","isTerminator","des","DEFAULT_GAS_LIMIT","uncleHash","transactionsTrie","extraData","mixHash","baseFeePerGas","_errorPostfix","initWithGenesisHeader","_validateHeaderFields","_checkDAOExtraData","calcDifficultyFromHeader","canonicalDifficulty","minExtraDataLength","CLIQUE_EXTRA_VANITY","CLIQUE_EXTRA_SEAL","remainingLength","cliqueSealBlock","freeze","fromHeaderData","headerData","parentBlockHeader","dif","blockTs","parentTs","parentDif","minimumDifficulty","uncleAddend","cutoff","exp","validateDifficulty","validateCliqueDifficulty","CLIQUE_DIFF_INTURN","CLIQUE_DIFF_NOTURN","signerIndex","findIndex","inTurn","validateGasLimit","parentGasLimit","elasticity","maxGasLimit","minGasLimit","height","minLength","signerLength","parentHeader","period","initialBaseFee","expectedBaseFee","_error","_getHeaderByHash","calcNextBaseFee","nextBaseFee","parentGasTarget","gasUsedDelta","baseFeeMaxChangeDenominator","calculatedDelta","rawItems","cliqueSigHash","cliqueExtraVanity","cliqueExtraSeal","signatureB","extraDataWithoutSeal","signerBuffer","signerList","start_1","signerAddress","find","extraSeal","fromPublicKey","jsonDict","bnToHex","DAO_ExtraData","DAO_ForceExtraDataRange","DAOActivationBlock","bufReverse","fnvBuffer","fnv","getSeed","getEpoc","getFullSize","getCacheSize","MR","DATASET_BYTES_INIT","DATASET_BYTES_GROWTH","CACHE_BYTES_INIT","CACHE_BYTES_GROWTH","CACHE_MULTIPLIER","EPOCH_LENGTH","MIX_BYTES","HASH_BYTES","DATASET_PARENTS","CACHE_ROUNDS","ACCESSES","WORD_BYTES","epoc","mr","sz","seed","begin","check","it","globalThis","GetConnector","DefaultOptionsByName","DefaultFlavor","FilecoinFlavorName","EthereumFlavorName","ethereum_1","ethereum_options_1","filecoin_options_1","colors_1","chalk_1","NEED_HELP","COMMUNITY_LINK","flavor","providerOptions","executor","Connector","TruffleColors","porsche","turquoise","FilecoinDefaults","SecureTrie","prove","createProof","verifyProof","rootHash","proof","secureTrie","mcl","mclInitPromise","blockchain_1","index_1","runCode_1","runCall_1","runTx_1","runBlock_1","runBlockchain_1","AsyncEventEmitter","isBrowser","BLS12_381","VM","_isInitialized","_opts","supportedEIPs","_opcodes","getOpcodesForHF","DefaultStateManager","allowUnlimitedContractSize","_mcl","mcl_1","activatePrecompiles","all","precompiles","fromAccountData","setMapToMode","IRTF","verifyOrderG1","verifyOrderG2","runBlockchain","runCall","runCode","getActiveOpcodes","tx_1","header_1","txTrie","txsData","uhsData","txData","TransactionFactory","fromTxData","uhData","uh","fromRLPSerializedBlock","fromBlockBodyData","uncleHeaderData","genTxTrie","validateTransactionsTrie","validateTransactions","stringError","errs","maxFeePerGas","validateUncles","validateData","txErrors","validateUnclesHash","uncleHashes","_validateUncleHeaders","parentBlock","canonicalBlockMap","lowestUncleNumber","canonicalChainHashes","includedUncles","_getBlockByHash","global","shared","has","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","evm_1","message_1","txContext_1","_runTx","basefee","fromAccount","cost","txCost","evm","actualTxCost","txCostDiff","minerAccount","keys_1","keys_1_1","event","getSenderAddress","getActivePrecompiles","getBaseFee","getUpfrontCost","txLogsBloom","topics","amountSpent","deleteAccount","cleanupTouchedAccounts","clearOriginalStorageCache","transaction","skipBlockGasLimitValidation","clearWarmedAccounts","AccessListJSON","accessListItem","storageKeys","storageKey","addWarmedStorage","callBind","$indexOf","callBoundIntrinsic","isSurrogatePair","htonl","zero8","toHex32","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","db_1","readStream_1","walkController_1","trieNode_1","deleteFromDB","EMPTY_TRIE_ROOT","DB","_root","_deleteFromDB","setRoot","checkRoot","_lookupNode","findPath","_createInitialNode","_updateNode","_deleteNode","targetKey","onFound","nodeRef","keyProgress","walkController","keyRemainder","branchIndex","matchingNibbleLength","onlyBranchIndex","doKeysMatch","allChildren","walkTrie","WalkController","newWalk","_walkTrie","newNode","lookupNode","foundNode","toSave","lastNode","matchLeaf","newLeaf","lastKey","matchingLength","newBranchNode","newKey","newExtNode","branchKey","formattedNode","newLeafNode","_formatNode","_saveStack","processBranchNode","parentNode","opStack","lastNodeKey","branchNodes","branchNode","branchNodeKey","extensionNode","parentKey","lastRoot","topLevel","remove","rlpNode","hashRoot","ops_1","ops_1_1","fromProof","nodeValue","stackElem","proofTrie","createReadStream","TrieReadStream","_findDbNodes","outerOnFound","_findValueNodes","fullKey","ENCODING_OPTS","keyEncoding","valueEncoding","leveldb","notFound","exec","toObject","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","object","getFullname","MASK_160","bufferStr","getOriginalContractStorage","validJumps","validJumpSubs","gasLeft","gasAllowed","newMemoryWordCount","fee","quadCoeff","highestMemCost","sstoreResetCost","adjustSstoreGasEIP2929","refundGas","_getId","_filters","_subscriptions","_blockchain","_wallet","__decorate","decorators","decorate","__classPrivateFieldSet","privateMap","__classPrivateFieldGet","ethereum_utils_1","ethereum_block_1","ethereum_transaction_1","eth_sig_util_1","wallet_1","gas_estimator_1","assert_arg_length_1","filter_parsing_1","ethereum_address_1","CLIENT_VERSION","PROTOCOL_VERSION","RPC_MODULES","eth","net","rpc","web3","personal","assertExceptionalTransactions","baseError","execException","VM_EXCEPTIONS","VM_EXCEPTION","EthereumApi","id","Quantity","dbName","vmErrorsOnRPCResponse","mine","Tag","LATEST","blockProm","getRawByBlockNumber","getEffectiveNumber","blockStateRoot","posBuff","paddedPosBuff","addressData","seconds","milliseconds","increaseTime","getTime","setTime","snapshotId","snapshot","duration","unlockUnknownAccount","lowerAddress","knownAccounts","lockAccount","threads","legacyInstamine","extra","RPCQUANTITY_ZERO","generateVM","RuntimeTransaction","callGasLimit","RuntimeBlock","toBigInt","totalDifficulty","runArgs","toVmTransaction","gasEstimate","getByHash","blockNum","rawBlock","rawTransactions","getNumberFromHash","eth_getBlockByHash","eth_getBlockByNumber","uncleIndex","filterId","powHash","hashRate","clientID","isStarted","addresses","latest","accounts","getBalance","setContext","addressBuf","addressStateRoot","transactionHash","hashBuffer","transactionPool","transactionReceipts","dataHash","txHash","transactionPromise","receiptPromise","blockPromise","receipt","blockTime","logger","isKnownAccount","isUnlockedAccount","unlockedAccounts","defaultLimit","defaultTransactionGasLimit","RPCQUANTITY_EMPTY","eth_estimateGas","secretKey","queueTransaction","messageHash","typedData","EIP712Domain","domain","primaryType","signTypedData_v4","subscriptionName","subscriptions","subscription","promiEvent","unsubscribe","receiptsRoot","transactionsRoot","sha3Uncles","parse","parseFilterDetails","blockLogs","CodedError","METHOD_NOT_FOUND","subscriptionId","delete","updates","FilterTypes","pendingTransaction","fromBlock","toBlock","parseFilterRange","eth_getLogs","getLogs","getNonce","simulatedTransaction","simulateTransaction","traceTransaction","transactionIndex","contractAddress","startKey","maxResult","storageRangeAt","passphrase","newAccount","createRandomAccount","strAddress","encryptedKeyFile","encrypt","encryptedKeyFiles","rawKey","createAccountFromPrivateKey","unlockAccount","decrypt","signAndHash","postData","assertArgLength","MD5","RIPEMD160","sha","Hash","_hash","_update","_final","alg","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","fin","keyValueMap","batchOp_1","currentKeyValueMap_1","value_1","opStack_1","opStack_1_1","BaseTransaction","txOptions","_type","toB","vB","rB","sB","_validateCannotExceedMaxInteger","verifySignature","getDataFee","toCreationAddress","txDataZero","txDataNonZero","getSenderPublicKey","getMessageToSign","_processSignature","genesisStates_1","_trie","_storageTries","_touched","_touchedStack","_checkpointCount","_originalStorageCache","_accessedStorage","getOrLoad","isContract","isEmpty","touchAccount","_lookupStorageTrie","storageTrie","_getStorageTrie","addressHex","keyHex","_clearOriginalStorageCache","_modifyContractStorage","modifyTrie","putContractStorage","encodedValue","storageMap","mapTarget","slotSet","addressString","storageSet","flush","touched","ripemdPrecompileAddress","force","clear","dumpStorage","hasGenesisState","generateCanonicalGenesis","generateGenesis","genesisStateByName","initState","addresses_1","addresses_1_1","addressBuffer","accountIsEmpty","lookup","keyIsDeleted","isWarmedAddress","emptyStorage","isWarmedStorage","slot","addressKey","currentMap","touchedArray","touchedArray_1","touchedArray_1_1","fails","EEI","_evm","_lastReturned","subRefund","REFUND_EXHAUSTED","_selfDestruct","numberOfTopics","INTERNAL_ERROR","_baseCall","_getReturnCode","BLS12_381_ToFp2Point","BLS12_381_ToFpPoint","BLS12_381_ToFrPoint","BLS12_381_FromG2Point","BLS12_381_ToG2Point","BLS12_381_FromG1Point","BLS12_381_ToG1Point","fieldModulus","fpXCoordinate","fpYCoordinate","BLS_12_381_FP_NOT_IN_FIELD","fp_x","Fp","fp_y","fp2","Fp2","setStr","set_a","set_b","p_x","p_y","ZeroString48Bytes","G1","Fp_X","Fp_Y","One","setX","setY","setZ","isValidOrder","BLS_12_381_POINT_NOT_ON_CURVE","isValid","decodeStr","getStr","xval","yval","xBuffer","yBuffer","p_x_1","p_x_2","p_y_1","p_y_2","ZeroBytes64","G2","Fp2X","Fp2Y","FpOne","FpZero","Fp2One","mclPoint","x_1","x_2","y_1","y_2","xBuffer1","xBuffer2","yBuffer1","yBuffer2","mclHex","fromHexStr","Fr","setBigEndianMod","fpCoordinate","fp","async","cond","ForkTrie","trie_1","subleveldown_1","lexico","MetadataSingletons","LEVELDOWN_OPTIONS","currentKeyValueMap","batchOp","GanacheTrie","accountFromFallback","fallback","selectValidForkBlockNumber","codeProm","request","promises","codeHex","storageFromFallback","compressed","metadata","selfAddress","wasDeleted","createKeyStream","createDelKey","delKey","deletedKey","metaDataPutPromise","BUFFER_ZERO","keyWasDeleted","HttpHandler","http_1","https_1","base_handler_1","deferred_1","JSONRPC_PREFIX","BaseHandler","abortSignal","url","accept","protocol","_request","agent","Agent","keepAlive","scheduling","messageLength","method","requestCache","hostname","host","port","pathname","search","requestOptions","path","limiter","handle","aborted","AbortError","deferred","req","handleChunkedResponse","handleLengthedResponse","resStr","shortStr","startsWith","endsWith","abort","finally","_providerOptions","_status","_app_1","_httpServer","_listenSocket_1","_connector","_websocketServer","_initializer","Server","_DefaultServerOptions","ServerStatus","promise_allsettled_1","aggregate_error_1","uws_js_unofficial_1","flavors_1","connector_loader_1","ws_server_1","http_server_1","emittery_1","serverDefaults","providerAndServerOptions","unknown","serverOptionsConfig","normalize","ready","connector","initialize","provider","_app","App","server","callback","callbackIsFunction","closing","openingOrOpen","opening","initializePromise","shim","allSettled","listen","listenSocket","closed","open","promiseResults","close","closingOrClosed","_listenSocket","us_listen_socket_close","KNOWN_CHAINIDS","WEI","RPCQUANTITY_ONE","BUFFER_8_ZERO","BUFFER_32_ZERO","ACCOUNT_ZERO","BUFFER_256_ZERO","json_rpc_quantity_1","objectKeys","allowHalfOpen","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","_hdKey","_randomRng","_randomBytes","_initializeAccounts","_lockAccount","bip39_1","hdkey_1","seedrandom_1","crypto_1","fs_1","SCRYPT_PARAMS","dklen","CIPHER","scrypt","derivedKey","uncompressedPublicKeyToAddress","uncompressedPublicKey","compresedPublicKey","hasher","absorb","asUUID","uuid","Wallet","lockTimers","rand","balanceParts","defaultBalance","significand","fractionalStr","fractional","magnitude","defaultBalanceInWei","etherInWei","accountsLength","givenAccounts","hdKey","hdPath","acct","derive","createAccount","numerOfAccounts","totalAccounts","fromMasterSeed","mnemonicToSeedSync","mnemonic","alea","initialAccounts","givenUnlockedAccounts","ul","addressOrIndex","isSafeInteger","accountsCache","secure","accountKeysPath","fileData","private_keys","writeFileSync","random","iv","cipher","createCipheriv","ciphertext","mac","crypto","cipherparams","kdf","kdfParams","keyfile","crypt","localMac","createDecipheriv","existingTimer","durationMs","unref","MAX_BYTES","MAX_UINT32","msCrypto","getRandomValues","randomBytes","generated","oldBrowser","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayReduce","iteratee","accumulator","initAccum","isHostObject","mapToArray","overArg","func","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","reIsNative","getPrototype","objectCreate","propertyIsEnumerable","nativeGetSymbols","nativeIsBuffer","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isArguments","isArrayLikeObject","isObjectLike","isArrayLike","baseTimes","skipIndexes","isIndex","assignValue","objValue","assocIndexOf","baseClone","isDeep","isFull","customizer","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","initCloneObject","isPrototype","baseCreate","copySymbols","copyObject","getSymbols","baseAssign","initCloneByTag","cloneFunc","Ctor","cloneArrayBuffer","cloneDataView","dataView","cloneTypedArray","typedArray","cloneMap","cloneRegExp","regexp","lastIndex","cloneSet","cloneSymbol","symbol","stacked","props","getAllKeys","baseGetAllKeys","keysFunc","symbolsFunc","arrayPush","arrayEach","subValue","baseIsNative","isMasked","arrayBuffer","newValue","getMapData","isKeyable","getValue","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","stackClear","stackDelete","stackGet","stackHas","stackSet","cache","pairs","LARGE_ARRAY_SIZE","stubArray","baseGetTag","other","ctorString","isLength","stubFalse","baseKeys","cloneDeep","_miner","_blockBeingSavedPromise","_timer","_database","_instamine","_saveNewBlock","_emitNewBlock","_getTransactionLogOutput","_handleNewBlockData","_readyNextBlock","_isPaused","_commitAccounts","_initializeGenesisBlock","_timeAdjustment","_currentTime","_deleteBlockData","_snapshots","_traceTransaction","_prepareNextBlock","Status","os_1","miner_1","database_1","vm_1","account_manager_1","block_manager_1","blocklog_manager_1","transaction_manager_1","run_transactions_1","state_manager_1","trie_2","transaction_receipt_manager_1","makeTrie","Typed","starting","blockNumberQ","BlockLogs","timestampStr","logOutput","serializeForDb","getReceipt","append","hashedKey","EOL","blockInfo","finalize","previousBlock","previousNumber","blockGasLimit","started","maxTransactions","onlyOneBlock","paused","createVmFromStateTrie","stateTrie","activatePrecompile","ForkStateManager","sm","rawBlockNumber","now","blocksToDelete","getTransactions","snaps","unsubscribeFromBlocks","newBlock","currentDepth","storageStack","structLogs","TraceData","TraceDataFactory","stepListener","gasUsedPreviousStep","disableMemory","disableStack","stackItem","structLog","gasCost","opcode","pc","disableStorage","eventDepth","TraceStorageMap","beforeTxListener","runTransactions","targetBlock","instamine","info","createCommon","comment","blockIndexes","firstBlockTime","earliest","txPool","minerOpts","executables","nullResolved","mineAll","clearListeners","_threads","snapshots","timeAdjustment","rawValue","snapshotIndex","currentHash","snapshotBlock","snapshotHeader","snapshotHash","blockPromises","blockList","setStateRootSync","hasToAddress","toBuf","calculateIntrinsicGas","RuntimeError","RETURN_TYPES","RETURN_VALUE","transactionHashBuffer","txIndex","contractAddressBuffer","nextKey","startKeyBuffer","findInsertPosition","getStorageKeys","stopping","stopped","prioritizedTaskExecutor_1","onNode","taskExecutor","PrioritizedTaskExecutor","startWalk","processNode","children_1","children_1_1","child","keyExtension","childRef","childKey","priority","pushNodeToQueue","executeOrQueue","taskFinishedCallback","childNode","childIndex","prio","freeProcess","nodeUtil","require","_Type","Manager","getRaw","_provider","_handle","Provider","provider_1","payload","connection","isHttp","METHOD_NOT_SUPPORTED","_requestRaw","PARSE_ERROR","json","disconnect","anyMap","eventsMap","producersMap","anyProducer","resolvedPromise","listenerAdded","listenerRemoved","assertEventName","eventName","assertListener","getListeners","getEventProducers","producers","isFinished","producer","asyncIterator","defaultMethodNamesOrAssert","methodNames","allEmitteryMethods","methodName","isListenerSymbol","Emittery","emitteryPropertyName","getEmitteryProperty","emitteryMethodCaller","eventData","enqueueProducers","enqueue","anyListeners","staticListeners","staticAnyListeners","offAny","_api","_executor","_send","_logRequest","_legacySendPayloads","_legacySendPayload","api_1","lodash_clonedeep_1","fork_1","EthereumProvider","arg1","arg2","response","verbose","stop","payloads","mainError","responses","Fork","parseCoinbase","unlocked","rawResult","execute","jsonrpc","fromBuf","saltBuf","initCodeBuf","blockSize","finalSize","_finalSize","_blockSize","accum","assigned","rem","lowBits","highBits","rawInput","_currentlyExecutingPrice","_origins","_pending","_isBusy","_paused","_resumer","_resolver","_executables","_createBlock","_priced","_mine","_mineTxs","_removeBestAndOrigin","_reset","_setPricedHeap","_updatePricedHeap","replace_from_heap_1","updateBloom","blockBloom","sortByPrice","Miner","createBlock","Heap","runtimeBlock","pending","inProgress","keepMining","priced","blockTransactions","finalizedBlockData","numTransactions","blockGasLeft","blockGasUsed","best","peek","locked","txKey","fillFromResult","pendingOrigin","removeBest","Params","TRANSACTION_GAS","emitBlockProm","TRANSACTION_HASH","origins","mapping","price","checkpointTrie_1","secure_1","objectMode","_started","_read","_cleanupDirectory","_closed","_rootStore","_cleanup","tmp_promise_1","levelup_1","leveldown_1","encoding_down_1","setGracefulCleanup","tmpOptions","unsafeCleanup","Database","directory","levelupOptions","store","dbPath","dirInfo","leveldownOpts","rootDb","originalPut","originalDel","prom","wasClosed","legacyTransaction_1","eip2930Transaction_1","transactionFactory_1","eip1559Transaction_1","baseTransaction_1","Transaction","_validateTxV","fromSerializedTx","fromRlpSerializedTx","_unsignedTxImplementsEIP155","_getMessageToSign","withEIP155","hashMessage","getMessageToVerifySignature","_signedTxImplementsEIP155","N_DIV_2","vBN","chainIdDoubled","onEIP155BlockOrLater","TRANSACTION_TYPE_BUFFER","AccessListEIP2930Transaction","accessList","accessListData","AccessLists","getAccessListData","verifyAccessList","getDataFeeEIP2930","yParity","accessListJSON","getAccessListJSON","FeeMarketEIP1559Transaction","maxPriorityFeePerGas","baseFee","Ethash","cacheDB","mkcache","cacheSize","calcDatasetItem","mix","cacheIndex","fullSize","mixhashes","newdata","cmix","cacheHash","headerHash","rawHeader","loadEpoc","findLastSeed","foundEpoc","_verifyPOW","IE8_DOM_DEFINE","anObject","$defineProperty","O","Attributes","Tree","Cache","_checkpoints","fromTrie","modified","keyStr","fromRlpSerializedAccount","deleted","_lookupAccount","warm","accountRlp","hasNext","insert","memory_1","stack_1","Interpreter","opDebuggers","_eei","_runState","valid","_getValidJumpDests","jumps","jumpSubs","_runStepHook","runStep","opInfo","opFn","lookupOpInfo","INVALID_OPCODE","getOpHandler","isAsync","eventObj","hexStack","opTrace","fullName","_store","curOpCode","Opcode","opcodes","0","hardforkOpcodes","hardforkName","eipOpcodes","opcodeBuilder","eipOpcodes_1","eipOpcodes_1_1","eipOps","createOpcodes","bn128","ec_add","cwrap","ec_mul","ec_pairing","bn128add","bn128mul","pairing","bn128pairing","_blockIndexes","EMPTY_BUFFER","BlockManager","fromFallback","tagOrBlockNumber","rawFromJSON","bm","updateTaggedBlocks","PENDING","EARLIEST","getBlockByTag","numBuf","secondaryKey","createValueStream","BlockLogManager","fromJSON","toBlockNumber","parseFilter","pendingLogsPromises","fromBlockNumber","blockLogsRange","filteredBlockLogs","_queue","transaction_pool_1","promise_queue_1","TransactionManager","FrozenTransaction","insertion","prepareTransaction","drain","isBusy","_priceBump","_accountPromises","_validateTransaction","byNonce","TransactionPool","GAS_LIMIT","INVALID_INPUT","INTRINSIC_GAS_TOO_LOW","transactionNonce","NONCE_TOO_LOW","transactorNoncePromise","highestNonce","queuedOriginTransactions","isExecutableTransaction","executableOriginTransactions","pendingArray","priceBump","newGasPrice","currentPendingTx","thisNonce","thisPricePremium","TRANSACTION_REJECTED","transactor","transactorNonce","fakePrivateKey","nextExpectedNonce","nextTx","_tryResolve","_tryResolveChain","entry_1","PromiseQueue","resolved","cancelledQueue","mixin","TransactionReceiptManager","TransactionReceipt","cumulativeGasUsed","fromValues","_abortController","_handler","_accounts","_setCommonFromChain","_setBlockDataFromChainAndOptions","_syncAccounts","abort_controller_1","http_handler_1","ws_handler_1","fetchNetworkId","networkIdStr","fetchBlock","chainIdHex","latestBlockNumberHex","latestBlockNumberInt","fetchNonce","forkingOptions","WsHandler","paramCopy","send","$apply","$call","$reflectApply","$max","originalFunction","applyBind","IsPropertyKey","argument","_handlePost","_handleOptions","content_types_1","http_response_codes_1","prepareCORSResponseHeaders","acrh","writeHeader","sendResponse","statusCode","contentType","writeHeaders","cork","writeStatus","HttpServer","app","onAborted","onData","isLast","BAD_REQUEST","PLAIN","OK","NO_CONTENT","post","rpcEndpoint","IM_A_TEAPOT","any","connectionHeader","NOT_FOUND","createErrorType","_Base","arg3","_inheritsLoose","subClass","superClass","oneOf","thing","determiner","this_len","outputType","bn","hasPartialSignature","toValidLengthAddress","signing_1","base_transaction_1","transaction_receipt_1","fieldName","ONE_BUFFER","finalizer","finalized","encodedData","encodedSignature","computeIntrinsics","userFrom","ending","txAndExtraData","vmResult","_event","_gasUsed","STATUSES","extras","epilogue","blockLog","hash_utils_1","createKeccakHash","createHashFunction","Semaphore","permits","promiseResolverQueue","getPermits","resolver","waitFor","tryAcquire","drainPermits","permitCount","nextResolver","PrecompileAvailabilityCheck","_01_ecrecover_1","_02_sha256_1","_03_ripemd160_1","_04_identity_1","_05_modexp_1","_06_ecadd_1","_07_ecmul_1","_08_ecpairing_1","_09_blake2f_1","_0a_bls12_g1add_1","_0b_bls12_g1mul_1","_0c_bls12_g1multiexp_1","_0d_bls12_g2add_1","_0e_bls12_g2mul_1","_0f_bls12_g2multiexp_1","_10_bls12_pairing_1","_11_bls12_map_fp_to_g1_1","_12_bls12_map_fp2_to_g2_1","precompileAvailability","Hardfork","EIP","availability","activePrecompiles","emptyBuffer","usedAccessList","isAccessList","newAccessList","storageItems","jsonItem","storageSlots","storageSlot","accessListStorageKeyCost","accessListAddressCost","slots","JSONItem","_requestCoordinator","Executor","has_own_1","requestCoordinator","api","_process","RequestCoordinator","runningTasks","thisArgument","argumentsList","ERR_STREAM_PREMATURE_CLOSE","eos","called","onlegacyfinish","onfinish","writableEnded","readableEnded","endEmitted","onrequest","isRequest","setHeader","PromiEvent_1","emitteryMethods","dispose","onrejected","onAny","BaseCurve","conf","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","_fixedNafMul","doubles","_getDoubles","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","BlockHash","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicate","predicates","computeHash","computeFromAddress","ecdaRecover","isValidSigRecovery","copyOrFill","numZeroes","endZeroes","sourceOffset","partialRlp","sharedBuffer","recid","eip155V","ecdsaRecover","SHARED_BUFFER","assertPath","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","posix","resolvedPath","resolvedAbsolute","isAbsolute","trailingSeparator","joined","relative","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","_makeLong","dirname","hasRoot","matchedSlash","basename","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","pathObject","_format","sep","delimiter","win32","rng","pseudoRandomBytes","prng","createHmac","Hmac","algos","algoKeys","getHashes","pbkdf2","pbkdf2Sync","aes","Cipher","createCipher","Cipheriv","Decipher","createDecipher","Decipheriv","getCiphers","listCiphers","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","constants","EVP_BytesToKey","password","keyBits","ivLen","keyLen","used","keyStart","ivStart","asn1","aesid","fixProc","ciphers","compat","parseKeys","subtype","ndata","stripped","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","pub_key","DSAparam","kde","kdeparams","iters","algo","cipherText","keylen","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","Reporter","DecoderBuffer","EncoderBuffer","reporter","isEncoderBuffer","isDecoderBuffer","restore","_reporterState","tagClass","1","2","3","tagClassByName","tagByName","_defaults","_namespaces","checkForConflicts","suppliedOptions","conflicts","conflict","defaults","def","config","namespaceOptions","propDefinition","normalized","legacyName","Semaphore_1","xtend","supports","manifest","bufferKeys","permanence","seek","createIfMissing","errorIfExists","deferredOpen","openCallback","streams","encodings","additionalMethods","errno","description","createError","isDef","hasKey","lowerBoundKey","lowerBoundInclusive","upperBoundInclusive","lowerBoundExclusive","upperBoundExclusive","upperBoundKey","upperBound","startInclusive","endInclusive","toLtgt","_range","lower","upper","lb","ub","contains","chains","mainnet_json_1","ropsten_json_1","rinkeby_json_1","kovan_json_1","goerli_json_1","yolov3_json_1","aleut_json_1","baikal_json_1","mainnet","ropsten","rinkeby","kovan","goerli","yolov3","aleut","baikal","customChains_1","customChains_1_1","name_1","isAccessListBuffer","firstItem","IndexedObject","requireObjectCoercible","aFunction","NATIVE_WEAK_MAP","createNonEnumerableProperty","objectHas","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","wmget","wmhas","wmset","facade","STATE","enforce","getterFor","TYPE","default_1","inputData","zeroBytes16","zeroByteCheck","mclPoint1","mclPoint2","BLS_12_381_INVALID_INPUT_LENGTH","frPoint","numPairs","gasUsedPerPair","gasDiscountArray","gasDiscountMax","gasDiscountMultiplier","G1Array","FrArray","pairStart","BLS_12_381_INPUT_EMPTY","mulVec","G2Array","zeroBuffer","oneBuffer","baseGas","g2start","GT","millerLoop","finalExp","isOne","Fp1Point","mapToG1","Fp2Point","mapToG2","headBlock","parentState","AccountManager","fromBuffer","trieCopy","requirePromise","_connections","websocket_close_codes_1","WebsocketServer","connections","wsBinary","autoBinary","maxPayloadLength","idleTimeout","isBinary","useBinary","resultEmitter","resultEmitterPromiEvent","CLOSE_NORMAL","server_1","server_2","Ganache","ReadableState","EElistenerCount","OurUint8Array","debugUtil","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","readableObjectMode","pipes","pipesCount","flowing","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","emitReadable","emitReadable_","chunkInvalid","_isUint8Array","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","head","content","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","needDrain","pipeOnDrain","pipeOnDrainFunctionResult","dests","ev","wrap","methodWrap","methodWrapReturnFunction","_fromList","iterable","CorkedRequest","onCorkedFinish","corkReq","pendingcb","corkedRequestsFree","WritableState","internalUtil","realHasInstance","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","onwriteStateUpdate","writelen","onwriteError","finishMaybe","errorEmitted","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","rState","writableStateBufferGetter","hasInstance","writeAfterEnd","validChunk","writeOrBuffer","newChunk","decodeChunk","uncork","setDefaultEncoding","endWritable","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","err2","pool","math","nodecrypto","startdenom","significance","overflow","seedrandom","shortseed","mixkey","flatten","entropy","tostring","autoseed","plugins","screen","arc4","ARC4","int32","quick","double","S","pass","is_math_call","me","typ","smear","stringseed","ex","ecdhUnsafe","ecdh","verify","signatureImportLax","signatureImport","signatureExport","signatureNormalize","publicKeyCombine","publicKeyTweakMul","publicKeyTweakAdd","privateKeyTweakMul","privateKeyTweakAdd","privateKeyModInverse","privateKeyNegate","privateKeyImport","privateKeyExport","secp256k1v3","der","tweak","publicKeys","sigObj","signOptions","noncefn","attempt","bufferAlgo","bufferData","ecdsaSign","ecdsaVerify","pre","curves","PresetCurve","edwards","isInfinity","defineCurve","sha384","sha512","lambda","basis","ripemd","hmac","sha1","sha224","origSymbol","hasSymbolSham","hasNativeSymbols","implementation","params_1","MAX_UINT64","TRANSACTION_CREATION","TRANSACTION_DATA_NON_ZERO_GAS","TRANSACTION_DATA_ZERO_GAS","nonZeroBytes","zeroBytes","sender","elliptic","ec","eddsa","Rand","_rand","getBytes","getByte","nacl","util","validateBase64","decodeUTF8","unescape","encodeUTF8","escape","atob","encodeBase64","decodeBase64","btoa","HashBase","ARRAY16","rotl","fnF","fnG","fnH","fnI","M","_blockOffset","_length","zl","zr","sl","sr","hl","hr","fn1","fn2","fn3","fn4","fn5","br","cr","dr","tl","tr","SHA","Algorithm","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","modes","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","getr","priv","modulus","prime1","prime2","crt","blinds","blind","blinder","publicExponent","unblinder","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","tags","methods","Node","parent","_baseState","reverseArgs","choice","optional","use","useDecoder","explicit","implicit","_wrap","stateProps","cstate","_wrappedMethod","_useArgs","useArgs","_overrided","_tagMethod","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","decodeChildren","_getUse","leaveObject","exitKey","leaveKey","decodeGeneric","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","decodeChoice","_createEncoderBuffer","createEncoderBuffer","_encodeValue","_skipDefault","_encodeChoice","_encodePrimitive","cls","_encodeComposite","encodeChoice","encodePrimitive","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","isNumstr","_isPrintstr","isPrintstr","unseededRng","randomAlphaNumericString","alphabetLength","text","cliDescription","cliAliases","cliType","cliCoerce","accountString","deterministic","DeterministicSeedPhrase","defaultDescription","entropyToMnemonic","notVeryRandomBytes","DeferredLevelDOWN","IteratorStream","Batch","getCallback","getOptions","WriteError","ReadError","OpenError","InitializationError","LevelUP","maybeError","_isOpening","isOpen","isClosed","readStream","keyStream","valueStream","LevelUPError","EncodingError","definition","setProperty","oo","os","makeOptions","AbstractLevelDOWN","AbstractChainedBatch","AbstractIterator","Codec","rangeMethods","codec","Iterator","encodeLtgt","_serializeKey","_serializeValue","datum","_open","_close","_put","encodeValue","_get","asBuffer","valueAsBuffer","decodeValue","_del","_chainedBatch","_batch","encodeBatch","keyAsBuffer","_clear","_next","_seek","_end","createRBTree","RedBlackTree","defaultCompare","RBNode","_color","_count","cloneNode","repaint","recount","_compare","doVisitFull","visit","doVisitHalf","doVisit","RedBlackTreeIterator","tree","_stack","n_stack","d_stack","pp","ppp","rbTreeForEach","at","ge","last_ptr","le","iter","iproto","swapNode","cstack","fixDoubleBlack","subdown","levelup","operationTarget","HEADS_KEY","HEAD_HEADER_KEY","HEAD_BLOCK_KEY","hashToNumberKey","numberToHashKey","tdKey","bodyKey","headerKey","CLIQUE_SIGNERS_KEY","CLIQUE_VOTES_KEY","CLIQUE_BLOCK_SIGNERS_KEY","dbOperation","cacheMap","bitmap","postfix","setGlobal","SHARED","variable","toInteger","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","wellKnownSymbol","CORRECT_ARGUMENTS","tryGet","callee","TAG","STATIC","SET_METHOD","$","createIteratorConstructor","setToStringTag","redefine","IS_PURE","Iterators","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","forced","Message","_codeAddress","BYTE_SIZE","Bloom","loc","byteLoc","bitLoc","multiCheck","every","getRawTag","symToStringTag","arrayLike","newLen","newArr","rate_limiter_1","requestsPerSecond","WINDOW_SECONDS","username","setAuthHeaders","setUserHeaders","jwt","authorization","permitMultiAuth","userHeaders","currentScheme","incomingScheme","authParams","symObj","syms","descriptor","$iterator","getIterator","$Map","$Set","callBound","$arrayPush","$charCodeAt","$stringSlice","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","advanceStringIndex","second","isMap","isSet","$mapForEach","$setForEach","$mapIterator","$setIterator","getStopIterationIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","$Array","IsArray","isPropertyDescriptor","Desc","allowed","isData","IsAccessor","assertRecord","recordType","argumentName","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","squeeze","_finalized","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","nb","normalizeEncoding","nenc","_normalizeEncoding","retried","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8End","utf8Text","utf8CheckIncomplete","destroyer","popCallback","destroys","RandomNumberGenerator","upperExclusiveBound","numbers","getNumber","getNumbers","Alea","mash","Mash","impl","xg","XorGen","strseed","xor128","xorwow","X","xorshift7","xor4096","tychei","shaCommon","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","W","T1","T2","sha512_K","SHA512","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","fh","fl","gh","gl","hh","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","possibleNames","availableTypedArrays","$toString","hasToStringTag","typedArrays","$slice","toStrTags","gOPD","superProto","isTypedArray","tryAllTypedArrays","anyTrue","tryTypedArrays","getPolyfill","polyfill","isArgs","throwIfNotStringOrBuffer","K","Sha256","_w","maj","sigma0","sigma1","gamma0","_h","H","Sha512","Ch","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","calculateSigRecovery","rec","homesteadOrLater","rBN","sBN","_Tag","EC","ecparams","loadPublicKey","pubkey","loadCompressedPublicKey","xbuf","keyPair","pub","loadUncompressedPublicKey","ybuf","x3","savePublicKey","contextRandomize","seckey","negate","tweaked","keyFromPrivate","getPublic","pubkeys","nh","sigR","sigS","lenR","posR","lenS","posS","outputlen","_noncefn","counter","canonical","pers","recoveryParam","msg32","sigr","sigs","recoverPubKey","hashfn","scalar","ethUtil","ethAbi","naclUtil","TYPED_MESSAGE_SCHEMA","properties","additionalProperties","required","TypedDataUtils","encodeData","useV4","encodedTypes","encodedValues","hashType","encodeField_1","parsedType_1","typeValuePairs","rawEncode","encodeType","deps","findTypeDependencies","dep","deps_1","hashStruct","sanitizeData","sanitizedData","concatSig","rSig","sSig","vSig","rStr","padWithZeroes","sStr","vStr","signTypedDataLegacy","msgParams","typedSignatureHash","recoverTypedSignatureLegacy","recoverPublicKey","receiverPublicKey","ephemeralKeyPair","box","pubKeyUInt8Array","msgParamsUInt8Array","nonceLength","encryptedMessage","ephemPublicKey","encryptedData","receiverPrivateKey","recieverPrivateKeyUint8Array","nacl_decodeHex","recieverEncryptionPrivateKey","fromSecretKey","decryptedMessage","signTypedData","recoverTypedSignature","recoverTypedSignature_v4","schema","soliditySHA3","sigParams","getPublicKeyFor","myString","msgHex","msgBase64","personalSign","recoverPersonalSignature","extractPublicKey","externalTypedSignatureHash","encryptSafely","DEFAULT_PADDING_LENGTH","dataWithPadding","modVal","decryptSafely","getEncryptionPublicKey","privateKeyUint8Array","encryptionPublicKey","signTypedMessage","recoverTypedMessage","gf","randombytes","_0","_9","gf0","gf1","_121665","D2","Y","ts64","vn","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","inp","core_salsa20","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x5","x6","x7","x9","x10","x11","x12","x13","x14","x15","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t4","t5","t6","t7","leftover","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","Z","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d0","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r3","r4","r5","r6","r7","r8","r9","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","th","wh","wl","crypto_hash","cswap","pack","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","sk","seeded","L","modL","crypto_sign","smlen","crypto_sign_open","unpackneg","chk","den","den2","den4","den6","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","secretbox","keyLength","overheadLength","scalarMult","scalarLength","groupElementLength","before","checkBoxLengths","after","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","detached","fromSeed","seedLength","signatureLength","hashLength","setPRNG","MAX_ALLOC","iterations","md5","checkParameters","ZEROS","sizes","rmd160","saltLen","getDigest","shaFunc","rmd160Func","blocksize","ipad","opad","ipad1","ipad2","DK","block1","destPos","hLen","T","U","Legacy","_alg","_ipad","_opad","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","inOff","outOff","ip","_encrypt","_decrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","deciphers","incr32","GHASH","StreamCipher","_cipher","ck","_ghash","calcIv","_finID","ghash","toPad","ivBits","tail","_prev","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","n2","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","n1","rn1","getDivisor","bignum","decoders","encoders","pem","DEREncoder","DERNode","encodeComposite","encodedTag","encodeTag","lenOctets","encodeStr","unused","encodeObjid","ident","objid","encodeTime","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","encodeNull","encodeInt","numArray","encodeBool","_getEncoder","skipDefault","dataBuffer","defaultBuffer","ReporterError","rethrow","pathLen","partial","captureStackTrace","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","peekTag","decodedTag","decodeTag","_skipUntilEnd","skipUntilEnd","decodeList","possibleEnd","numstr","printstr","decodeObjid","identifiers","subident","decodeTime","year","mon","day","hour","sec","UTC","decodeNull","decodeBool","decodeInt","_getDecoder","i2ops","withPublic","paddedMsg","Lock","rangeMin","rangeMax","_ended","_nexting","_nextTick","scheduleDrain","scheduled","install","immediate","task","_operations","_written","_checkWritten","_checkKey","_checkValue","utf8","identity","binary","none","nib1","nib2","bkey","keyA","keyB","ltgt","NONE","createKeyRange","lowerOpen","upperOpen","IDBKeyRange","bound","ta2str","TextDecoder","ta","ta2buf","ab2str","ab","CRC32","signed_crc_table","bstr","crc32_bstr","crc32_buf","crc32_buf_8","crc32_str","DO_NOT_EXPORT_CRC","_1","DEFAULT_COMMON","txType","fromSerializedData","getTransactionClass","transactionID","lru_cache_1","isForced","wrapConstructor","NativeConstructor","Wrapper","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","GLOBAL","stat","PROTO","nativeSource","targetPrototype","noTargetGet","sham","real","classof","PREFERRED_STRING","createElement","EXISTS","FREEZING","METADATA","isExtensible","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","isArrayIteratorMethod","toLength","getIteratorMethod","iteratorClose","Result","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","condition","callFn","copyright","V8_VERSION","activeXDocument","enumBugKeys","html","documentCreateElement","EmptyConstructor","scriptTag","LT","NullProtoObject","ActiveXObject","iframeDocument","iframe","temp","parentWindow","NullProtoObjectViaActiveX","display","appendChild","contentWindow","F","Properties","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","chargeGas","isSelfdestruct","addressStr","isSstore","defaultCost","costName","warmRead","coldSload","Memory","ceiling","sizeDiff","returnBuffer","Module","moduleOverrides","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","ENVIRONMENT_IS_SHELL","nodeFS","nodePath","importScripts","shell_read","filename","tryParseAsDataURI","readBinary","globalEval","print","printErr","intArrayToString","readbuffer","scriptArgs","quit","toThrow","xhr","XMLHttpRequest","responseText","responseType","readAsync","onload","xhr_onload","shell_print","shell_printErr","TRY_USE_DUMP","dump","Runtime","setTempRet0","tempRet0","getTempRet0","stackSave","STACKTOP","stackRestore","stackTop","getNativeTypeSize","QUANTUM_SIZE","getNativeFieldSize","STACK_ALIGN","prepVararg","ptr","getAlignSize","vararg","dynCall","functionPointers","addFunction","removeFunction","warnOnce","shown","funcWrappers","getFuncWrapper","sigCache","dynCall_wrapper","getCompilerSetting","stackAlloc","staticAlloc","STATICTOP","dynamicAlloc","HEAP32","DYNAMICTOP_PTR","TOTAL_MEMORY","enlargeMemory","alignMemory","quantum","makeBigInt","low","high","unsigned","GLOBAL_BASE","__dummy__","ABORT","EXITSTATUS","ccall","getCFunc","setValue","noSafe","charAt","HEAP8","HEAP16","tempI64","tempDouble","Math_abs","Math_min","Math_floor","Math_ceil","HEAPF32","HEAPF64","JSfuncs","writeArrayToMemory","stringToUTF8","toC","ccallFunc","returnType","argTypes","cArgs","converter","Pointer_stringify","EmterpreterAsync","asyncFinalizers","sourceRegex","parseJSFunc","jsfunc","JSsource","ensureJSsource","cfunc","numericArgs","numericRet","argNames","funcstr","nargs","convertCode","cfuncname","strgfy","ALLOC_NORMAL","ALLOC_STACK","ALLOC_STATIC","ALLOC_DYNAMIC","ALLOC_NONE","slab","allocator","zeroinit","singleType","_malloc","HEAPU8","typeSize","previousType","getFunctionIndex","getMemory","staticSealed","runtimeInitialized","hasUtf","MAX_CHUNK","AsciiToString","stringToAscii","outPtr","writeAsciiToMemory","UTF8Decoder","UTF8ArrayToString","u8Array","endPtr","u0","u3","u4","UTF8ToString","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","endIdx","lengthBytesUTF8","UTF16Decoder","HEAP","HEAPU16","HEAPU32","STATIC_BASE","STACK_BASE","STACK_MAX","DYNAMIC_BASE","demangle","__cxa_demangle_func","_free","demangleAll","jsStackTrace","stackTrace","js","updateGlobalBufferViews","abortOnCannotGrowMemory","TOTAL_STACK","getTotalMemory","callRuntimeCallbacks","callbacks","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeExited","preRun","addOnPreRun","ensureInitRuntime","preMain","exitRuntime","postRun","addOnPostRun","addOnInit","addOnPreMain","addOnExit","writeStringToMemory","dontAddNull","trunc","Math_cos","Math_sin","Math_tan","tan","Math_acos","acos","Math_asin","asin","Math_atan","atan","Math_atan2","atan2","Math_exp","Math_log","Math_sqrt","Math_pow","Math_imul","Math_fround","fround","Math_round","Math_clz32","Math_trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","getUniqueRunDependency","addRunDependency","removeRunDependency","clearInterval","memoryInitializer","ASM_CONSTS","tempDoublePtr","__ZSt18uncaught_exceptionv","uncaught_exception","EXCEPTIONS","caught","infos","deAdjust","adjusted","addRef","refcount","decRef","rethrown","destructor","___cxa_free_exception","clearRef","___resumeException","___cxa_find_matching_catch","thrown","throwntype","typeArray","___cxa_throw","__Unwind_FindEnclosingFunction","_emscripten_set_main_loop_timing","Browser","mainLoop","timingMode","timingValue","scheduler","Browser_mainLoop_scheduler_setTimeout","timeUntilNextTick","tickStartTime","_emscripten_get_now","runner","Browser_mainLoop_scheduler_rAF","requestAnimationFrame","setImmediates","emscriptenMainLoopMessageId","addEventListener","Browser_setImmediate_messageHandler","stopPropagation","Browser_emulated_setImmediate","postMessage","Browser_mainLoop_scheduler_setImmediate","_emscripten_set_main_loop","fps","simulateInfiniteLoop","noSetTiming","browserIterationFunc","thisMainLoopId","currentlyRunningMainloop","Browser_mainLoop_runner","blocker","remainingBlockers","counted","updateStatus","currentFrameNumber","runIter","SDL","audio","queueNewAudioData","expectedBlockers","ExitStatus","isFullscreen","pointerLock","moduleContextCreatedCallbacks","workers","initted","Blob","hasBlobConstructor","BlobBuilder","MozBlobBuilder","WebKitBlobBuilder","URLObject","URL","webkitURL","noImageDecoding","imagePlugin","imagePlugin_canHandle","imagePlugin_handle","getMimetype","bb","getBlob","createObjectURL","img","Image","img_onload","complete","canvas","getContext","drawImage","revokeObjectURL","img_onerror","audioPlugin","audioPlugin_canHandle","noAudioDecoding","audioPlugin_handle","Audio","audio_onerror","encode64","BASE","leftchar","leftbits","PAD","safeSetTimeout","requestPointerLock","exitPointerLock","pointerLockChange","preventDefault","createContext","useWebGL","setInModule","webGLContextAttributes","contextHandle","contextAttributes","antialias","alpha","attribute","GL","GLctx","makeContextCurrent","destroyContext","fullscreenHandlersInstalled","lockPointer","resizeCanvas","requestFullscreen","vrDevice","fullscreenChange","canvasContainer","exitFullscreen","setFullscreenCanvasSize","insertBefore","removeChild","setWindowedCanvasSize","updateCanvasDimensions","Element","vrDisplay","requestFullScreen","nextRAF","fakeRequestAnimationFrame","delay","safeCallback","allowAsyncCallbacks","queuedAsyncCallbacks","pauseAsyncCallbacks","resumeAsyncCallbacks","safeRequestAnimationFrame","safeSetInterval","setInterval","getUserMedia","getMovementX","getMovementY","getMouseWheelDelta","detail","wheelDelta","mouseX","mouseY","mouseMovementX","mouseMovementY","touches","lastTouches","calculateMouseEvent","rect","getBoundingClientRect","cw","scrollX","pageXOffset","scrollY","pageYOffset","touch","adjustedX","pageX","adjustedY","pageY","top","coords","identifier","asyncLoad","noRunDep","resizeListeners","updateResizeListeners","setCanvasSize","noUpdates","windowedWidth","windowedHeight","flags","wNative","hNative","widthNative","heightNative","factor","removeProperty","wgetRequests","nextWgetRequestHandle","getNextWgetRequestHandle","_emscripten_exit_with_live_runtime","_pthread_mutexattr_settype","_abort","_pthread_cond_destroy","_pthread_condattr_destroy","___lock","___unlock","_pthread_cond_wait","PTHREAD_SPECIFIC","_pthread_getspecific","PTHREAD_SPECIFIC_NEXT_KEY","ERRNO_CODES","EPERM","ENOENT","ESRCH","EINTR","EIO","ENXIO","E2BIG","ENOEXEC","EBADF","ECHILD","EAGAIN","EWOULDBLOCK","ENOMEM","EACCES","EFAULT","ENOTBLK","EBUSY","EEXIST","EXDEV","ENODEV","ENOTDIR","EISDIR","EINVAL","ENFILE","EMFILE","ENOTTY","ETXTBSY","EFBIG","ENOSPC","ESPIPE","EROFS","EMLINK","EPIPE","EDOM","ERANGE","ENOMSG","EIDRM","ECHRNG","EL2NSYNC","EL3HLT","EL3RST","ELNRNG","EUNATCH","ENOCSI","EL2HLT","EDEADLK","ENOLCK","EBADE","EBADR","EXFULL","ENOANO","EBADRQC","EBADSLT","EDEADLOCK","EBFONT","ENOSTR","ENODATA","ETIME","ENOSR","ENONET","ENOPKG","EREMOTE","ENOLINK","EADV","ESRMNT","ECOMM","EPROTO","EMULTIHOP","EDOTDOT","EBADMSG","ENOTUNIQ","EBADFD","EREMCHG","ELIBACC","ELIBBAD","ELIBSCN","ELIBMAX","ELIBEXEC","ENOSYS","ENOTEMPTY","ENAMETOOLONG","ELOOP","EOPNOTSUPP","EPFNOSUPPORT","ECONNRESET","ENOBUFS","EAFNOSUPPORT","EPROTOTYPE","ENOTSOCK","ENOPROTOOPT","ESHUTDOWN","ECONNREFUSED","EADDRINUSE","ECONNABORTED","ENETUNREACH","ENETDOWN","ETIMEDOUT","EHOSTDOWN","EHOSTUNREACH","EINPROGRESS","EALREADY","EDESTADDRREQ","EMSGSIZE","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EADDRNOTAVAIL","ENETRESET","EISCONN","ENOTCONN","ETOOMANYREFS","EUSERS","EDQUOT","ESTALE","ENOTSUP","ENOMEDIUM","EILSEQ","EOVERFLOW","ECANCELED","ENOTRECOVERABLE","EOWNERDEAD","ESTRPIPE","_pthread_key_create","_llvm_bswap_i64","retl","_llvm_bswap_i32","reth","_pthread_mutex_init","_pthread_key_delete","_pthread_setspecific","_pthread_mutexattr_destroy","___cxa_allocate_exception","ERRNO_MESSAGES","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","122","123","125","130","131","___setErrNo","PATH","splitPath","normalizeArray","up","trailingSlash","paths","join2","FS","fromParts","toParts","samePartsLength","outputParts","TTY","ttys","shutdown","register","dev","registerDevice","stream_ops","tty","rdev","ErrnoError","seekable","get_char","bytesRead","put_char","default_tty_ops","isPosixPlatform","platform","fd","stdin","usingDevice","fs","openSync","readSync","closeSync","prompt","readline","intArrayFromString","default_tty1_ops","MEMFS","ops_table","mount","createNode","isBlkdev","isFIFO","getattr","node_ops","setattr","mknod","rename","unlink","rmdir","readdir","symlink","llseek","file","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsRegularArray","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","attr","ino","nlink","gid","atime","mtime","ctime","blksize","genericErrors","old_node","new_dir","new_name","new_node","newname","oldpath","canOwn","whence","prot","allocated","mmapFlags","IDBFS","dbs","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_VERSION","DB_STORE_NAME","syncfs","populate","getLocalSet","getRemoteSet","remote","reconcile","getDB","onupgradeneeded","fileStore","objectStoreNames","objectStore","createObjectStore","indexNames","createIndex","unique","onsuccess","isRealDir","toAbsolute","mountpoint","openKeyCursor","cursor","primaryKey","continue","loadLocalEntry","lookupPath","storeLocalEntry","mkdir","writeFile","chmod","utime","removeLocalEntry","loadRemoteEntry","storeRemoteEntry","removeRemoteEntry","e2","completed","errored","NODEFS","isWindows","staticInit","getMode","lstatSync","realPath","flagsToPermissionStringMap","129","193","514","577","578","705","706","1024","1025","1026","1089","1090","1153","1154","1217","1218","4096","4098","flagsToPermissionString","chmodSync","utimesSync","truncateSync","mkdirSync","oldNode","newDir","newName","oldPath","newPath","renameSync","unlinkSync","rmdirSync","readdirSync","symlinkSync","readlinkSync","NODEJS_PATH","nfd","nbuffer","writeSync","fstatSync","WORKERFS","DIR_MODE","FILE_MODE","reader","FileReaderSync","createdParents","ensureParent","lastModifiedDate","files","readAsArrayBuffer","mounts","devices","nextInode","nameTable","currentPath","initialized","ignorePermissions","trackingDelegate","tracking","openFlags","READ","WRITE","filesystems","syncFSRequests","handleFSError","follow_mount","recurse_count","current_path","islast","isMountpoint","mounted","follow","getPath","isRoot","hashName","parentid","hashAddNode","name_next","hashRemoveNode","mayLookup","nodeName","FSNode","readMode","writeMode","isFolder","isDevice","destroyNode","isSocket","flagModes","modeStringToFlags","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","isRead","isWrite","isAppend","newStream","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","doCallback","pseudo","mountRoot","unmount","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","dontFollow","lstat","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","created","ungotten","readFiles","trackingFlags","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","actualNumBytes","createDefaultDirectories","createDefaultDevices","random_device","randomBuffer","createDevice","createSpecialDirectories","createStandardStreams","ensureErrnoError","setErrno","fflush","canRead","canWrite","joinPath","forceRelative","absolutePath","standardizePath","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createFolder","createPath","createFile","createDataFile","createLink","forceLoadFile","success","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","getResponseHeader","hasByteServing","usesGzip","lazyArray","setRequestHeader","overrideMimeType","doXHR","_chunkSize","forceLoadLazyFile","stream_ops_read","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","handled","plugin","DB_NAME","location","saveFilesToDB","openRequest","openRequest_onupgradeneeded","openRequest_onsuccess","putRequest","putRequest_onsuccess","putRequest_onerror","loadFilesFromDB","getRequest","getRequest_onsuccess","getRequest_onerror","SYSCALLS","DEFAULT_POLLMASK","mappings","calculateAt","dirfd","dirstream","doStat","doMsync","doMkdir","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","doWritev","varargs","getStreamFromFD","getSocketFromFD","socket","SOCKFS","getSocket","getSocketAddress","allowNull","addrp","addrlen","__read_sockaddr","DNS","lookup_addr","get64","getZero","___syscall54","which","argp","__Unwind_GetIPInfo","_pthread_cond_init","__emscripten_traverse_stack","funcname","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","firefoxRe","chromeRe","jsSymbolName","lineno","column","cSymbolName","haveSourceMap","orig","originalPositionFor","__Unwind_Backtrace","_pthread_condattr_setclock","_environ","___buildEnvironment","poolPtr","envPtr","ENV","MAX_ENV_VALUES","strings","totalSize","ASSERTIONS","_getenv","_pthread_rwlock_rdlock","___cxa_find_matching_catch_3","_emscripten_memcpy_big","___syscall6","_pthread_cond_signal","_dladdr","fname","___gxx_personality_v0","_pthread_mutex_destroy","_pthread_mutexattr_init","___syscall4","_pthread_condattr_init","_llvm_trap","___cxa_find_matching_catch_2","___syscall140","offset_low","___syscall146","_pthread_rwlock_unlock","Module_requestFullScreen","Module_requestFullscreen","Module_requestAnimationFrame","Module_setCanvasSize","Module_pauseMainLoop","Module_resumeMainLoop","Module_getUserMedia","Module_createContext","_emscripten_get_now_actual","dateNow","performance","stringy","u8array","numBytesWritten","chr","chr1","chr2","chr3","enc2","enc3","enc4","intArrayFromBase64","dataURIPrefix","invoke_iiii","invoke_viiiii","invoke_i","invoke_vi","invoke_vii","invoke_ii","invoke_viii","invoke_v","invoke_iii","invoke_iiiiii","invoke_viiii","asmGlobalArg","asmLibraryArg","asm","J","Q","V","aa","ca","da","ea","fa","ga","ha","ia","ka","la","na","oa","pa","qa","ra","sa","ua","va","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","$a","ob","pb","qb","sb","tb","vb","$i","Yb","Wb","Xb","wb","cj","xb","yb","zb","Ab","Zb","Bb","Cb","kb","Rd","Db","Eb","Fb","Gb","Hb","Ib","aj","Jb","Kb","Lb","Ff","Gf","od","Ob","Mb","Nb","cc","ac","Xj","fc","ic","mc","Pb","Qb","Sb","Rb","Tb","Od","Ub","Vb","Mg","Ng","Og","Pg","$b","Mc","bc","Qc","dc","gc","Dc","hc","Cc","uc","jc","kc","lc","Ac","nc","oc","hk","Tc","qc","Ec","rc","vc","sc","tc","vi","Ti","Kc","dd","cd","Nc","wc","xc","nk","yc","Lc","zc","ed","Oc","Bc","eb","fb","gb","hb","ib","mb","Fc","Ic","Jc","Pc","Rc","Sc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","gd","hd","jd","kd","ld","md","nd","pd","qd","rd","sd","ud","vd","wd","xd","yd","zd","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Pd","Qd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Gc","Hc","gk","fk","qk","kk","ye","si","ti","$h","ci","di","bi","mf","Bg","Cg","ki","qh","jf","rh","Oh","pg","Vg","lh","Hh","Ue","Hj","kj","Fi","Ni","Ii","bj","Si","Mh","Lf","de","ee","fe","he","je","ke","ne","oe","pe","qe","te","se","ue","ve","we","xe","Ae","ze","wg","De","Ee","Be","Ih","Te","Ce","Fe","Ge","tg","He","Ie","dk","Bj","Je","Ke","Le","Me","Ne","Oe","vg","Pe","Qe","bf","Re","Kg","Lj","Df","Se","mk","Ve","We","Xe","Ye","Ze","$e","af","cf","df","ef","ff","kf","lf","nf","of","pf","qf","sf","ui","Qi","tf","uf","vf","Ri","wf","xf","yf","zf","Af","Bf","Cf","Eg","Ef","Hf","Nh","If","Jf","Kf","ri","Wh","Xh","Yh","jj","pj","Mf","Nf","Of","Pf","Qf","Rf","Sf","Zg","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","dg","bg","lg","cg","eg","fg","gg","hg","ig","jg","kg","mg","ng","og","Sh","rg","qg","sg","ug","sh","Vh","yg","fj","zg","Ag","Dg","Fg","Gg","Hg","wi","Vi","Wi","Ig","Jg","Lg","wj","rj","sj","Qg","Rg","Sg","Tg","Ug","Wg","Xg","Yg","$g","ih","jh","kh","oh","mh","vh","Ah","Bh","Dh","Eh","Fh","Gh","Lh","Jh","Kh","Qh","Ph","Rh","Th","Uh","Zh","lj","oi","ai","ei","fi","gi","Pi","ii","ji","li","ni","pi","qi","Hi","Ai","Bi","Ci","Di","Ei","Gi","Ji","Ki","Li","Mi","Oi","Ui","Xi","Yi","Zi","dj","ej","gj","hj","ij","mj","nj","oj","rk","tj","uj","vj","xj","yj","Ej","Aj","zj","Cj","Dj","Fj","Gj","Ij","Jj","Kj","Nj","Mj","Oj","Pj","Qj","Rj","Sj","jk","Tj","Uj","Vj","Wj","Yj","Zj","lk","_j","$j","ak","bk","ek","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","_main","dynCall_i","_i64Subtract","_rust_eh_personality","setThrew","dynCall_viii","_bitshift64Lshr","_ec_pairing","_bitshift64Shl","_fflush","_htonl","___errno_location","_memset","dynCall_ii","_sbrk","_memcpy","___muldi3","_ec_mul","dynCall_vi","dynCall_vii","_ntohs","_i64Add","dynCall_iiii","_pthread_mutex_unlock","_llvm_bswap_i16","_emscripten_get_global_libc","_htons","dynCall_viiii","dynCall_iiiiii","dynCall_viiiii","runPostSets","establishStackSpace","dynCall_iii","_pthread_mutex_lock","dynCall_v","_ec_add","initialStackTop","applyMemoryInitializer","doBrowserLoad","memoryInitializerBytes","useRequest","preloadStartTime","calledMain","doRun","shouldRunNow","runCaller","callMain","argc","toLog","abortDecorators","what","decorator","_k","_l","TxContext","_m","compiled","static","eachSeries","_beforeOrAfter","beforeOrAfter","_eachLimit2","_interopRequireDefault","_doLimit2","eachLimit","coll","_eachOfLimit2","_withoutIndex2","_wrapAsync2","_eachOfLimit","_once2","_noop2","nextElem","_iterator2","running","looping","iterateeCallback","_breakLoop2","replenish","_onlyOnce2","_isArrayLike2","createArrayIterator","_getIterator2","createES2015Iterator","createObjectIterator","okeys","_keys2","iteratorSymbol","onlyOnce","_withoutIndex","asyncify","_initialParams2","_isObject2","invokeCallback","_setImmediate2","_slice2","doLimit","isES5","hasProto","$forEach","kCustomPromisifyArgsSymbol","customFunction","argumentNames","promisified","customPromisifyArgs","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","isES6ClassFunction","fnStr","documentDotAll","isCallable","tryFunctionToStr","tryFunctionObject","strClass","CreateDataProperty","IsCallable","RequireObjectCoercible","ToObject","$getOwnNames","$getSymbols","$reduce","getAll","ToBoolean","stateManager_1","ForkCache","semaphore_1","limit_counter_1","sleep","timer","removeEventListener","isExceededLimitError","LIMIT_EXCEEDED","RateLimiter","requestLimit","windowSizeMs","sem","take","mustBackoff","limitCounter","LimitCounter","currentWindow","currWindow","prevWindow","currCount","prevCount","rate","nextCount","nextLimit","schedule","leave","increment","backoffSeconds","backoff_seconds","allowed_rps","semaphore","capacity","firstHere","isFirst","available","ws_1","inFlightRequests","connect","onmessage","onMessage","messageId","onopen","FilecoinOptionsConfig","cssKeywords","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","keyword","ansi16","ansi256","hcg","apple","gray","model","rdif","gdif","bdif","diffc","reversed","currentClosestKeyword","currentClosestDistance","distance","smin","lmin","vmin","ratio","y2","z2","saturation","ansi","mult","colorString","char","chroma","grayscale","hue","pure","PromiseResolve","iterate","itemPromise","strValue","tryStringObject","ArraySpeciesCreate","Call","CreateDataPropertyOrThrow","Get","HasProperty","ToUint32","ToString","boxedString","splitString","strSplit","callbackfn","Pk","kPresent","kValue","mappedValue","$construct","DefinePropertyOrThrow","isConstructorMarker","IsConstructor","$isEnumerable","DefineOwnProperty","IsDataDescriptor","SameValue","FromPropertyDescriptor","$isNaN","ToPropertyDescriptor","Obj","symToStr","symStringRegex","isRealSymbolObject","isSymbolObject","arrayMethodBoxesProperly","flavors_2","asyncRequestProcessing","toBigIntBE","uintWideToBuf","hiLsb","six","five","lsb","uint32ToBuf","third","json_rpc_base_types_1","_nullable","nullable","bigInt","bufferToBigInt","createKeccak","createShake","KeccakState","Keccak","Shake","delimitedSuffix","hashBitLength","_rate","_capacity","_delimitedSuffix","_hashBitLength","absorbLastFewBits","_resetState","enumerableOnly","symbols","_defineProperty","_defineProperties","_createClass","protoProps","staticProps","hasStrings","_getString","_getBuffer","_objectSpread","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_return","_this2","_Object$create","dataByteLength","keccakState","squeezing","p1600","codedError","UNDERPRICED","INVALID_SENDER","errors_1","ethereumjs_abi_1","coded_error_1","REVERT_REASON","rawDecode","ABI","elementaryName","parseTypeN","parseTypeNxM","parseTypeArray","parseNumber","parseSignature","retargs","encodeSingle","decodeSingle","parsedType","parseType","rawType","subArray","memoryUsage","isDynamic","eventID","methodID","headLength","simpleEncode","simpleDecode","solidityHexValue","bitsize","subType","arraySize","arrayValues","bytesize","solidityPack","soliditySHA256","solidityRIPEMD160","fromSerpent","toSerpent","isUint8Array","isCompressed","toTypeString","getAssertedOutput","publicKeyNegate","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","len1","_endoSplit","v1","v2","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","zinv","zinv2","ay","pz2","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","yyu4","kbase","z3","pz3","eqXToP","zs","MontCurve","i4","a24","diffAdd","jumlAdd","EdwardsCurve","twisted","mOneA","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","ft_1","sha1_K","SHA1","p32","SHA224","SHA384","inner","outer","HmacDRBG","KeyPair","Signature","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","persEnc","entropyEnc","ns2","_truncateToN","truncOnly","getPrivate","ns1","kp","kpX","sinv","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","_importPrivate","privEnc","_importPublic","pubEnc","_importDER","Position","place","initial","octetLen","rmPadding","constructLength","octets","slen","toDER","backHalf","EDDSA","pointClass","encodingLength","secret","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","isPoint","_secret","_pub","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","_possibleConstructorReturn","_assertThisInitialized","_getPrototypeOf","_setPrototypeOf","_inherits","inspected","isArgumentsObject","isGeneratorFunction","whichTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isArrayBufferView","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isWeakMap","isWeakSet","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","isStandardArguments","isLegacyArguments","supportsStandardArguments","ERROR_MESSAGE","funcType","binder","boundLength","boundArgs","Empty","GeneratorFunction","isFnRegex","generatorFunc","getGeneratorFunc","foundName","_wrapNativeSuper","Class","_isNativeFunction","_construct","isNativeReflectConstruct","construct","Parent","blue","green","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","maxArrayLength","breakLength","showProxy","sorted","getters","createErrDiff","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","isTTY","columns","maxCount","maxLines","_actualLines","printedLines","skippedMsg","expectedLine","actualLine","divergingLines","_Error","stackTraceLimit","getColorDepth","_res","knownOperators","firstSource","nextSource","keysArray","origKeys","keysShim","originalKeys","shimObjectKeys","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","shimObjectIs","testObjectIs","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_n","_s","_nonIterableRest","regexFlagsSupported","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","isNonIndex","getOwnNonIndexProperties","innerDeepEqual","val1","val2","memos","val1Tag","keys1","keys2","keyCheck","areSimilarRegExps","areSimilarTypedArrays","areSimilarFloatArrays","_keys","areEqualArrayBuffers","buf1","buf2","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","val2MemoA","val2MemoB","areEq","objEquiv","setHasEqualElement","memo","setValues","findLooseMatchingPrimitives","prim","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","curB","mapHasEqualEntry","key1","item1","key2","setEquiv","aValues","bValues","_val","mapEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","keysA","shimNumberIsNaN","testIsNaN","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","runtime_block_1","serialize_1","deserialized","_raw","_rawTransactions","makeHeader","_rawTransactionMetaData","_size","BlockTransaction","includeFullTransactions","txFn","getTxFn","jsonTxs","uncles","txs","extraTxs","include","setRaw","setExtra","runtimeRequire","vars","variables","prebuildsOnly","PREBUILDS_ONLY","abi","modules","runtime","isElectron","electron","ELECTRON_RUN_AS_NODE","arch","libc","LIBC","isAlpine","existsSync","armv","ARM_VERSION","arm_version","uv","getFirst","matchBuild","parseTags","specificity","napi","matchTags","runtimeAgnostic","compareTags","prebuild","nearby","execPath","prebuilds","winner","endianness","loadavg","uptime","freemem","MAX_VALUE","totalmem","cpus","appVersion","networkInterfaces","getNetworkInterfaces","tmpdir","tmpDir","homedir","getBlockSize","BnExtra","previousBlockTotalDifficulty","coinbaseBuffer","serializedStart","serializedLength","middle","ZERO_BUF","subtle","toBrowser","checks","getNextTick","queueMicrotask","setImmediate","browserPbkdf2","importKey","deriveBits","resolvePromise","checkNative","resp","wordlists","_default","chinese_simplified","chinese_traditional","korean","french","italian","spanish","japanese","JA","english","EN","bs58check","MASTER_SECRET","HARDENED_OFFSET","BITCOIN_VERSIONS","private","public","HDKey","_privateKey","_publicKey","chainCode","_fingerprint","parentFingerprint","hdkey","fingerprint","hash160","_identifier","hardened","deriveChild","isHardened","indexBuffer","IL","IR","wipePrivateData","xpriv","privateExtendedKey","xpub","publicExtendedKey","seedBuffer","fromExtendedKey","base58key","keyBuffer","instantiate","EDE","modeName","_des","des3","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","group","EDEState","k3","_edeState","ZEROES","_multiply","lsbVi","abl","SEVEN","setPublicKey","setPrivateKey","_priv","DH","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","getPrime","front","getPrivateKey","getGenerator","algorithms","_hashType","_tag","_signType","signMethod","verifyMethod","getKey","hlen","hbits","bits2octets","bits2int","obits","makeKey","kv","makeR","signType","ecSign","curveId","dsaSign","Entity","_createNamed","createNamed","Generated","_initNamed","PEMEncoder","PEMDecoder","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","seq","AlgorithmIdentifier","SubjectPublicKeyInfo","bitstr","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","octstr","TBSCertificate","int","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","suite","cipherKey","match2","checkValue","ecVerify","dsaVerify","unpacked","montp","padNum","ECDH","aliases","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","oaep","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","pkcs1","nonZero","zBuffer","bs58checkBase","sha256x2","base58","checksumFn","decodeRaw","checksum","newChecksum","decodeUnsafe","basex","_Buffer","ALPHABET","BASE_MAP","LEADER","FACTOR","iFACTOR","psz","zeroes","b256","it3","it4","vch","pbegin","pend","b58","it1","it2","latestBlock","latestBlockNumber","cliChoices","disableInCLI","quiet","toBigIntOrString","czech","url_1","MAX_BLOCK_NUMBER","reColonSplit","coerceHeaders","ALLOWED_PROTOCOLS","asNum","_blockNumber","conjunction","arrayToOxfordList","implies","packager","leveldown","Level","DeferredIterator","deferrables","optionalDeferrables","setDb","rangeOptions","cleanRangeOptions","opt","isRangeOption","oldStatus","valueErr","emptyOptions","_setupIteratorOptions","_operation","ReadStream","_levelup","prr","cause","CustomError","FilesystemError","_keyEncoding","batchOpts","_valueEncoding","_op","ltgtKeys","createStreamDecoder","createRBT","_upperBound","MemIterator","_limit","_done","_incr","_lowerBound","_tree","_test","MemDOWN","callNext","_outOfRange","deserialize","support","DEFAULT_PREFIX","await","onabort","oncomplete","operations","loop","keyRange","upgrade","batchOptions","each","_deserializeKey","_deserializeValue","deleteDatabase","_callback","_completed","_aborted","_transaction","_values","_keyAsBuffer","_valueAsBuffer","createIterator","openCursor","onItem","onAbort","onComplete","maybeNext","str2bin","TextEncoder","encoder","direction","abstract","reachdown","matchdown","defaultClear","SubIterator","ite","SubDown","separator","_beforeOpen","subdb","isEmptyBuffer","isOpening","addRestOptions","xopts","compression","fillCache","fixRange","defined","ogte","olte","walk","visitor","isAbstract","isLevelup","typeVisitor","wanted","isEncdown","isDeferred","_iterators","plural","long","fmtLong","fmtShort","bufferAccessList","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","doUse","hit","isStale","unshiftNode","maxAge","walker","removeNode","Entry","forEachStep","thisp","LRUCache","stale","noDisposeOnSet","updateAgeOnGet","reset","mL","allowStale","mA","lC","expiresAt","inserted","pushNode","forEachReverse","getReverse","mapReverse","reduceReverse","toArrayReverse","sliceReverse","deleteCount","bufBE8","HEADER_PREFIX","TD_SUFFIX","NUM_SUFFIX","BLOCK_HASH_PEFIX","BODY_PREFIX","collection","collectionStrong","InternalMetadataModule","anInstance","InternalStateModule","setInternalState","internalStateGetterFor","CONSTRUCTOR_NAME","wrapper","IS_MAP","IS_WEAK","ADDER","NativePrototype","exported","getInternalState","IS_ADDER","getConstructor","setStrong","replacement","feature","detection","POLYFILL","NATIVE","preventExtensions","ArrayPrototype","v8","getBuiltIn","returnMethod","arraySpeciesCreate","createMethod","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","$this","specificCreate","boundFunction","filterOut","SPECIES","originalArray","inspectSource","functionToString","redefineAll","defineIterator","setSpecies","previous","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","internalObjectKeys","toIndexedObject","toAbsoluteIndex","IS_INCLUDES","fromIndex","unsafe","aPossiblePrototype","CORRECT_SETTER","CONVERT_TO_STRING","codeAt","addToUnscopables","ARRAY_ITERATOR","Arguments","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","genesisStateById","genesisStates","nativeObjectToString","unmasked","isArg","isBuff","isType","baseIsArguments","baseIsTypedArray","baseUnary","nodeIsTypedArray","typedArrayTags","boundPromisify","forEachArray","forEachString","forEachObject","OrdinaryGetOwnProperty","IsExtensible","oldDesc","extensible","IsRegExp","arrayLength","regexLastIndex","$match","hasRegExpMatcher","$exec","isRegexMarker","badStringifier","throwRegexMarker","isRegex","$Object","$preventExtensions","$isExtensible","CheckObjectCoercible","optMessage","shimGetOwnPropertyDescriptors","shimUtilPromisify","mclCreateModule","mclSetupFactory","_scriptDir","currentScript","readyPromiseResolve","readyPromiseReject","arguments_","read_","scriptDirectory","locateFile","__dirname","href","wasmBinary","wasmMemory","wasmTable","WebAssembly","WASM_PAGE_SIZE","updateGlobalBufferAndViews","INITIAL_INITIAL_MEMORY","initRuntime","hasPrefix","isDataURI","fileURIPrefix","isFileURI","wasmBinaryFile","getBinary","getBinaryPromise","fetch","credentials","createWasm","receiveInstance","receiveInstantiatedSource","instantiateArrayBuffer","instantiateAsync","instantiateStreaming","3246","$0","cryptoGetRandomValues","_emscripten_asm_const_int","sigPtr","argbuf","readAsmConstArgs","_emscripten_resize_heap","requestedSize","readAsmConstArgsArray","___wasm_call_ctors","calledRun","createModule","setup","MCLBN_FP_SIZE","MCLBN_FP_UNIT_SIZE","_mclBnMalloc","_mclBnFree","asciiStrToPtr","toHexStr","_wrapGetStr","returnAsStr","ioMode","ptrToAsciiStr","_wrapSerialize","_wrapDeserialize","_wrapInput","argNum","typeStr","_mulVec","xVec","yVec","Cstr","xSize","a_","ySize","zPos","_alloc","xPos","yPos","_saveAndFree","mclBnFr_malloc","MCLBN_FR_UNIT_SIZE","free","mclBnFr_setLittleEndian","_mclBnFr_setLittleEndian","mclBnFr_setLittleEndianMod","_mclBnFr_setLittleEndianMod","mclBnFr_setBigEndianMod","_mclBnFr_setBigEndianMod","mclBnFr_setStr","_mclBnFr_setStr","mclBnFr_getStr","_mclBnFr_getStr","mclBnFr_deserialize","_mclBnFr_deserialize","mclBnFr_serialize","_mclBnFr_serialize","mclBnFr_setHashOf","_mclBnFr_setHashOf","mclBnFp_malloc","mclBnFp_setLittleEndian","_mclBnFp_setLittleEndian","mclBnFp_setLittleEndianMod","_mclBnFp_setLittleEndianMod","mclBnFp_setBigEndianMod","_mclBnFp_setBigEndianMod","mclBnFp_setStr","_mclBnFp_setStr","mclBnFp_getStr","_mclBnFp_getStr","mclBnFp_deserialize","_mclBnFp_deserialize","mclBnFp_serialize","_mclBnFp_serialize","mclBnFp_setHashOf","_mclBnFp_setHashOf","mclBnFp2_malloc","mclBnFp2_deserialize","_mclBnFp2_deserialize","mclBnFp2_serialize","_mclBnFp2_serialize","mclBnG1_malloc","mclBnG1_setStr","_mclBnG1_setStr","mclBnG1_getStr","_mclBnG1_getStr","mclBnG1_deserialize","_mclBnG1_deserialize","mclBnG1_serialize","_mclBnG1_serialize","mclBnG1_hashAndMapTo","_mclBnG1_hashAndMapTo","mclBnG2_malloc","mclBnG2_setStr","_mclBnG2_setStr","mclBnG2_getStr","_mclBnG2_getStr","mclBnG2_deserialize","_mclBnG2_deserialize","mclBnG2_serialize","_mclBnG2_serialize","mclBnG2_hashAndMapTo","_mclBnG2_hashAndMapTo","mclBnGT_malloc","mclBnGT_deserialize","_mclBnGT_deserialize","mclBnGT_serialize","_mclBnGT_serialize","mclBnGT_setStr","_mclBnGT_setStr","mclBnGT_getStr","_mclBnGT_getStr","serializeToHexStr","_save","_allocAndCopy","_setter","_mclBnFr_setInt32","_getter","_mclBnFr_isZero","_mclBnFr_isOne","_isEqual","_mclBnFr_isEqual","setLittleEndian","deserializeHexStrToFr","deserializeHexStr","_mclBnFp_setInt32","_mclBnFp_isEqual","_mclBnFp_mapToG1","deserializeHexStrToFp","setInt","_mclBnFp2_isEqual","_getSubArray","_setSubArray","_mclBnFp2_mapToG2","deserializeHexStrToFp2","_mclBnG1_isZero","_mclBnG1_isValid","_mclBnG1_isValidOrder","_mclBnG1_isEqual","deserializeHexStrToG1","setETHserialization","ETHserialization","_mclBn_setETHserialization","_mclBn_setMapToMode","doVerify","_mclBn_verifyOrderG1","_mclBn_verifyOrderG2","getBasePointG1","_mclBnG1_getBasePoint","_mclBnG2_isZero","_mclBnG2_isValid","_mclBnG2_isValidOrder","_mclBnG2_isEqual","deserializeHexStrToG2","_mclBnGT_setInt32","_mclBnGT_isZero","_mclBnGT_isOne","_mclBnGT_isEqual","deserializeHexStrToGT","PrecomputedG2","byteSize","_mclBn_getUint64NumToPrecompute","Qpos","_mclBn_precomputeG2","_op1","_mclBnFr_neg","_mclBnFp_neg","_mclBnG1_neg","_mclBnG2_neg","_mclBnGT_neg","_mclBnFp2_neg","_mclBnFp_sqr","_mclBnFr_sqr","_mclBnGT_sqr","_mclBnFp2_sqr","_mclBnFp_inv","_mclBnFr_inv","_mclBnGT_inv","_mclBnFp2_inv","_mclBnG1_normalize","_mclBnG2_normalize","_op2","_mclBnFp_add","_mclBnFr_add","_mclBnG1_add","_mclBnG2_add","_mclBnGT_add","_mclBnFp2_add","_mclBnFp_sub","_mclBnFr_sub","_mclBnG1_sub","_mclBnG2_sub","_mclBnGT_sub","_mclBnFp2_sub","_mclBnFp_mul","_mclBnFr_mul","_mclBnG1_mul","_mclBnG2_mul","_mclBnGT_mul","_mclBnFp2_mul","_mclBnG1_mulVec","_mclBnG2_mulVec","_mclBnFp_div","_mclBnFr_div","_mclBnGT_div","_mclBnFp2_div","_mclBnG1_dbl","_mclBnG2_dbl","hashToFr","setHashOf","hashAndMapToG1","hashAndMapToG2","_mclBnGT_pow","_mclBn_pairing","_mclBn_millerLoop","precomputedMillerLoop","Qcoeff","PPos","ePos","_mclBn_precomputedMillerLoop","precomputedMillerLoop2","P1","Q1coeff","P2","Q2coeff","P1Pos","P2Pos","_mclBn_precomputedMillerLoop2","precomputedMillerLoop2mixed","Q1","Q1Pos","_mclBn_precomputedMillerLoop2mixed","_mclBn_finalExp","_mclBn_init","_cryptoGetRandomValues","BN254","AbortController","AbortSignal","Deferred","ansiStyles","stdoutColor","stderrColor","stringReplaceAll","stringEncaseCRLFWithFirstIndex","levelMapping","ChalkClass","chalkFactory","chalk","colorLevel","applyOptions","template","chalkTag","Chalk","Instance","styleName","builder","createBuilder","createStyler","_styler","_isEmpty","visible","usedModels","styler","bgColor","_generator","openAll","closeAll","applyStyle","lfIndex","firstString","supportsColor","wrapAnsi16","wrapAnsi256","wrapAnsi16m","ansi2ansi","rgb2rgb","setLazyProperty","property","colorConvert","makeDynamicStyles","targetSpace","isBackground","sourceSpace","assembleStyles","modifier","bold","dim","italic","underline","inverse","hidden","strikethrough","black","yellow","magenta","cyan","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","bgGray","grey","bgGrey","groupName","conversions","route","fromModel","routes","toModel","wrapRounded","wrappedFn","arg0","conversion","wrapRaw","deriveBFS","graph","buildGraph","models","adjacents","adjacent","wrapConversion","replacer","substringLength","endIndex","gotCR","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","bracket","fromCodePoint","parseArguments","matches","character","parseStyle","buildStyle","layer","temporary","escapeCharacter","errMessage","server_options_1","ServerOptions","rebindable","$resolve","$PromiseResolve","iterateValue","$mapHas","$setHas","iterateIterator","boundMapShim","$species","IsInteger","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","bigIntValueOf","gOPS","symToString","hasShammedSymbols","gPO","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","maxStringLength","indent","inspectString","maxDepth","getIndent","baseIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","HTMLElement","getAttribute","attrs","attributes","childNodes","singleLineValues","indentedJoin","mapParts","collectionOf","setParts","weakCollectionOf","isWeakRef","isBigInt","ys","isPlainObject","protoTag","trailer","lowbyte","lineJoiner","symMap","IsAccessorDescriptor","IsPropertyDescriptor","ES","$isFinite","absValue","$abs","$floor","ToNumber","$Number","$RegExp","$parseInteger","regexTester","isOctal","isInvalidHexLiteral","hasNonWS","trimRegex","ToPrimitive","trimmed","$trim","$test","regex","ordinaryToPrimitive","OrdinaryToPrimitive","GetMethod","exoticToPrim","getDay","isDateObject","tryDateGetDayCall","tryDateObject","$String","properlyBoxed","properlyBoxesNonStrict","properlyBoxesStrict","threwException","shimArrayPrototypeMap","shimAllSettled","testAllSettled","indentString","cleanStack","_errors","includeEmptyLines","extractPathRegex","pathRegex","homeDir","pretty","pathMatches","uint_to_buffer_1","_bigIntToBuffer","bigIntByteLength","toBufferBE","bigint_buffer_1","view","getBigUint64","less","down","element","newLength","fix","i0","heap","bufferToMinHexKey","HEX_MAP","P1600_ROUND_CONSTANTS","lo0","hi0","lo1","hi1","lo2","hi2","lo3","hi3","lo4","hi4","t1slo0","t1shi0","t1slo5","t1shi5","t1slo10","t1shi10","t1slo15","t1shi15","t1slo20","t1shi20","t1slo1","t1shi1","t1slo6","t1shi6","t1slo11","t1shi11","t1slo16","t1shi16","t1slo21","t1shi21","t1slo2","t1shi2","t1slo7","t1shi7","t1slo12","t1shi12","t1slo17","t1shi17","t1slo22","t1shi22","t1slo3","t1shi3","t1slo8","t1shi8","t1slo13","t1shi13","t1slo18","t1shi18","t1slo23","t1shi23","t1slo4","t1shi4","t1slo9","t1shi9","t1slo14","t1shi14","t1slo19","t1shi19","t1slo24","t1shi24","t2slo0","t2shi0","t2slo16","t2shi16","t2slo7","t2shi7","t2slo23","t2shi23","t2slo14","t2shi14","t2slo10","t2shi10","t2slo1","t2shi1","t2slo17","t2shi17","t2slo8","t2shi8","t2slo24","t2shi24","t2slo20","t2shi20","t2slo11","t2shi11","t2slo2","t2shi2","t2slo18","t2shi18","t2slo9","t2shi9","t2slo5","t2shi5","t2slo21","t2shi21","t2slo12","t2shi12","t2slo3","t2shi3","t2slo19","t2shi19","t2slo15","t2shi15","t2slo6","t2shi6","t2slo22","t2shi22","t2slo13","t2shi13","t2slo4","t2shi4","comp","insertPosition","json_rpc_base_types_2","validateByteLength","byteLengths","strLength","padBy","toPublicKey","EC_PRIVKEY_EXPORT_DER_COMPRESSED","EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED","lenb","lenbyte","rindex","sindex","rvalue","svalue","hashConstructor","obj_1","_logs","filterByTopic","expectedTopics","logTopics","expectedTopic","logPosition","expectedTopicSet","logTopic","logIndex","logToJSON","expectedAddresses","PREFIXES","traceDataLookup","lengthDiff","frozen_transaction_1","FakeTransaction","runtime_transaction_1","pbkdf2_1","_wordlists_1","DEFAULT_WORDLIST","INVALID_MNEMONIC","INVALID_ENTROPY","WORDLIST_REQUIRED","lpad","padString","binaryToByte","bin","bytesToBinary","deriveChecksumBits","entropyBuffer","CS","mnemonicToEntropy","wordlist","dividerIndex","entropyBits","checksumBits","entropyBytes","mnemonicBuffer","saltBuffer","mnemonicToSeed","generateMnemonic","strength","validateMnemonic","setDefaultWordlist","language","getDefaultWordlist","lang","_wordlists_2","aesModes","desModes","ebtk","CBCState","_cbcInit","_cbcState","MODES","AuthCipher","Splitter","_autopadding","PADDING","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","_last","autoPadding","generatePrime","ENCODINGS","genc","null_","PrivateKeyInfo","EncryptedPrivateKeyInfo","ECParameters","namedCurve","safeBuffer","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","STIPEND","opname","isCall","isCallOrCallcode","isCreate","binSearch","startingGas","isEnoughGas","vmerr","exactimate","steps","sysOps","allOps","preCompile","preCompileCheck","precompileCallDepth","collect","isPrecompile","systemOps","stepTracker","Context","sixtyFloorths","intermediateCost","callingFee","compositeContext","addGas","setStart","setStop","getCost","transfer","addSixtyFloorth","sixtyFloorth","addRange","finalizeRange","innerCost","estimate","actualUsed","sysops","opIndex","currentIndex","getTotal","propertyKey","pbkdf2Promise","saltMixin","Mutation","MutationObserver","WebKitMutationObserver","observer","createTextNode","observe","characterData","MessageChannel","channel","port1","port2","scriptEl","onreadystatechange","maxPoolSize","currentPoolSize","terminator","replaceFromHeap","replaceBest","RANDOM_CHARS","TEMPLATE_PATTERN","_removeObjects","_gracefulCleanup","_randomChars","howMany","rnd","_isBlank","_isUndefined","tmpName","_parseArguments","_assertAndSanitizeOptions","_getTmpDir","_sanitizeName","_assertIsRelative","tries","keep","_resolvePath","_getUniqueName","_generateTmpName","_indexedDbExists","existed","_prepareTmpDirRemoveCallback","removeCallback","sanitizedName","option","_basename","actualOptions","1559","2315","2537","2565","2718","2929","2930","3198","3529","3541","3554","TD","blockBody","headerValue","bodyValue","blockNumber8Byte","blockNumber8Bytes","propertyIsEnumerableModule","$getOwnPropertyDescriptor","$propertyIsEnumerable","NASHORN_BUG","STRING_ITERATOR","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","maxHeight","_maxHeight","STACK_OVERFLOW","STACK_UNDERFLOW","sstoreNoopCost","sstoreInitRefund","sstoreCleanRefund","adjustedELen","getAdjustedExponentLength","expBytesStart","expLen","firstExpBytes","firstExpBN","max32expLen","bitLen","expLenMinus32OrZero","adjustedExpLen","bLen","maxLen","Gquaddivisor","bStart","bEnd","eStart","eEnd","mStart","mEnd","multComplexityEIP2565","multComplexity","fac1","fac2","maxInt","maxSize","expmod","inputDataSize","ADD64AA","o0","o1","ADD64AC","B2B_GET32","B2B_G","mw","ix","iy","y0","xor0","xor1","BLAKE2B_IV32","SIGMA82","rounds","lastByte","hRaw","mRaw","tRaw","_asyncify2","supportsSymbol","wrapAsync","asyncFn","hasNextTick","hasSetImmediate","_defer","defer","onSetteled","_onSetteled","pieces","lengthBuffer","lengthLength","SERIALIZED_PRECOMPILE","PRECOMPILED_ACCOUNT","accountCache","makeAccount","timeSince","windowLength","counters","lastEvict","updatedAt","evict","previousWindow","src_1","src_2","ipfsHost","ipfsPort","webpackEmptyContext","WebSocketCloseCodes","ContentTypes","HttpResponseCodes","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","amdD","amdO","nmd"],"mappings":"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SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,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CAEf,CACED,MAAO,GACP3wH,KAAM,eACN4wH,YAAa,uBAEf,CACED,MAAO,GACP3wH,KAAM,QACN4wH,YAAa,2BAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,oBAEf,CACED,MAAO,GACP3wH,KAAM,UACN4wH,YAAa,+BAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,uBAEf,CACED,MAAO,GACP3wH,KAAM,WACN4wH,YAAa,oBAEf,CACED,MAAO,GACP3wH,KAAM,WACN4wH,YAAa,mBAEf,CACED,MAAO,GACP3wH,KAAM,cACN4wH,YAAa,0BAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,uBAEf,CACED,MAAO,GACP3wH,KAAM,UACN4wH,YAAa,6BAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,qBAEf,CACED,MAAO,GACP3wH,KAAM,UACN4wH,YAAa,mBAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,oCAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,iCAEf,CACED,MAAO,GACP3wH,KAAM,WACN4wH,YAAa,2BAEf,CACED,MAAO,GACP3wH,KAAM,WACN4wH,YAAa,kCAEf,CACED,MAAO,GACP3wH,KAAM,UACN4wH,YAAa,qCAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,6BAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,4BAEf,CACED,MAAO,GACP3wH,KAAM,QACN4wH,YAAa,eAEf,CACED,MAAO,GACP3wH,KAAM,SACN4wH,YAAa,kBAEf,CACED,MAAO,GACP3wH,KAAM,kBACN4wH,YAAa,0BAEf,CACED,MAAO,GACP3wH,KAAM,aACN4wH,YAAa,kCAEf,CACED,MAAO,GACP3wH,KAAM,YACN4wH,YAAa,wBAEf,CACED,MAAO,GACP3wH,KAAM,WACN4wH,YAAa,6BAEf,CACED,MAAO,GACP3wH,KAAM,kBACN4wH,YAAa,6CAEf,CACED,MAAO,GACP3wH,KAAM,aACN4wH,YAAa,0CAEf,CACED,MAAO,GACP3wH,KAAM,cACN4wH,Y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E,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINn/D,IAAK,CACHz4B,IAAK,EACL43F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,C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KinP,MAAM7rO,OAAOo1C,K,IC7C3Bl1D,EAAOD,QAAU,CACf2yH,QAAS,CACPx2F,KAAM,EACN+2F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINn/D,IAAK,CACHz4B,IAAK,EACL43F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,uBCrwBR,IAAIj2G,EAAK,EAAQ,KACb4uO,EAAW,EAAQ,KACnBp4L,EAAQ,EAAQ,IAChBghF,EAAS,EAAQ,KACjB95C,EAAO,EAAQ,KACf9iF,EAAS47C,EAAM57C,OAEfi0O,EAAU,EAAQ,KAClBC,EAAY,EAAQ,KAExB,SAASruF,GAAGnsH,GACV,KAAM5sC,gBAAgB+4J,IACpB,O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OhmE,OAAO9F,IAGtCo/G,KAAK/3H,UAAUye,OAAS,SAASA,OAAOrK,EAAK0/C,GAE3C,OADAxwD,KAAKgnP,MAAM7rO,OAAOrK,EAAK0/C,GAChBxwD,MAGTy0H,KAAK/3H,UAAU0e,OAAS,SAASA,OAAOo1C,GAEtC,OADAxwD,KAAKinP,MAAM9rO,OAAOnb,KAAKgnP,MAAM5rO,UACtBpb,KAAKinP,MAAM7rO,OAAOo1C,K,IC7C3Bl1D,EAAOD,QAAU,CACf2yH,QAAS,CACPx2F,KAAM,EACN+2F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINn/D,IAAK,CACHz4B,IAAK,EACL43F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE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AOrK,EAAK0/C,GAE3C,OADAxwD,KAAKgnP,MAAM7rO,OAAOrK,EAAK0/C,GAChBxwD,MAGTy0H,KAAK/3H,UAAU0e,OAAS,SAASA,OAAOo1C,GAEtC,OADAxwD,KAAKinP,MAAM9rO,OAAOnb,KAAKgnP,MAAM5rO,UACtBpb,KAAKinP,MAAM7rO,OAAOo1C,K,IC7C3Bl1D,EAAOD,QAAU,CACf2yH,QAAS,CACPx2F,KAAM,EACN+2F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINn/D,IAAK,CACHz4B,IAAK,EACL43F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,uBCrwBR,IAAIj2G,EAAK,EAAQ,KACb4uO,EAAW,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,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINn/D,IAAK,CACHz4B,IAAK,EACL43F,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEA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AQ,EAkBhB59F,EAAQ49F,MATR,SAASA,MAAMo5I,GACX,MAAqB,iBAAVA,GAA6C,mBAAhBA,EAAMp5I,QAC1Co5I,EAAMp5I,SACC,K,yCCXf,IAAIjrD,EAFJxxC,OAAOkI,eAAerJ,EAAS,aAAc,CAAE2B,OAAO,IACtD3B,EAAQ+kS,uBAAoB,EAGxBpyP,EADwC,mBAAjClyC,EAAOY,UAAU0D,YACZ,CAACpC,EAAQ8B,EAAOC,IAIjB/B,EAAOiC,SAASH,EAAOC,GAItB,CAAC/B,EAAQ8B,EAAOC,IACjB/B,EAAOR,MAAMsC,EAAOC,GAAKT,SAAS,OAyBjDjE,EAAQ+kS,kBAhBR,SAASA,kBAAkBpiS,GACvB,IAAK,IAAIqB,EAAI,EAAGrD,EAASgC,EAAOX,WAAYgC,EAAIrD,EAAQqD,IAAK,CACzD,MAAMrC,EAAQgB,EAAOqB,GAErB,GAAc,IAAVrC,EACA,OAAIqC,EAAI,IAAMrD,EAEHqkS,EAAQrjS,GAGRgxC,EAAUhwC,EAAQqB,EAAGrD,GAIxC,MAAO,IAGX,MAAMqkS,EAAU,CACZ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,O,QCxSJ,MAAMC,EAAwB,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAAY,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAAG,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAAO,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WAAY,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YAE9ZjlS,EAAQmiP,MAAQ,SAAU1gO,GACxB,IAAK,IAAI8Q,EAAQ,EAAGA,EAAQ,KAAMA,EAAO,CAEvC,MAAM2yQ,EAAMzjR,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC0jR,EAAM1jR,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC2jR,EAAM3jR,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,I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glE,EAASqiD,EAAMwrC,IAAI1xJ,IAAIwzJ,GAC3B,OAAOwsI,YAAYn8N,EAAOkkD,OAAQlkD,EAAOmkD,OAAQxiC,IAErD,IAAIw6M,YAAc,SAAUziS,EAAGC,EAAGgoF,GAC9B,IAAItxE,EAYJ,OAXIsxE,IACAtxE,EAAYhgB,EAAOG,MAAM,KACf,GAAKmJ,EAAE4sB,QAAU,EAAO,EAClC7sB,EAAEmV,YAAYxe,EAAQ,KAAM,IAAIgC,KAAKge,EAAW,MAGhDA,EAAYhgB,EAAOG,MAAM,KACf,GAAK,EACfkJ,EAAEmV,YAAYxe,EAAQ,KAAM,IAAIgC,KAAKge,EAAW,GAChD1W,EAAEkV,YAAYxe,EAAQ,KAAM,IAAIgC,KAAKge,EAAW,KAE7CA,I,yCCvDXtf,OAAOkI,eAAerJ,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI6qS,EAAmC/rS,EAAOiB,KAAK,CAE/C,GACA,IACA,IACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEA+qS,EAAqChsS,EAAOiB,KAAK,CAEjD,GACA,IACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEJ1B,EAAQ2zI,iBAAmB,SAAUrzH,EAAYG,EAAWsxE,QACrC,IAAfA,IAAyBA,GAAa,GAC1C,IAAIp2E,EAASlb,EAAOiB,KAAKqwF,EAAay6M,EAAmCC,GAGzE,OAFAnsR,EAAW7d,KAAKkZ,EAAQo2E,EAAa,EAAI,GACzCtxE,EAAUhe,KAAKkZ,EAAQo2E,EAAa,IAAM,KACnCp2E,GAEX3b,EAAQ0zI,iBAAmB,SAAUpzH,GACjC,IAAI3f,EAAS2f,EAAW3f,OAEpBylB,EAAQ,EACZ,GAAIzlB,EAASylB,EAAQ,GAA2B,KAAtB9F,EAAW8F,GACjC,OAAO,KAGX,GAAIzlB,GAFJylB,GAAS,GAEY,KAA2B,IAApB9F,EAAW8F,IACnC,OAAO,KACX,IAAIsmR,EAA2B,IAApBpsR,EAAW8F,GAEtB,GAAIsmR,EAAO,GAAKA,EAAO,EACnB,OAAO,KACX,GAAI/rS,GAHJylB,GAAS,GAGYsmR,EACjB,OAAO,KAEX,IAAItpS,EAAMkd,EAAW8F,EAAQsmR,EAAO,IAAMA,EAAO,EAAIpsR,EAAW8F,EAAQsmR,EAAO,IAAM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Q8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,MAAO8wG,SAAS,GAC9B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,IAAM,CAAE9wG,KAAM,OAAQ8wG,SAAS,GAC/B,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","file":"ganache.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Ganache\"] = factory();\n\telse\n\t\troot[\"Ganache\"] = factory();\n})(self, function() {\nreturn ","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = require('ethereum-cryptography/keccak'),\n keccak224 = _require.keccak224,\n keccak384 = _require.keccak384,\n k256 = _require.keccak256,\n keccak512 = _require.keccak512;\n\nvar secp256k1 = require('./secp256k1-adapter');\nvar assert = require('assert');\nvar rlp = require('rlp');\nvar BN = require('bn.js');\nvar createHash = require('create-hash');\nvar Buffer = require('safe-buffer').Buffer;\nObject.assign(exports, require('ethjs-util'));\n\n/**\n * the max integer that this VM can handle (a ```BN```)\n * @var {BN} MAX_INTEGER\n */\nexports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n\n/**\n * 2^256 (a ```BN```)\n * @var {BN} TWO_POW256\n */\nexports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16);\n\n/**\n * Keccak-256 hash of null (a ```String```)\n * @var {String} KECCAK256_NULL_S\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\nexports.SHA3_NULL_S = exports.KECCAK256_NULL_S;\n\n/**\n * Keccak-256 hash of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_NULL\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\nexports.SHA3_NULL = exports.KECCAK256_NULL;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```String```)\n * @var {String} KECCAK256_RLP_ARRAY_S\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\nexports.SHA3_RLP_ARRAY_S = exports.KECCAK256_RLP_ARRAY_S;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP_ARRAY\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\nexports.SHA3_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```String```)\n * @var {String} KECCAK256_RLP_S\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\nexports.SHA3_RLP_S = exports.KECCAK256_RLP_S;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\nexports.SHA3_RLP = exports.KECCAK256_RLP;\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n * @var {Function}\n */\nexports.BN = BN;\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n * @var {Function}\n */\nexports.rlp = rlp;\n\n/**\n * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)\n * @var {Object}\n */\nexports.secp256k1 = secp256k1;\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n\n/**\n * Returns a zero address\n * @method zeroAddress\n * @return {String}\n */\nexports.zeroAddress = function () {\n var addressLength = 20;\n var zeroAddress = exports.zeros(addressLength);\n return exports.bufferToHex(zeroAddress);\n};\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method lsetLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nexports.setLengthLeft = exports.setLength = function (msg, length, right) {\n var buf = exports.zeros(length);\n msg = exports.toBuffer(msg);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nexports.setLengthRight = function (msg, length) {\n return exports.setLength(msg, length, true);\n};\n\n/**\n * Trims leading zeros from a `Buffer` or an `Array`\n * @param {Buffer|Array|String} a\n * @return {Buffer|Array|String}\n */\nexports.unpad = exports.stripZeros = function (a) {\n a = exports.stripHexPrefix(a);\n var first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param {*} v the value\n */\nexports.toBuffer = function (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v);\n } else if (typeof v === 'string') {\n if (exports.isHexString(v)) {\n v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex');\n } else {\n v = Buffer.from(v);\n }\n } else if (typeof v === 'number') {\n v = exports.intToBuffer(v);\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0);\n } else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer);\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray());\n } else {\n throw new Error('invalid type');\n }\n }\n return v;\n};\n\n/**\n * Converts a `Buffer` to a `Number`\n * @param {Buffer} buf\n * @return {Number}\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new BN(exports.toBuffer(buf)).toNumber();\n};\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param {Buffer} num\n * @return {BN}\n */\nexports.fromSigned = function (num) {\n return new BN(num).fromTwos(256);\n};\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param {BN} num\n * @return {Buffer}\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n\n/**\n * Creates Keccak hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the Keccak width\n * @return {Buffer}\n */\nexports.keccak = function (a, bits) {\n a = exports.toBuffer(a);\n if (!bits) bits = 256;\n\n switch (bits) {\n case 224:\n {\n return keccak224(a);\n }\n case 256:\n {\n return k256(a);\n }\n case 384:\n {\n return keccak384(a);\n }\n case 512:\n {\n return keccak512(a);\n }\n default:\n {\n throw new Error('Invald algorithm: keccak' + bits);\n }\n }\n};\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256)\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n\n/**\n * Creates SHA-3 (Keccak) hash of the input [OBSOLETE]\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the SHA-3 width\n * @return {Buffer}\n */\nexports.sha3 = exports.keccak;\n\n/**\n * Creates SHA256 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.sha256 = function (a) {\n a = exports.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n\n/**\n * Creates RIPEMD160 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Boolean} padded whether it should be padded to 256 bits or not\n * @return {Buffer}\n */\nexports.ripemd160 = function (a, padded) {\n a = exports.toBuffer(a);\n var hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return exports.setLength(hash, 32);\n } else {\n return hash;\n }\n};\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n * @param {Buffer} privateKey\n * @return {Boolean}\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1.privateKeyVerify(privateKey);\n};\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Boolean}\n */\nexports.isValidPublic = function (publicKey, sanitize) {\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n\n if (!sanitize) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(publicKey);\n};\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Buffer}\n */\nexports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {\n pubKey = exports.toBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1);\n }\n assert(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return exports.keccak(pubKey).slice(-20);\n};\n\n/**\n * Returns the ethereum public key of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nvar privateToPublic = exports.privateToPublic = function (privateKey) {\n privateKey = exports.toBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.publicKeyCreate(privateKey, false).slice(1);\n};\n\n/**\n * Converts a public key to the Ethereum format.\n * @param {Buffer} publicKey\n * @return {Buffer}\n */\nexports.importPublic = function (publicKey) {\n publicKey = exports.toBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1);\n }\n return publicKey;\n};\n\n/**\n * ECDSA sign\n * @param {Buffer} msgHash\n * @param {Buffer} privateKey\n * @return {Object}\n */\nexports.ecsign = function (msgHash, privateKey) {\n var sig = secp256k1.sign(msgHash, privateKey);\n\n var ret = {};\n ret.r = sig.signature.slice(0, 32);\n ret.s = sig.signature.slice(32, 64);\n ret.v = sig.recovery + 27;\n return ret;\n};\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n * @param message\n * @returns {Buffer} hash\n */\nexports.hashPersonalMessage = function (message) {\n var prefix = exports.toBuffer('\\x19Ethereum Signed Message:\\n' + message.length.toString());\n return exports.keccak(Buffer.concat([prefix, message]));\n};\n\n/**\n * ECDSA public key recovery from signature\n * @param {Buffer} msgHash\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {Buffer} publicKey\n */\nexports.ecrecover = function (msgHash, v, r, s) {\n var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64);\n var recovery = v - 27;\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Invalid signature v value');\n }\n var senderPubKey = secp256k1.recover(msgHash, signature, recovery);\n return secp256k1.publicKeyConvert(senderPubKey, false).slice(1);\n};\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {String} sig\n */\nexports.toRpcSig = function (v, r, s) {\n // NOTE: with potential introduction of chainId this might need to be updated\n if (v !== 27 && v !== 28) {\n throw new Error('Invalid recovery id');\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053\n return exports.bufferToHex(Buffer.concat([exports.setLengthLeft(r, 32), exports.setLengthLeft(s, 32), exports.toBuffer(v - 27)]));\n};\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * @param {String} sig\n * @return {Object}\n */\nexports.fromRpcSig = function (sig) {\n sig = exports.toBuffer(sig);\n\n // NOTE: with potential introduction of chainId this might need to be updated\n if (sig.length !== 65) {\n throw new Error('Invalid signature length');\n }\n\n var v = sig[64];\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n\n return {\n v: v,\n r: sig.slice(0, 32),\n s: sig.slice(32, 64)\n };\n};\n\n/**\n * Returns the ethereum address of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(privateToPublic(privateKey));\n};\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too\n * @param {String} address\n * @return {Boolean}\n */\nexports.isValidAddress = function (address) {\n return (/^0x[0-9a-fA-F]{40}$/.test(address)\n );\n};\n\n/**\n * Checks if a given address is a zero address\n * @method isZeroAddress\n * @param {String} address\n * @return {Boolean}\n */\nexports.isZeroAddress = function (address) {\n var zeroAddress = exports.zeroAddress();\n return zeroAddress === exports.addHexPrefix(address);\n};\n\n/**\n * Returns a checksummed address\n * @param {String} address\n * @return {String}\n */\nexports.toChecksumAddress = function (address) {\n address = exports.stripHexPrefix(address).toLowerCase();\n var hash = exports.keccak(address).toString('hex');\n var ret = '0x';\n\n for (var i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n } else {\n ret += address[i];\n }\n }\n\n return ret;\n};\n\n/**\n * Checks if the address is a valid checksummed address\n * @param {Buffer} address\n * @return {Boolean}\n */\nexports.isValidChecksumAddress = function (address) {\n return exports.isValidAddress(address) && exports.toChecksumAddress(address) === address;\n};\n\n/**\n * Generates an address of a newly created contract\n * @param {Buffer} from the address which is creating this new address\n * @param {Buffer} nonce the nonce of the from account\n * @return {Buffer}\n */\nexports.generateAddress = function (from, nonce) {\n from = exports.toBuffer(from);\n nonce = new BN(nonce);\n\n if (nonce.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n nonce = null;\n } else {\n nonce = Buffer.from(nonce.toArray());\n }\n\n // Only take the lower 160bits of the hash\n return exports.rlphash([from, nonce]).slice(-20);\n};\n\n/**\n * Returns true if the supplied address belongs to a precompiled account (Byzantium)\n * @param {Buffer|String} address\n * @return {Boolean}\n */\nexports.isPrecompiled = function (address) {\n var a = exports.unpad(address);\n return a.length === 1 && a[0] >= 1 && a[0] <= 8;\n};\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\"\n * @param {String} str\n * @return {String}\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return exports.isHexPrefixed(str) ? str : '0x' + str;\n};\n\n/**\n * Validate ECDSA signature\n * @method isValidSignature\n * @param {Buffer} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @param {Boolean} [homestead=true]\n * @return {Boolean}\n */\n\nexports.isValidSignature = function (v, r, s, homestead) {\n var SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n var SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n\n if (v !== 27 && v !== 28) {\n return false;\n }\n\n r = new BN(r);\n s = new BN(s);\n\n if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {\n return false;\n }\n\n if (homestead === false && new BN(s).cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Converts a `Buffer` or `Array` to JSON\n * @param {Buffer|Array} ba\n * @return {Array|String|null}\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return '0x' + ba.toString('hex');\n } else if (ba instanceof Array) {\n var array = [];\n for (var i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param {Object} self the `Object` to define properties on\n * @param {Array} fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param {*} data data to be validated against the definitions\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n\n // attach the `toJSON`\n self.toJSON = function (label) {\n if (label) {\n var obj = {};\n self._fields.forEach(function (field) {\n obj[field] = '0x' + self[field].toString('hex');\n });\n return obj;\n }\n return exports.baToJSON(this.raw);\n };\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n\n fields.forEach(function (field, i) {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = exports.toBuffer(v);\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n\n if (field.allowLess && field.length) {\n v = exports.stripZeros(v);\n assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes');\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length);\n }\n\n self.raw[i] = v;\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n\n if (field.default) {\n self[field.name] = field.default;\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(exports.stripHexPrefix(data), 'hex');\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n\n // make sure all the items are buffers\n data.forEach(function (d, i) {\n self[self._fields[i]] = exports.toBuffer(d);\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n var keys = Object.keys(data);\n fields.forEach(function (field) {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias];\n });\n } else {\n throw new Error('invalid data');\n }\n }\n};","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiEvent = exports.JsonRpcErrorCode = exports.makeResponse = exports.makeRequest = exports.makeError = void 0;\n__exportStar(require(\"./src/types\"), exports);\n__exportStar(require(\"./src/utils\"), exports);\n__exportStar(require(\"./src/things/subscription\"), exports);\n__exportStar(require(\"./src/things/json-rpc/json-rpc-quantity\"), exports);\n__exportStar(require(\"./src/things/json-rpc/json-rpc-data\"), exports);\nvar jsonrpc_1 = require(\"./src/things/jsonrpc\");\nObject.defineProperty(exports, \"makeError\", { enumerable: true, get: function () { return jsonrpc_1.makeError; } });\nObject.defineProperty(exports, \"makeRequest\", { enumerable: true, get: function () { return jsonrpc_1.makeRequest; } });\nObject.defineProperty(exports, \"makeResponse\", { enumerable: true, get: function () { return jsonrpc_1.makeResponse; } });\nObject.defineProperty(exports, \"JsonRpcErrorCode\", { enumerable: true, get: function () { return jsonrpc_1.JsonRpcErrorCode; } });\nvar promievent_1 = require(\"./src/things/promievent\");\nObject.defineProperty(exports, \"PromiEvent\", { enumerable: true, get: function () { return __importDefault(promievent_1).default; } });\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = require('ethereum-cryptography/keccak'),\n keccak224 = _require.keccak224,\n keccak384 = _require.keccak384,\n k256 = _require.keccak256,\n keccak512 = _require.keccak512;\n\nvar secp256k1 = require('./secp256k1-adapter');\nvar assert = require('assert');\nvar rlp = require('rlp');\nvar BN = require('bn.js');\nvar createHash = require('create-hash');\n\n/**\n * the max integer that this VM can handle (a ```BN```)\n * @var {BN} MAX_INTEGER\n */\nexports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n\n/**\n * 2^256 (a ```BN```)\n * @var {BN} TWO_POW256\n */\nexports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16);\n\n/**\n * SHA3-256 hash of null (a ```String```)\n * @var {String} SHA3_NULL_S\n */\nexports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n\n/**\n * SHA3-256 hash of null (a ```Buffer```)\n * @var {Buffer} SHA3_NULL\n */\nexports.SHA3_NULL = new Buffer(exports.SHA3_NULL_S, 'hex');\n\n/**\n * SHA3-256 of an RLP of an empty array (a ```String```)\n * @var {String} SHA3_RLP_ARRAY_S\n */\nexports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n\n/**\n * SHA3-256 of an RLP of an empty array (a ```Buffer```)\n * @var {Buffer} SHA3_RLP_ARRAY\n */\nexports.SHA3_RLP_ARRAY = new Buffer(exports.SHA3_RLP_ARRAY_S, 'hex');\n\n/**\n * SHA3-256 hash of the RLP of null (a ```String```)\n * @var {String} SHA3_RLP_S\n */\nexports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n\n/**\n * SHA3-256 hash of the RLP of null (a ```Buffer```)\n * @var {Buffer} SHA3_RLP\n */\nexports.SHA3_RLP = new Buffer(exports.SHA3_RLP_S, 'hex');\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n * @var {Function}\n */\nexports.BN = BN;\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n * @var {Function}\n */\nexports.rlp = rlp;\n\n/**\n * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)\n * @var {Object}\n */\nexports.secp256k1 = secp256k1;\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nexports.zeros = function (bytes) {\n var buf = new Buffer(bytes);\n buf.fill(0);\n return buf;\n};\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method lsetLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nexports.setLengthLeft = exports.setLength = function (msg, length, right) {\n var buf = exports.zeros(length);\n msg = exports.toBuffer(msg);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method lsetLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nexports.setLengthRight = function (msg, length) {\n return exports.setLength(msg, length, true);\n};\n\n/**\n * Trims leading zeros from a `Buffer` or an `Array`\n * @method unpad\n * @param {Buffer|Array|String} a\n * @return {Buffer|Array|String}\n */\nexports.unpad = exports.stripZeros = function (a) {\n a = exports.stripHexPrefix(a);\n var first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @method toBuffer\n * @param {*} v the value\n */\nexports.toBuffer = function (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = new Buffer(v);\n } else if (typeof v === 'string') {\n if (exports.isHexPrefixed(v)) {\n v = new Buffer(exports.padToEven(exports.stripHexPrefix(v)), 'hex');\n } else {\n v = new Buffer(v);\n }\n } else if (typeof v === 'number') {\n v = exports.intToBuffer(v);\n } else if (v === null || v === undefined) {\n v = new Buffer([]);\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = new Buffer(v.toArray());\n } else {\n throw new Error('invalid type');\n }\n }\n return v;\n};\n\n/**\n * Converts a `Number` into a hex `String`\n * @method intToHex\n * @param {Number} i\n * @return {String}\n */\nexports.intToHex = function (i) {\n assert(i % 1 === 0, 'number is not a integer');\n assert(i >= 0, 'number must be positive');\n var hex = i.toString(16);\n if (hex.length % 2) {\n hex = '0' + hex;\n }\n\n return '0x' + hex;\n};\n\n/**\n * Converts an `Number` to a `Buffer`\n * @method intToBuffer\n * @param {Number} i\n * @return {Buffer}\n */\nexports.intToBuffer = function (i) {\n var hex = exports.intToHex(i);\n return new Buffer(hex.slice(2), 'hex');\n};\n\n/**\n * Converts a `Buffer` to a `Number`\n * @method bufferToInt\n * @param {Buffer} buf\n * @return {Number}\n */\nexports.bufferToInt = function (buf) {\n return parseInt(exports.bufferToHex(buf), 16);\n};\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @method bufferToHex\n * @param {Buffer} buf\n * @return {String}\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n if (buf.length === 0) {\n return 0;\n }\n\n return '0x' + buf.toString('hex');\n};\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @method fromSigned\n * @param {Buffer} num\n * @return {BN}\n */\nexports.fromSigned = function (num) {\n return new BN(num).fromTwos(256);\n};\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @method toUnsigned\n * @param {BN} num\n * @return {Buffer}\n */\nexports.toUnsigned = function (num) {\n return new Buffer(num.toTwos(256).toArray());\n};\n\n/**\n * Creates SHA-3 hash of the input\n * @method sha3\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bytes=256] the SHA width\n * @return {Buffer}\n */\nexports.sha3 = function (a, bytes) {\n a = exports.toBuffer(a);\n if (!bytes) bytes = 256;\n\n switch (bytes) {\n case 224:\n {\n return keccak224(a);\n }\n case 256:\n {\n return k256(a);\n }\n case 384:\n {\n return keccak384(a);\n }\n case 512:\n {\n return keccak512(a);\n }\n default:\n {\n throw new Error('Invalid algorithm: keccak' + bytes);\n }\n }\n};\n\n/**\n * Creates SHA256 hash of the input\n * @method sha256\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.sha256 = function (a) {\n a = exports.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n\n/**\n * Creates RIPEMD160 hash of the input\n * @method ripemd160\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Boolean} padded whether it should be padded to 256 bits or not\n * @return {Buffer}\n */\nexports.ripemd160 = function (a, padded) {\n a = exports.toBuffer(a);\n var hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return exports.setLength(hash, 32);\n } else {\n return hash;\n }\n};\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input\n * @method rlphash\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.rlphash = function (a) {\n return exports.sha3(rlp.encode(a));\n};\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n * @method isValidPrivate\n * @param {Buffer} privateKey\n * @return {Boolean}\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1.privateKeyVerify(privateKey);\n};\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @method isValidPublic\n * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Boolean}\n */\nexports.isValidPublic = function (publicKey, sanitize) {\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1.publicKeyVerify(Buffer.concat([new Buffer([4]), publicKey]));\n }\n\n if (!sanitize) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(publicKey);\n};\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @method publicToAddress\n * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Buffer}\n */\nexports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {\n pubKey = exports.toBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1);\n }\n assert(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return exports.sha3(pubKey).slice(-20);\n};\n\n/**\n * Returns the ethereum public key of a given private key\n * @method privateToPublic\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nvar privateToPublic = exports.privateToPublic = function (privateKey) {\n privateKey = exports.toBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.publicKeyCreate(privateKey, false).slice(1);\n};\n\n/**\n * Converts a public key to the Ethereum format.\n * @method importPublic\n * @param {Buffer} publicKey\n * @return {Buffer}\n */\nexports.importPublic = function (publicKey) {\n publicKey = exports.toBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1);\n }\n return publicKey;\n};\n\n/**\n * ECDSA sign\n * @method ecsign\n * @param {Buffer} msgHash\n * @param {Buffer} privateKey\n * @return {Object}\n */\nexports.ecsign = function (msgHash, privateKey) {\n var sig = secp256k1.sign(msgHash, privateKey);\n\n var ret = {};\n ret.r = sig.signature.slice(0, 32);\n ret.s = sig.signature.slice(32, 64);\n ret.v = sig.recovery + 27;\n return ret;\n};\n\n/**\n * ECDSA public key recovery from signature\n * @method ecrecover\n * @param {Buffer} msgHash\n * @param {Buffer} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {Buffer} publicKey\n */\nexports.ecrecover = function (msgHash, v, r, s) {\n var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64);\n var recovery = exports.bufferToInt(v) - 27;\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Invalid signature v value');\n }\n var senderPubKey = secp256k1.recover(msgHash, signature, recovery);\n return secp256k1.publicKeyConvert(senderPubKey, false).slice(1);\n};\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method\n * @method toRpcSig\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {String} sig\n */\nexports.toRpcSig = function (v, r, s) {\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053\n return exports.bufferToHex(Buffer.concat([r, s, exports.toBuffer(v - 27)]));\n};\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * @method fromRpcSig\n * @param {String} sig\n * @return {Object}\n */\nexports.fromRpcSig = function (sig) {\n sig = exports.toBuffer(sig);\n\n var v = sig[64];\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n\n return {\n v: v,\n r: sig.slice(0, 32),\n s: sig.slice(32, 64)\n };\n};\n\n/**\n * Returns the ethereum address of a given private key\n * @method privateToAddress\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(privateToPublic(privateKey));\n};\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too\n * @method isValidAddress\n * @param {String} address\n * @return {Boolean}\n */\nexports.isValidAddress = function (address) {\n return (/^0x[0-9a-fA-F]{40}$/i.test(address)\n );\n};\n\n/**\n * Returns a checksummed address\n * @method toChecksumAddress\n * @param {String} address\n * @return {String}\n */\nexports.toChecksumAddress = function (address) {\n address = exports.stripHexPrefix(address).toLowerCase();\n var hash = exports.sha3(address).toString('hex');\n var ret = '0x';\n\n for (var i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n } else {\n ret += address[i];\n }\n }\n\n return ret;\n};\n\n/**\n * Checks if the address is a valid checksummed address\n * @method isValidChecksumAddress\n * @param {Buffer} address\n * @return {Boolean}\n */\nexports.isValidChecksumAddress = function (address) {\n return exports.isValidAddress(address) && exports.toChecksumAddress(address) === address;\n};\n\n/**\n * Generates an address of a newly created contract\n * @method generateAddress\n * @param {Buffer} from the address which is creating this new address\n * @param {Buffer} nonce the nonce of the from account\n * @return {Buffer}\n */\nexports.generateAddress = function (from, nonce) {\n from = exports.toBuffer(from);\n nonce = new BN(nonce);\n\n if (nonce.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n nonce = null;\n } else {\n nonce = new Buffer(nonce.toArray());\n }\n\n // Only take the lower 160bits of the hash\n return exports.rlphash([from, nonce]).slice(-20);\n};\n\n/**\n * Returns true if the supplied address belongs to a precompiled account\n * @method isPrecompiled\n * @param {Buffer|String} address\n * @return {Boolean}\n */\nexports.isPrecompiled = function (address) {\n var a = exports.unpad(address);\n return a.length === 1 && a[0] > 0 && a[0] < 5;\n};\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with \"0x\"\n * @method isHexPrefixed\n * @param {String} str\n * @return {Boolean}\n */\nexports.isHexPrefixed = function (str) {\n return str.slice(0, 2) === '0x';\n};\n\n/**\n * Removes \"0x\" from a given `String`\n * @method stripHexPrefix\n * @param {String} str\n * @return {String}\n */\nexports.stripHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return exports.isHexPrefixed(str) ? str.slice(2) : str;\n};\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\"\n * @method addHexPrefix\n * @param {String} str\n * @return {String}\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return exports.isHexPrefixed(str) ? str : '0x' + str;\n};\n\n/**\n * Pads a `String` to have an even length\n * @method padToEven\n * @param {String} a\n * @return {String}\n */\nexports.padToEven = function (a) {\n if (a.length % 2) a = '0' + a;\n return a;\n};\n\n/**\n * Converts a `Buffer` or `Array` to JSON\n * @method BAToJSON\n * @param {Buffer|Array} ba\n * @return {Array|String|null}\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return '0x' + ba.toString('hex');\n } else if (ba instanceof Array) {\n var array = [];\n for (var i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @method defineProperties\n * @param {Object} self the `Object` to define properties on\n * @param {Array} fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param {*} data data to be validated against the definitions\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n\n // attach the `toJSON`\n self.toJSON = function (label) {\n if (label) {\n var obj = {};\n self._fields.forEach(function (field) {\n obj[field] = '0x' + self[field].toString('hex');\n });\n return obj;\n }\n return exports.baToJSON(this.raw);\n };\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n\n fields.forEach(function (field, i) {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = exports.toBuffer(v);\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = new Buffer([]);\n }\n\n if (field.allowLess && field.length) {\n v = exports.stripZeros(v);\n assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes');\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length);\n }\n\n self.raw[i] = v;\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n\n if (field.default) {\n self[field.name] = field.default;\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = new Buffer(exports.stripHexPrefix(data), 'hex');\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n\n // make sure all the items are buffers\n data.forEach(function (d, i) {\n self[self._fields[i]] = exports.toBuffer(d);\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n for (var prop in data) {\n if (self._fields.indexOf(prop) !== -1) {\n self[prop] = data[prop];\n }\n }\n } else {\n throw new Error('invalid data');\n }\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","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n 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.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","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VmErrorResult = exports.COOGResult = exports.OOGResult = void 0;\nvar debug_1 = require(\"debug\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar exceptions_1 = require(\"../exceptions\");\nvar precompiles_1 = require(\"./precompiles\");\nvar eei_1 = __importDefault(require(\"./eei\"));\nvar util_1 = require(\"./opcodes/util\");\nvar interpreter_1 = __importDefault(require(\"./interpreter\"));\nvar debug = debug_1.debug('vm:evm');\nvar debugGas = debug_1.debug('vm:evm:gas');\nfunction OOGResult(gasLimit) {\n return {\n returnValue: Buffer.alloc(0),\n gasUsed: gasLimit,\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.OUT_OF_GAS),\n };\n}\nexports.OOGResult = OOGResult;\n// CodeDeposit OOG Result\nfunction COOGResult(gasUsedCreateCode) {\n return {\n returnValue: Buffer.alloc(0),\n gasUsed: gasUsedCreateCode,\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.CODESTORE_OUT_OF_GAS),\n };\n}\nexports.COOGResult = COOGResult;\nfunction VmErrorResult(error, gasUsed) {\n return {\n returnValue: Buffer.alloc(0),\n gasUsed: gasUsed,\n exceptionError: error,\n };\n}\nexports.VmErrorResult = VmErrorResult;\n/**\n * EVM is responsible for executing an EVM message fully\n * (including any nested calls and creates), processing the results\n * and storing them to state (or discarding changes in case of exceptions).\n * @ignore\n */\nvar EVM = /** @class */ (function () {\n function EVM(vm, txContext, block) {\n this._vm = vm;\n this._state = this._vm.stateManager;\n this._tx = txContext;\n this._block = block;\n this._refund = new ethereumjs_util_1.BN(0);\n }\n /**\n * Executes an EVM message, determining whether it's a call or create\n * based on the `to` address. It checkpoints the state and reverts changes\n * if an exception happens during the message execution.\n */\n EVM.prototype.executeMessage = function (message) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _b, _c, result, err;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._vm._emit('beforeMessage', message)];\n case 1:\n _d.sent();\n if (!(!message.to && this._vm._common.isActivatedEIP(2929))) return [3 /*break*/, 3];\n message.code = message.data;\n _c = (_b = this._state).addWarmedAddress;\n return [4 /*yield*/, this._generateAddress(message)];\n case 2:\n _c.apply(_b, [(_d.sent()).buf]);\n _d.label = 3;\n case 3: return [4 /*yield*/, this._state.checkpoint()];\n case 4:\n _d.sent();\n debug('-'.repeat(100));\n debug(\"message checkpoint\");\n debug(\"New message caller=\" + message.caller.toString() + \" gasLimit=\" + message.gasLimit.toString() + \" to=\" + (message.to ? message.to.toString() : '') + \" value=\" + message.value.toString() + \" delegatecall=\" + (message.delegatecall ? 'yes' : 'no'));\n if (!message.to) return [3 /*break*/, 6];\n debug(\"Message CALL execution (to: \" + message.to.toString() + \")\");\n return [4 /*yield*/, this._executeCall(message)];\n case 5:\n result = _d.sent();\n return [3 /*break*/, 8];\n case 6:\n debug(\"Message CREATE execution (to undefined)\");\n return [4 /*yield*/, this._executeCreate(message)];\n case 7:\n result = _d.sent();\n _d.label = 8;\n case 8:\n debug(\"Received message results gasUsed=\" + result.gasUsed + \" execResult: [ gasUsed=\" + result.gasUsed + \" exceptionError=\" + (result.execResult.exceptionError ? result.execResult.exceptionError.toString() : '') + \" returnValue=\" + util_1.short(result.execResult.returnValue) + \" gasRefund=\" + ((_a = result.execResult.gasRefund) === null || _a === void 0 ? void 0 : _a.toString()) + \" ]\");\n // TODO: Move `gasRefund` to a tx-level result object\n // instead of `ExecResult`.\n result.execResult.gasRefund = this._refund.clone();\n err = result.execResult.exceptionError;\n if (!err) return [3 /*break*/, 13];\n if (!(this._vm._common.gteHardfork('homestead') || err.error != exceptions_1.ERROR.CODESTORE_OUT_OF_GAS)) return [3 /*break*/, 10];\n result.execResult.logs = [];\n return [4 /*yield*/, this._state.revert()];\n case 9:\n _d.sent();\n debug(\"message checkpoint reverted\");\n return [3 /*break*/, 12];\n case 10: \n // we are in chainstart and the error was the code deposit error\n // we do like nothing happened.\n return [4 /*yield*/, this._state.commit()];\n case 11:\n // we are in chainstart and the error was the code deposit error\n // we do like nothing happened.\n _d.sent();\n debug(\"message checkpoint committed\");\n _d.label = 12;\n case 12: return [3 /*break*/, 15];\n case 13: return [4 /*yield*/, this._state.commit()];\n case 14:\n _d.sent();\n debug(\"message checkpoint committed\");\n _d.label = 15;\n case 15: return [4 /*yield*/, this._vm._emit('afterMessage', result)];\n case 16:\n _d.sent();\n return [2 /*return*/, result];\n }\n });\n });\n };\n EVM.prototype._executeCall = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var account, toAccount, errorMessage, e_1, exit, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._state.getAccount(message.caller)\n // Reduce tx value from sender\n ];\n case 1:\n account = _a.sent();\n if (!!message.delegatecall) return [3 /*break*/, 3];\n return [4 /*yield*/, this._reduceSenderBalance(account, message)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [4 /*yield*/, this._state.getAccount(message.to)\n // Add tx value to the `to` account\n ];\n case 4:\n toAccount = _a.sent();\n if (!!message.delegatecall) return [3 /*break*/, 8];\n _a.label = 5;\n case 5:\n _a.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this._addToBalance(toAccount, message)];\n case 6:\n _a.sent();\n return [3 /*break*/, 8];\n case 7:\n e_1 = _a.sent();\n errorMessage = e_1;\n return [3 /*break*/, 8];\n case 8: \n // Load code\n return [4 /*yield*/, this._loadCode(message)];\n case 9:\n // Load code\n _a.sent();\n exit = false;\n if (!message.code || message.code.length === 0) {\n exit = true;\n debug(\"Exit early on no code\");\n }\n if (errorMessage) {\n exit = true;\n debug(\"Exit early on value tranfer overflowed\");\n }\n if (exit) {\n return [2 /*return*/, {\n gasUsed: new ethereumjs_util_1.BN(0),\n execResult: {\n gasUsed: new ethereumjs_util_1.BN(0),\n exceptionError: errorMessage,\n returnValue: Buffer.alloc(0),\n },\n }];\n }\n if (!message.isCompiled) return [3 /*break*/, 11];\n debug(\"Run precompile\");\n return [4 /*yield*/, this.runPrecompile(message.code, message.data, message.gasLimit)];\n case 10:\n result = _a.sent();\n return [3 /*break*/, 13];\n case 11:\n debug(\"Start bytecode processing...\");\n return [4 /*yield*/, this.runInterpreter(message)];\n case 12:\n result = _a.sent();\n _a.label = 13;\n case 13: return [2 /*return*/, {\n gasUsed: result.gasUsed,\n execResult: result,\n }];\n }\n });\n });\n };\n EVM.prototype._executeCreate = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var account, _a, toAccount, newContractEvent, errorMessage, e_2, exit, result, totalGas, returnFee, allowedCodeSize, CodestoreOOG, account_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._state.getAccount(message.caller)\n // Reduce tx value from sender\n ];\n case 1:\n account = _b.sent();\n // Reduce tx value from sender\n return [4 /*yield*/, this._reduceSenderBalance(account, message)];\n case 2:\n // Reduce tx value from sender\n _b.sent();\n message.code = message.data;\n message.data = Buffer.alloc(0);\n _a = message;\n return [4 /*yield*/, this._generateAddress(message)];\n case 3:\n _a.to = _b.sent();\n debug(\"Generated CREATE contract address \" + message.to.toString());\n return [4 /*yield*/, this._state.getAccount(message.to)\n // Check for collision\n ];\n case 4:\n toAccount = _b.sent();\n // Check for collision\n if ((toAccount.nonce && toAccount.nonce.gtn(0)) || !toAccount.codeHash.equals(ethereumjs_util_1.KECCAK256_NULL)) {\n debug(\"Returning on address collision\");\n return [2 /*return*/, {\n gasUsed: message.gasLimit,\n createdAddress: message.to,\n execResult: {\n returnValue: Buffer.alloc(0),\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.CREATE_COLLISION),\n gasUsed: message.gasLimit,\n },\n }];\n }\n return [4 /*yield*/, this._state.clearContractStorage(message.to)];\n case 5:\n _b.sent();\n newContractEvent = {\n address: message.to,\n code: message.code,\n };\n return [4 /*yield*/, this._vm._emit('newContract', newContractEvent)];\n case 6:\n _b.sent();\n return [4 /*yield*/, this._state.getAccount(message.to)\n // EIP-161 on account creation and CREATE execution\n ];\n case 7:\n toAccount = _b.sent();\n // EIP-161 on account creation and CREATE execution\n if (this._vm._common.gteHardfork('spuriousDragon')) {\n toAccount.nonce.iaddn(1);\n }\n _b.label = 8;\n case 8:\n _b.trys.push([8, 10, , 11]);\n return [4 /*yield*/, this._addToBalance(toAccount, message)];\n case 9:\n _b.sent();\n return [3 /*break*/, 11];\n case 10:\n e_2 = _b.sent();\n errorMessage = e_2;\n return [3 /*break*/, 11];\n case 11:\n exit = false;\n if (!message.code || message.code.length === 0) {\n exit = true;\n debug(\"Exit early on no code\");\n }\n if (errorMessage) {\n exit = true;\n debug(\"Exit early on value tranfer overflowed\");\n }\n if (exit) {\n return [2 /*return*/, {\n gasUsed: new ethereumjs_util_1.BN(0),\n createdAddress: message.to,\n execResult: {\n gasUsed: new ethereumjs_util_1.BN(0),\n exceptionError: errorMessage,\n returnValue: Buffer.alloc(0),\n },\n }];\n }\n debug(\"Start bytecode processing...\");\n return [4 /*yield*/, this.runInterpreter(message)\n // fee for size of the return value\n ];\n case 12:\n result = _b.sent();\n totalGas = result.gasUsed;\n returnFee = new ethereumjs_util_1.BN(0);\n if (!result.exceptionError) {\n returnFee = new ethereumjs_util_1.BN(result.returnValue.length).imuln(this._vm._common.param('gasPrices', 'createData'));\n totalGas = totalGas.add(returnFee);\n debugGas(\"Add return value size fee (\" + returnFee.toString() + \" to gas used (-> \" + totalGas.toString() + \"))\");\n }\n allowedCodeSize = true;\n if (this._vm._common.gteHardfork('spuriousDragon') &&\n result.returnValue.length > this._vm._common.param('vm', 'maxCodeSize')) {\n allowedCodeSize = false;\n }\n CodestoreOOG = false;\n if (totalGas.lte(message.gasLimit) &&\n (this._vm._allowUnlimitedContractSize || allowedCodeSize)) {\n result.gasUsed = totalGas;\n }\n else {\n if (this._vm._common.gteHardfork('homestead')) {\n debug(\"Not enough gas or code size not allowed (>= Homestead)\");\n result = __assign(__assign({}, result), OOGResult(message.gasLimit));\n }\n else {\n // we are in Frontier\n debug(\"Not enough gas or code size not allowed (Frontier)\");\n if (totalGas.sub(returnFee).lte(message.gasLimit)) {\n // we cannot pay the code deposit fee (but the deposit code actually did run)\n result = __assign(__assign({}, result), COOGResult(totalGas.sub(returnFee)));\n CodestoreOOG = true;\n }\n else {\n result = __assign(__assign({}, result), OOGResult(message.gasLimit));\n }\n }\n }\n if (!(!result.exceptionError && result.returnValue && result.returnValue.toString() !== '')) return [3 /*break*/, 14];\n return [4 /*yield*/, this._state.putContractCode(message.to, result.returnValue)];\n case 13:\n _b.sent();\n debug(\"Code saved on new contract creation\");\n return [3 /*break*/, 17];\n case 14:\n if (!CodestoreOOG) return [3 /*break*/, 17];\n if (!!this._vm._common.gteHardfork('homestead')) return [3 /*break*/, 17];\n return [4 /*yield*/, this._state.getAccount(message.to)];\n case 15:\n account_1 = _b.sent();\n return [4 /*yield*/, this._state.putAccount(message.to, account_1)];\n case 16:\n _b.sent();\n _b.label = 17;\n case 17: return [2 /*return*/, {\n gasUsed: result.gasUsed,\n createdAddress: message.to,\n execResult: result,\n }];\n }\n });\n });\n };\n /**\n * Starts the actual bytecode processing for a CALL or CREATE, providing\n * it with the [[EEI]].\n */\n EVM.prototype.runInterpreter = function (message, opts) {\n if (opts === void 0) { opts = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var env, _a, eei, oldRefund, interpreter, interpreterRes, result, gasUsed;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = {\n blockchain: this._vm.blockchain,\n address: message.to || ethereumjs_util_1.Address.zero(),\n caller: message.caller || ethereumjs_util_1.Address.zero(),\n callData: message.data || Buffer.from([0]),\n callValue: message.value || new ethereumjs_util_1.BN(0),\n code: message.code,\n isStatic: message.isStatic || false,\n depth: message.depth || 0,\n gasPrice: this._tx.gasPrice,\n origin: this._tx.origin || message.caller || ethereumjs_util_1.Address.zero(),\n block: this._block || new block_1.Block()\n };\n return [4 /*yield*/, this._state.getAccount(message.to || ethereumjs_util_1.Address.zero())];\n case 1:\n env = (_a.contract = _b.sent(),\n _a.codeAddress = message.codeAddress,\n _a);\n eei = new eei_1.default(env, this._state, this, this._vm._common, message.gasLimit.clone());\n if (message.selfdestruct) {\n eei._result.selfdestruct = message.selfdestruct;\n }\n oldRefund = this._refund.clone();\n interpreter = new interpreter_1.default(this._vm, eei);\n return [4 /*yield*/, interpreter.run(message.code, opts)];\n case 2:\n interpreterRes = _b.sent();\n result = eei._result;\n gasUsed = message.gasLimit.sub(eei._gasLeft);\n if (interpreterRes.exceptionError) {\n if (interpreterRes.exceptionError.error !== exceptions_1.ERROR.REVERT) {\n gasUsed = message.gasLimit;\n }\n // Clear the result on error\n result = __assign(__assign({}, result), { logs: [], selfdestruct: {} });\n // Revert gas refund if message failed\n this._refund = oldRefund;\n }\n return [2 /*return*/, __assign(__assign({}, result), { runState: __assign(__assign(__assign({}, interpreterRes.runState), result), eei._env), exceptionError: interpreterRes.exceptionError, gas: eei._gasLeft, gasUsed: gasUsed, returnValue: result.returnValue ? result.returnValue : Buffer.alloc(0) })];\n }\n });\n });\n };\n /**\n * Returns code for precompile at the given address, or undefined\n * if no such precompile exists.\n */\n EVM.prototype.getPrecompile = function (address) {\n return precompiles_1.getPrecompile(address, this._vm._common);\n };\n /**\n * Executes a precompiled contract with given data and gas limit.\n */\n EVM.prototype.runPrecompile = function (code, data, gasLimit) {\n if (typeof code !== 'function') {\n throw new Error('Invalid precompile');\n }\n var opts = {\n data: data,\n gasLimit: gasLimit,\n _common: this._vm._common,\n _VM: this._vm,\n };\n return code(opts);\n };\n EVM.prototype._loadCode = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var precompile, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!!message.code) return [3 /*break*/, 3];\n precompile = this.getPrecompile(message.codeAddress);\n if (!precompile) return [3 /*break*/, 1];\n message.code = precompile;\n message.isCompiled = true;\n return [3 /*break*/, 3];\n case 1:\n _a = message;\n return [4 /*yield*/, this._state.getContractCode(message.codeAddress)];\n case 2:\n _a.code = _b.sent();\n message.isCompiled = false;\n _b.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n EVM.prototype._generateAddress = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var addr, acc, newNonce;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!message.salt) return [3 /*break*/, 1];\n addr = ethereumjs_util_1.generateAddress2(message.caller.buf, message.salt, message.code);\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this._state.getAccount(message.caller)];\n case 2:\n acc = _a.sent();\n newNonce = acc.nonce.subn(1);\n addr = ethereumjs_util_1.generateAddress(message.caller.buf, newNonce.toArrayLike(Buffer));\n _a.label = 3;\n case 3: return [2 /*return*/, new ethereumjs_util_1.Address(addr)];\n }\n });\n });\n };\n EVM.prototype._reduceSenderBalance = function (account, message) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n account.balance.isub(message.value);\n result = this._state.putAccount(message.caller, account);\n debug(\"Reduced sender (\" + message.caller.toString() + \") balance (-> \" + account.balance.toString() + \")\");\n return [2 /*return*/, result];\n });\n });\n };\n EVM.prototype._addToBalance = function (toAccount, message) {\n return __awaiter(this, void 0, void 0, function () {\n var newBalance, result;\n return __generator(this, function (_a) {\n newBalance = toAccount.balance.add(message.value);\n if (newBalance.gt(ethereumjs_util_1.MAX_INTEGER)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.VALUE_OVERFLOW);\n }\n toAccount.balance = newBalance;\n result = this._state.putAccount(message.to, toAccount);\n debug(\"Added toAccount (\" + message.to.toString() + \") balance (-> \" + toAccount.balance.toString() + \")\");\n return [2 /*return*/, result];\n });\n });\n };\n EVM.prototype._touchAccount = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._state.getAccount(address)];\n case 1:\n account = _a.sent();\n return [2 /*return*/, this._state.putAccount(address, account)];\n }\n });\n });\n };\n return EVM;\n}());\nexports.default = EVM;\n//# sourceMappingURL=evm.js.map","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar isHexPrefixed = require('is-hex-prefixed');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Pads a `String` to have an even length\n * @param {String} value\n * @return {String} output\n */\nfunction padToEven(value) {\n var a = value; // eslint-disable-line\n\n if (typeof a !== 'string') {\n throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');\n }\n\n if (a.length % 2) {\n a = '0' + a;\n }\n\n return a;\n}\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nfunction intToHex(i) {\n var hex = i.toString(16); // eslint-disable-line\n\n return '0x' + hex;\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nfunction intToBuffer(i) {\n var hex = intToHex(i);\n\n return new Buffer(padToEven(hex.slice(2)), 'hex');\n}\n\n/**\n * Get the binary size of a string\n * @param {String} str\n * @return {Number}\n */\nfunction getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \\'str\\' to be type String, got \\'' + typeof str + '\\'.');\n }\n\n return Buffer.byteLength(str, 'utf8');\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'superset\\' to be an array got type \\'' + typeof superset + '\\'');\n }\n if (Array.isArray(subset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'subset\\' to be an array got type \\'' + typeof subset + '\\'');\n }\n\n return subset[Boolean(some) && 'some' || 'every'](function (value) {\n return superset.indexOf(value) >= 0;\n });\n}\n\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method toUtf8\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toUtf8(hex) {\n var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');\n\n return bufferValue.toString('utf8');\n}\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method toAscii\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toAscii(hex) {\n var str = ''; // eslint-disable-line\n var i = 0,\n l = hex.length; // eslint-disable-line\n\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method fromUtf8\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromUtf8(stringValue) {\n var str = new Buffer(stringValue, 'utf8');\n\n return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method fromAscii\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromAscii(stringValue) {\n var hex = ''; // eslint-disable-line\n for (var i = 0; i < stringValue.length; i++) {\n // eslint-disable-line\n var code = stringValue.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return '0x' + hex;\n}\n\n/**\n * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n *\n * @method getKeys get specific key from inner object array of objects\n * @param {String} params\n * @param {String} key\n * @param {Boolean} allowEmpty\n * @returns {Array} output just a simple array of output keys\n */\nfunction getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error('[ethjs-util] method getKeys expecting type Array as \\'params\\' input, got \\'' + typeof params + '\\'');\n }\n if (typeof key !== 'string') {\n throw new Error('[ethjs-util] method getKeys expecting type String for input \\'key\\' got \\'' + typeof key + '\\'.');\n }\n\n var result = []; // eslint-disable-line\n\n for (var i = 0; i < params.length; i++) {\n // eslint-disable-line\n var value = params[i][key]; // eslint-disable-line\n if (allowEmpty && !value) {\n value = '';\n } else if (typeof value !== 'string') {\n throw new Error('invalid abi');\n }\n result.push(value);\n }\n\n return result;\n}\n\n/**\n * Is the string a hex string.\n *\n * @method check if string is hex string of specific length\n * @param {String} value\n * @param {Number} length\n * @returns {Boolean} output the string is a hex string\n */\nfunction isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n arrayContainsArray: arrayContainsArray,\n intToBuffer: intToBuffer,\n getBinarySize: getBinarySize,\n isHexPrefixed: isHexPrefixed,\n stripHexPrefix: stripHexPrefix,\n padToEven: padToEven,\n intToHex: intToHex,\n fromAscii: fromAscii,\n fromUtf8: fromUtf8,\n toAscii: toAscii,\n toUtf8: toUtf8,\n getKeys: getKeys,\n isHexString: isHexString\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLength = exports.decode = exports.encode = void 0;\nvar BN = require(\"bn.js\");\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 **/\nfunction encode(input) {\n if (Array.isArray(input)) {\n var output = [];\n for (var i = 0; i < input.length; i++) {\n output.push(encode(input[i]));\n }\n var buf = Buffer.concat(output);\n return Buffer.concat([encodeLength(buf.length, 192), buf]);\n }\n else {\n var inputBuf = toBuffer(input);\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf]);\n }\n}\nexports.encode = encode;\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, base) {\n if (v.slice(0, 2) === '00') {\n throw new Error('invalid RLP: extra zeros');\n }\n return parseInt(v, base);\n}\nfunction encodeLength(len, offset) {\n if (len < 56) {\n return Buffer.from([len + offset]);\n }\n else {\n var hexLength = intToHex(len);\n var lLength = hexLength.length / 2;\n var firstByte = intToHex(offset + 55 + lLength);\n return Buffer.from(firstByte + hexLength, 'hex');\n }\n}\nfunction decode(input, stream) {\n if (stream === void 0) { stream = false; }\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var decoded = _decode(inputBuffer);\n if (stream) {\n return decoded;\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder');\n }\n return decoded.data;\n}\nexports.decode = decode;\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 */\nfunction getLength(input) {\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var firstByte = inputBuffer[0];\n if (firstByte <= 0x7f) {\n return inputBuffer.length;\n }\n else if (firstByte <= 0xb7) {\n return firstByte - 0x7f;\n }\n else if (firstByte <= 0xbf) {\n return firstByte - 0xb6;\n }\n else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf;\n }\n else {\n // a list over 55 bytes long\n var llength = firstByte - 0xf6;\n var length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16);\n return llength + length;\n }\n}\nexports.getLength = getLength;\n/** Decode an input with RLP */\nfunction _decode(input) {\n var length, llength, data, innerRemainder, d;\n var decoded = [];\n var firstByte = input[0];\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 }\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 // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([]);\n }\n else {\n data = input.slice(1, length);\n }\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80');\n }\n return {\n data: data,\n remainder: input.slice(length),\n };\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 return {\n data: data,\n remainder: input.slice(length + llength),\n };\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);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(length),\n };\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 var totalLength = llength + length;\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data');\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 while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n };\n }\n}\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str) {\n return str.slice(0, 2) === '0x';\n}\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer) {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!');\n }\n var hex = integer.toString(16);\n return hex.length % 2 ? \"0\" + hex : hex;\n}\n/** Pad a string to be even */\nfunction padToEven(a) {\n return a.length % 2 ? \"0\" + a : a;\n}\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer) {\n var hex = intToHex(integer);\n return Buffer.from(hex, 'hex');\n}\n/** Transform anything into a Buffer */\nfunction toBuffer(v) {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex');\n }\n else {\n return Buffer.from(v);\n }\n }\n else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([]);\n }\n else {\n return intToBuffer(v);\n }\n }\n else if (v === null || v === undefined) {\n return Buffer.from([]);\n }\n else if (v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n else {\n throw new Error('invalid type');\n }\n }\n return v;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*!\n * @ganache/ethereum-utils\n *\n * @copyright Truffle Blockchain Group\n * @author David Murdoch (https://davidmurdoch.com)\n * @license MIT\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src\"), exports);\n//# sourceMappingURL=index.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\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","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","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./bigint-to-buffer\"), exports);\n__exportStar(require(\"./buffer-to-bigint\"), exports);\n__exportStar(require(\"./executor\"), exports);\n__exportStar(require(\"./heap\"), exports);\n__exportStar(require(\"./request-coordinator\"), exports);\n__exportStar(require(\"./unref\"), exports);\n__exportStar(require(\"./has-own\"), exports);\n__exportStar(require(\"./uint-to-buffer\"), exports);\n__exportStar(require(\"./constants\"), exports);\n__exportStar(require(\"./buffer-to-key\"), exports);\n__exportStar(require(\"./keccak\"), exports);\n__exportStar(require(\"./find-insert-position\"), exports);\n__exportStar(require(\"./random-number-generator\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./errors/coded-error\"), exports);\n__exportStar(require(\"./errors/errors\"), exports);\n__exportStar(require(\"./errors/runtime-error\"), exports);\n__exportStar(require(\"./errors/abort-error\"), exports);\n__exportStar(require(\"./things/account\"), exports);\n__exportStar(require(\"./things/blocklogs\"), exports);\n__exportStar(require(\"./things/tags\"), exports);\n__exportStar(require(\"./things/trace-data\"), exports);\n__exportStar(require(\"./things/trace-storage-map\"), exports);\n__exportStar(require(\"./types/extract-values-from-types\"), exports);\n__exportStar(require(\"./types/filters\"), exports);\n__exportStar(require(\"./types/shh\"), exports);\n__exportStar(require(\"./types/step-event\"), exports);\n__exportStar(require(\"./types/subscriptions\"), exports);\n__exportStar(require(\"./types/tuple-from-union\"), exports);\n__exportStar(require(\"./types/debug-storage\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*!\n * @ganache/ethereum-transaction\n *\n * @copyright Truffle Blockchain Group\n * @author David Murdoch\n * @license MIT\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/base-transaction\"), exports);\n__exportStar(require(\"./src/block-transaction\"), exports);\n__exportStar(require(\"./src/fake-transaction\"), exports);\n__exportStar(require(\"./src/frozen-transaction\"), exports);\n__exportStar(require(\"./src/hardfork\"), exports);\n__exportStar(require(\"./src/params\"), exports);\n__exportStar(require(\"./src/raw\"), exports);\n__exportStar(require(\"./src/rpc-transaction\"), exports);\n__exportStar(require(\"./src/runtime-transaction\"), exports);\n__exportStar(require(\"./src/transaction-receipt\"), exports);\n__exportStar(require(\"./src/vm-transaction\"), exports);\n//# sourceMappingURL=index.js.map","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\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 ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VmError = exports.ERROR = void 0;\nvar ERROR;\n(function (ERROR) {\n ERROR[\"OUT_OF_GAS\"] = \"out of gas\";\n ERROR[\"CODESTORE_OUT_OF_GAS\"] = \"code store out of gas\";\n ERROR[\"STACK_UNDERFLOW\"] = \"stack underflow\";\n ERROR[\"STACK_OVERFLOW\"] = \"stack overflow\";\n ERROR[\"INVALID_JUMP\"] = \"invalid JUMP\";\n ERROR[\"INVALID_OPCODE\"] = \"invalid opcode\";\n ERROR[\"OUT_OF_RANGE\"] = \"value out of range\";\n ERROR[\"REVERT\"] = \"revert\";\n ERROR[\"STATIC_STATE_CHANGE\"] = \"static state change\";\n ERROR[\"INTERNAL_ERROR\"] = \"internal error\";\n ERROR[\"CREATE_COLLISION\"] = \"create collision\";\n ERROR[\"STOP\"] = \"stop\";\n ERROR[\"REFUND_EXHAUSTED\"] = \"refund exhausted\";\n ERROR[\"VALUE_OVERFLOW\"] = \"value overflow\";\n ERROR[\"INVALID_BEGINSUB\"] = \"invalid BEGINSUB\";\n ERROR[\"INVALID_RETURNSUB\"] = \"invalid RETURNSUB\";\n ERROR[\"INVALID_JUMPSUB\"] = \"invalid JUMPSUB\";\n // BLS errors\n ERROR[\"BLS_12_381_INVALID_INPUT_LENGTH\"] = \"invalid input length\";\n ERROR[\"BLS_12_381_POINT_NOT_ON_CURVE\"] = \"point not on curve\";\n ERROR[\"BLS_12_381_INPUT_EMPTY\"] = \"input is empty\";\n ERROR[\"BLS_12_381_FP_NOT_IN_FIELD\"] = \"fp point not in field\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nclass VmError {\n constructor(error) {\n this.error = error;\n this.errorType = 'VmError';\n }\n}\nexports.VmError = VmError;\n//# sourceMappingURL=exceptions.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VmErrorResult = exports.COOGResult = exports.OOGResult = void 0;\nconst debug_1 = require(\"debug\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst block_1 = require(\"@ethereumjs/block\");\nconst exceptions_1 = require(\"../exceptions\");\nconst precompiles_1 = require(\"./precompiles\");\nconst eei_1 = __importDefault(require(\"./eei\"));\nconst util_1 = require(\"./opcodes/util\");\nconst interpreter_1 = __importDefault(require(\"./interpreter\"));\nconst debug = debug_1.debug('vm:evm');\nconst debugGas = debug_1.debug('vm:evm:gas');\nfunction OOGResult(gasLimit) {\n return {\n returnValue: Buffer.alloc(0),\n gasUsed: gasLimit,\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.OUT_OF_GAS),\n };\n}\nexports.OOGResult = OOGResult;\n// CodeDeposit OOG Result\nfunction COOGResult(gasUsedCreateCode) {\n return {\n returnValue: Buffer.alloc(0),\n gasUsed: gasUsedCreateCode,\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.CODESTORE_OUT_OF_GAS),\n };\n}\nexports.COOGResult = COOGResult;\nfunction VmErrorResult(error, gasUsed) {\n return {\n returnValue: Buffer.alloc(0),\n gasUsed: gasUsed,\n exceptionError: error,\n };\n}\nexports.VmErrorResult = VmErrorResult;\n/**\n * EVM is responsible for executing an EVM message fully\n * (including any nested calls and creates), processing the results\n * and storing them to state (or discarding changes in case of exceptions).\n * @ignore\n */\nclass EVM {\n constructor(vm, txContext, block) {\n this._vm = vm;\n this._state = this._vm.stateManager;\n this._tx = txContext;\n this._block = block;\n this._refund = new ethereumjs_util_1.BN(0);\n }\n /**\n * Executes an EVM message, determining whether it's a call or create\n * based on the `to` address. It checkpoints the state and reverts changes\n * if an exception happens during the message execution.\n */\n async executeMessage(message) {\n var _a;\n await this._vm._emit('beforeMessage', message);\n if (!message.to && this._vm._common.isActivatedEIP(2929)) {\n message.code = message.data;\n this._state.addWarmedAddress((await this._generateAddress(message)).buf);\n }\n await this._state.checkpoint();\n debug('-'.repeat(100));\n debug(`message checkpoint`);\n let result;\n debug(`New message caller=${message.caller.toString()} gasLimit=${message.gasLimit.toString()} to=${message.to ? message.to.toString() : ''} value=${message.value.toString()} delegatecall=${message.delegatecall ? 'yes' : 'no'}`);\n if (message.to) {\n debug(`Message CALL execution (to: ${message.to.toString()})`);\n result = await this._executeCall(message);\n }\n else {\n debug(`Message CREATE execution (to undefined)`);\n result = await this._executeCreate(message);\n }\n debug(`Received message results gasUsed=${result.gasUsed} execResult: [ gasUsed=${result.gasUsed} exceptionError=${result.execResult.exceptionError ? result.execResult.exceptionError.toString() : ''} returnValue=${util_1.short(result.execResult.returnValue)} gasRefund=${(_a = result.execResult.gasRefund) === null || _a === void 0 ? void 0 : _a.toString()} ]`);\n // TODO: Move `gasRefund` to a tx-level result object\n // instead of `ExecResult`.\n result.execResult.gasRefund = this._refund.clone();\n const err = result.execResult.exceptionError;\n if (err) {\n if (this._vm._common.gteHardfork('homestead') || err.error != exceptions_1.ERROR.CODESTORE_OUT_OF_GAS) {\n result.execResult.logs = [];\n await this._state.revert();\n debug(`message checkpoint reverted`);\n }\n else {\n // we are in chainstart and the error was the code deposit error\n // we do like nothing happened.\n await this._state.commit();\n debug(`message checkpoint committed`);\n }\n }\n else {\n await this._state.commit();\n debug(`message checkpoint committed`);\n }\n await this._vm._emit('afterMessage', result);\n return result;\n }\n async _executeCall(message) {\n const account = await this._state.getAccount(message.caller);\n // Reduce tx value from sender\n if (!message.delegatecall) {\n await this._reduceSenderBalance(account, message);\n }\n // Load `to` account\n const toAccount = await this._state.getAccount(message.to);\n // Add tx value to the `to` account\n let errorMessage;\n if (!message.delegatecall) {\n try {\n await this._addToBalance(toAccount, message);\n }\n catch (e) {\n errorMessage = e;\n }\n }\n // Load code\n await this._loadCode(message);\n let exit = false;\n if (!message.code || message.code.length === 0) {\n exit = true;\n debug(`Exit early on no code`);\n }\n if (errorMessage) {\n exit = true;\n debug(`Exit early on value tranfer overflowed`);\n }\n if (exit) {\n return {\n gasUsed: new ethereumjs_util_1.BN(0),\n execResult: {\n gasUsed: new ethereumjs_util_1.BN(0),\n exceptionError: errorMessage,\n returnValue: Buffer.alloc(0),\n },\n };\n }\n let result;\n if (message.isCompiled) {\n debug(`Run precompile`);\n result = await this.runPrecompile(message.code, message.data, message.gasLimit);\n }\n else {\n debug(`Start bytecode processing...`);\n result = await this.runInterpreter(message);\n }\n return {\n gasUsed: result.gasUsed,\n execResult: result,\n };\n }\n async _executeCreate(message) {\n const account = await this._state.getAccount(message.caller);\n // Reduce tx value from sender\n await this._reduceSenderBalance(account, message);\n message.code = message.data;\n message.data = Buffer.alloc(0);\n message.to = await this._generateAddress(message);\n debug(`Generated CREATE contract address ${message.to.toString()}`);\n let toAccount = await this._state.getAccount(message.to);\n // Check for collision\n if ((toAccount.nonce && toAccount.nonce.gtn(0)) || !toAccount.codeHash.equals(ethereumjs_util_1.KECCAK256_NULL)) {\n debug(`Returning on address collision`);\n return {\n gasUsed: message.gasLimit,\n createdAddress: message.to,\n execResult: {\n returnValue: Buffer.alloc(0),\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.CREATE_COLLISION),\n gasUsed: message.gasLimit,\n },\n };\n }\n await this._state.clearContractStorage(message.to);\n const newContractEvent = {\n address: message.to,\n code: message.code,\n };\n await this._vm._emit('newContract', newContractEvent);\n toAccount = await this._state.getAccount(message.to);\n // EIP-161 on account creation and CREATE execution\n if (this._vm._common.gteHardfork('spuriousDragon')) {\n toAccount.nonce.iaddn(1);\n }\n // Add tx value to the `to` account\n let errorMessage;\n try {\n await this._addToBalance(toAccount, message);\n }\n catch (e) {\n errorMessage = e;\n }\n let exit = false;\n if (!message.code || message.code.length === 0) {\n exit = true;\n debug(`Exit early on no code`);\n }\n if (errorMessage) {\n exit = true;\n debug(`Exit early on value tranfer overflowed`);\n }\n if (exit) {\n return {\n gasUsed: new ethereumjs_util_1.BN(0),\n createdAddress: message.to,\n execResult: {\n gasUsed: new ethereumjs_util_1.BN(0),\n exceptionError: errorMessage,\n returnValue: Buffer.alloc(0),\n },\n };\n }\n debug(`Start bytecode processing...`);\n let result = await this.runInterpreter(message);\n // fee for size of the return value\n let totalGas = result.gasUsed;\n let returnFee = new ethereumjs_util_1.BN(0);\n if (!result.exceptionError) {\n returnFee = new ethereumjs_util_1.BN(result.returnValue.length).imuln(this._vm._common.param('gasPrices', 'createData'));\n totalGas = totalGas.add(returnFee);\n debugGas(`Add return value size fee (${returnFee.toString()} to gas used (-> ${totalGas.toString()}))`);\n }\n // Check for SpuriousDragon EIP-170 code size limit\n let allowedCodeSize = true;\n if (this._vm._common.gteHardfork('spuriousDragon') &&\n result.returnValue.length > this._vm._common.param('vm', 'maxCodeSize')) {\n allowedCodeSize = false;\n }\n // If enough gas and allowed code size\n let CodestoreOOG = false;\n if (totalGas.lte(message.gasLimit) &&\n (this._vm._allowUnlimitedContractSize || allowedCodeSize)) {\n result.gasUsed = totalGas;\n }\n else {\n if (this._vm._common.gteHardfork('homestead')) {\n debug(`Not enough gas or code size not allowed (>= Homestead)`);\n result = Object.assign(Object.assign({}, result), OOGResult(message.gasLimit));\n }\n else {\n // we are in Frontier\n debug(`Not enough gas or code size not allowed (Frontier)`);\n if (totalGas.sub(returnFee).lte(message.gasLimit)) {\n // we cannot pay the code deposit fee (but the deposit code actually did run)\n result = Object.assign(Object.assign({}, result), COOGResult(totalGas.sub(returnFee)));\n CodestoreOOG = true;\n }\n else {\n result = Object.assign(Object.assign({}, result), OOGResult(message.gasLimit));\n }\n }\n }\n // Save code if a new contract was created\n if (!result.exceptionError && result.returnValue && result.returnValue.toString() !== '') {\n await this._state.putContractCode(message.to, result.returnValue);\n debug(`Code saved on new contract creation`);\n }\n else if (CodestoreOOG) {\n // This only happens at Frontier. But, let's do a sanity check;\n if (!this._vm._common.gteHardfork('homestead')) {\n // Pre-Homestead behavior; put an empty contract.\n // This contract would be considered \"DEAD\" in later hard forks.\n // It is thus an unecessary default item, which we have to save to dik\n // It does change the state root, but it only wastes storage.\n //await this._state.putContractCode(message.to, result.returnValue)\n const account = await this._state.getAccount(message.to);\n await this._state.putAccount(message.to, account);\n }\n }\n return {\n gasUsed: result.gasUsed,\n createdAddress: message.to,\n execResult: result,\n };\n }\n /**\n * Starts the actual bytecode processing for a CALL or CREATE, providing\n * it with the [[EEI]].\n */\n async runInterpreter(message, opts = {}) {\n const env = {\n blockchain: this._vm.blockchain,\n address: message.to || ethereumjs_util_1.Address.zero(),\n caller: message.caller || ethereumjs_util_1.Address.zero(),\n callData: message.data || Buffer.from([0]),\n callValue: message.value || new ethereumjs_util_1.BN(0),\n code: message.code,\n isStatic: message.isStatic || false,\n depth: message.depth || 0,\n gasPrice: this._tx.gasPrice,\n origin: this._tx.origin || message.caller || ethereumjs_util_1.Address.zero(),\n block: this._block || new block_1.Block(),\n contract: await this._state.getAccount(message.to || ethereumjs_util_1.Address.zero()),\n codeAddress: message.codeAddress,\n };\n const eei = new eei_1.default(env, this._state, this, this._vm._common, message.gasLimit.clone());\n if (message.selfdestruct) {\n eei._result.selfdestruct = message.selfdestruct;\n }\n const oldRefund = this._refund.clone();\n const interpreter = new interpreter_1.default(this._vm, eei);\n const interpreterRes = await interpreter.run(message.code, opts);\n let result = eei._result;\n let gasUsed = message.gasLimit.sub(eei._gasLeft);\n if (interpreterRes.exceptionError) {\n if (interpreterRes.exceptionError.error !== exceptions_1.ERROR.REVERT) {\n gasUsed = message.gasLimit;\n }\n // Clear the result on error\n result = Object.assign(Object.assign({}, result), { logs: [], selfdestruct: {} });\n // Revert gas refund if message failed\n this._refund = oldRefund;\n }\n return Object.assign(Object.assign({}, result), { runState: Object.assign(Object.assign(Object.assign({}, interpreterRes.runState), result), eei._env), exceptionError: interpreterRes.exceptionError, gas: eei._gasLeft, gasUsed, returnValue: result.returnValue ? result.returnValue : Buffer.alloc(0) });\n }\n /**\n * Returns code for precompile at the given address, or undefined\n * if no such precompile exists.\n */\n getPrecompile(address) {\n return precompiles_1.getPrecompile(address, this._vm._common);\n }\n /**\n * Executes a precompiled contract with given data and gas limit.\n */\n runPrecompile(code, data, gasLimit) {\n if (typeof code !== 'function') {\n throw new Error('Invalid precompile');\n }\n const opts = {\n data,\n gasLimit,\n _common: this._vm._common,\n _VM: this._vm,\n };\n return code(opts);\n }\n async _loadCode(message) {\n if (!message.code) {\n const precompile = this.getPrecompile(message.codeAddress);\n if (precompile) {\n message.code = precompile;\n message.isCompiled = true;\n }\n else {\n message.code = await this._state.getContractCode(message.codeAddress);\n message.isCompiled = false;\n }\n }\n }\n async _generateAddress(message) {\n let addr;\n if (message.salt) {\n addr = ethereumjs_util_1.generateAddress2(message.caller.buf, message.salt, message.code);\n }\n else {\n const acc = await this._state.getAccount(message.caller);\n const newNonce = acc.nonce.subn(1);\n addr = ethereumjs_util_1.generateAddress(message.caller.buf, newNonce.toArrayLike(Buffer));\n }\n return new ethereumjs_util_1.Address(addr);\n }\n async _reduceSenderBalance(account, message) {\n account.balance.isub(message.value);\n const result = this._state.putAccount(message.caller, account);\n debug(`Reduced sender (${message.caller.toString()}) balance (-> ${account.balance.toString()})`);\n return result;\n }\n async _addToBalance(toAccount, message) {\n const newBalance = toAccount.balance.add(message.value);\n if (newBalance.gt(ethereumjs_util_1.MAX_INTEGER)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.VALUE_OVERFLOW);\n }\n toAccount.balance = newBalance;\n // putAccount as the nonce may have changed for contract creation\n const result = this._state.putAccount(message.to, toAccount);\n debug(`Added toAccount (${message.to.toString()}) balance (-> ${toAccount.balance.toString()})`);\n return result;\n }\n async _touchAccount(address) {\n const account = await this._state.getAccount(address);\n return this._state.putAccount(address, account);\n }\n}\nexports.default = EVM;\n//# sourceMappingURL=evm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VmError = exports.ERROR = void 0;\nvar ERROR;\n(function (ERROR) {\n ERROR[\"OUT_OF_GAS\"] = \"out of gas\";\n ERROR[\"CODESTORE_OUT_OF_GAS\"] = \"code store out of gas\";\n ERROR[\"STACK_UNDERFLOW\"] = \"stack underflow\";\n ERROR[\"STACK_OVERFLOW\"] = \"stack overflow\";\n ERROR[\"INVALID_JUMP\"] = \"invalid JUMP\";\n ERROR[\"INVALID_OPCODE\"] = \"invalid opcode\";\n ERROR[\"OUT_OF_RANGE\"] = \"value out of range\";\n ERROR[\"REVERT\"] = \"revert\";\n ERROR[\"STATIC_STATE_CHANGE\"] = \"static state change\";\n ERROR[\"INTERNAL_ERROR\"] = \"internal error\";\n ERROR[\"CREATE_COLLISION\"] = \"create collision\";\n ERROR[\"STOP\"] = \"stop\";\n ERROR[\"REFUND_EXHAUSTED\"] = \"refund exhausted\";\n ERROR[\"VALUE_OVERFLOW\"] = \"value overflow\";\n ERROR[\"INVALID_BEGINSUB\"] = \"invalid BEGINSUB\";\n ERROR[\"INVALID_RETURNSUB\"] = \"invalid RETURNSUB\";\n ERROR[\"INVALID_JUMPSUB\"] = \"invalid JUMPSUB\";\n // BLS errors\n ERROR[\"BLS_12_381_INVALID_INPUT_LENGTH\"] = \"invalid input length\";\n ERROR[\"BLS_12_381_POINT_NOT_ON_CURVE\"] = \"point not on curve\";\n ERROR[\"BLS_12_381_INPUT_EMPTY\"] = \"input is empty\";\n ERROR[\"BLS_12_381_FP_NOT_IN_FIELD\"] = \"fp point not in field\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar VmError = /** @class */ (function () {\n function VmError(error) {\n this.error = error;\n this.errorType = 'VmError';\n }\n return VmError;\n}());\nexports.VmError = VmError;\n//# sourceMappingURL=exceptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseJsonRpcType = exports.toBuffers = exports.toStrings = exports.bufCache = exports.strCache = void 0;\nconst utils_1 = require(\"../../utils\");\nconst utils_2 = require(\"../../utils\");\nconst constants_1 = require(\"../../utils/constants\");\nexports.strCache = new WeakMap();\nexports.bufCache = new WeakMap();\nexports.toStrings = new WeakMap();\nexports.toBuffers = new WeakMap();\nconst inspect = Symbol.for(\"nodejs.util.inspect.custom\");\nclass BaseJsonRpcType {\n constructor(value) {\n const self = this;\n if (Buffer.isBuffer(value)) {\n exports.toStrings.set(this, () => value.toString(\"hex\"));\n exports.bufCache.set(this, value);\n self[Symbol.toStringTag] = \"Buffer\";\n }\n else {\n const type = typeof value;\n switch (type) {\n case \"number\":\n if (value % 1 !== 0) {\n throw new Error(\"`Cannot wrap a decimal value as a json-rpc type`\");\n }\n exports.toStrings.set(this, () => value.toString(16));\n exports.toBuffers.set(this, () => value === 0 ? constants_1.BUFFER_EMPTY : utils_2.uintToBuffer(value));\n break;\n case \"bigint\":\n exports.toStrings.set(this, () => value.toString(16));\n exports.toBuffers.set(this, () => value === 0n ? constants_1.BUFFER_EMPTY : utils_1.bigIntToBuffer(value));\n break;\n case \"string\": {\n // handle hex-encoded string\n if (value.indexOf(\"0x\") === 0) {\n exports.strCache.set(this, value.toLowerCase());\n exports.toBuffers.set(this, () => {\n let fixedValue = value.slice(2);\n if (fixedValue.length % 2 === 1) {\n fixedValue = \"0\" + fixedValue;\n }\n return Buffer.from(fixedValue, \"hex\");\n });\n }\n else {\n throw new Error(`cannot convert string value \"${value}\" into type \\`${this.constructor.name}\\`; strings must be hex-encoded and prefixed with \"0x\".`);\n }\n break;\n }\n default:\n // handle undefined/null\n if (value == null) {\n // This is a weird thing that returns undefined/null for a call\n // to toString().\n this.toString = () => value;\n exports.bufCache.set(this, constants_1.BUFFER_EMPTY);\n break;\n }\n throw new Error(`Cannot wrap a \"${type}\" as a json-rpc type`);\n }\n self[Symbol.toStringTag] = type;\n }\n this.value = value;\n }\n // used to make console.log debugging a little easier\n [inspect](_depth, _options) {\n return this.value;\n }\n toString() {\n let str = exports.strCache.get(this);\n if (str === void 0) {\n str = \"0x\" + exports.toStrings.get(this)();\n exports.strCache.set(this, str);\n }\n return str;\n }\n toBuffer() {\n let buf = exports.bufCache.get(this);\n if (buf === void 0) {\n buf = exports.toBuffers.get(this)();\n exports.bufCache.set(this, buf);\n }\n return buf;\n }\n valueOf() {\n return this.value;\n }\n toJSON() {\n return this.toString();\n }\n isNull() {\n return this.value == null;\n }\n}\nexports.BaseJsonRpcType = BaseJsonRpcType;\n//# sourceMappingURL=json-rpc-base-types.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DBManager = void 0;\nvar rlp = __importStar(require(\"rlp\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar cache_1 = __importDefault(require(\"./cache\"));\nvar operation_1 = require(\"./operation\");\nvar level = require('level-mem');\n/**\n * Abstraction over a DB to facilitate storing/fetching blockchain-related\n * data, such as blocks and headers, indices, and the head block.\n * @hidden\n */\nvar DBManager = /** @class */ (function () {\n function DBManager(db, common) {\n this._db = db;\n this._common = common;\n this._cache = {\n td: new cache_1.default({ max: 1024 }),\n header: new cache_1.default({ max: 512 }),\n body: new cache_1.default({ max: 256 }),\n numberToHash: new cache_1.default({ max: 2048 }),\n hashToNumber: new cache_1.default({ max: 2048 }),\n };\n }\n /**\n * Fetches iterator heads from the db.\n */\n DBManager.prototype.getHeads = function () {\n return __awaiter(this, void 0, void 0, function () {\n var heads;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(operation_1.DBTarget.Heads)];\n case 1:\n heads = _a.sent();\n Object.keys(heads).forEach(function (key) {\n heads[key] = Buffer.from(heads[key]);\n });\n return [2 /*return*/, heads];\n }\n });\n });\n };\n /**\n * Fetches header of the head block.\n */\n DBManager.prototype.getHeadHeader = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.get(operation_1.DBTarget.HeadHeader)];\n });\n });\n };\n /**\n * Fetches head block.\n */\n DBManager.prototype.getHeadBlock = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.get(operation_1.DBTarget.HeadBlock)];\n });\n });\n };\n /**\n * Fetches clique signers.\n */\n DBManager.prototype.getCliqueLatestSignerStates = function () {\n return __awaiter(this, void 0, void 0, function () {\n var signerStates, states, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.get(operation_1.DBTarget.CliqueSignerStates)];\n case 1:\n signerStates = _a.sent();\n states = rlp.decode(signerStates);\n return [2 /*return*/, states.map(function (state) {\n var blockNum = new ethereumjs_util_1.BN(state[0]);\n var addrs = state[1].map(function (buf) { return new ethereumjs_util_1.Address(buf); });\n return [blockNum, addrs];\n })];\n case 2:\n error_1 = _a.sent();\n if (error_1.type === 'NotFoundError') {\n return [2 /*return*/, []];\n }\n throw error_1;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Fetches clique votes.\n */\n DBManager.prototype.getCliqueLatestVotes = function () {\n return __awaiter(this, void 0, void 0, function () {\n var signerVotes, votes, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.get(operation_1.DBTarget.CliqueVotes)];\n case 1:\n signerVotes = _a.sent();\n votes = rlp.decode(signerVotes);\n return [2 /*return*/, votes.map(function (vote) {\n var blockNum = new ethereumjs_util_1.BN(vote[0]);\n var signer = new ethereumjs_util_1.Address(vote[1][0]);\n var beneficiary = new ethereumjs_util_1.Address(vote[1][1]);\n var nonce = vote[1][2];\n return [blockNum, [signer, beneficiary, nonce]];\n })];\n case 2:\n error_2 = _a.sent();\n if (error_2.type === 'NotFoundError') {\n return [2 /*return*/, []];\n }\n throw error_2;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Fetches snapshot of clique signers.\n */\n DBManager.prototype.getCliqueLatestBlockSigners = function () {\n return __awaiter(this, void 0, void 0, function () {\n var blockSigners, signers, error_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.get(operation_1.DBTarget.CliqueBlockSigners)];\n case 1:\n blockSigners = _a.sent();\n signers = rlp.decode(blockSigners);\n return [2 /*return*/, signers.map(function (s) {\n var blockNum = new ethereumjs_util_1.BN(s[0]);\n var signer = new ethereumjs_util_1.Address(s[1]);\n return [blockNum, signer];\n })];\n case 2:\n error_3 = _a.sent();\n if (error_3.type === 'NotFoundError') {\n return [2 /*return*/, []];\n }\n throw error_3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Fetches a block (header and body) given a block id,\n * which can be either its hash or its number.\n */\n DBManager.prototype.getBlock = function (blockId) {\n return __awaiter(this, void 0, void 0, function () {\n var number, hash, header, body, error_4, blockData, opts;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (typeof blockId === 'number' && Number.isInteger(blockId)) {\n blockId = new ethereumjs_util_1.BN(blockId);\n }\n if (!Buffer.isBuffer(blockId)) return [3 /*break*/, 2];\n hash = blockId;\n return [4 /*yield*/, this.hashToNumber(blockId)];\n case 1:\n number = _a.sent();\n return [3 /*break*/, 5];\n case 2:\n if (!ethereumjs_util_1.BN.isBN(blockId)) return [3 /*break*/, 4];\n number = blockId;\n return [4 /*yield*/, this.numberToHash(blockId)];\n case 3:\n hash = _a.sent();\n return [3 /*break*/, 5];\n case 4: throw new Error('Unknown blockId type');\n case 5: return [4 /*yield*/, this.getHeader(hash, number)];\n case 6:\n header = (_a.sent()).raw();\n body = [[], []];\n _a.label = 7;\n case 7:\n _a.trys.push([7, 9, , 10]);\n return [4 /*yield*/, this.getBody(hash, number)];\n case 8:\n body = _a.sent();\n return [3 /*break*/, 10];\n case 9:\n error_4 = _a.sent();\n if (error_4.type !== 'NotFoundError') {\n throw error_4;\n }\n return [3 /*break*/, 10];\n case 10:\n blockData = __spread([header], body);\n opts = { common: this._common, hardforkByBlockNumber: true };\n return [2 /*return*/, block_1.Block.fromValuesArray(blockData, opts)];\n }\n });\n });\n };\n /**\n * Fetches body of a block given its hash and number.\n */\n DBManager.prototype.getBody = function (blockHash, blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var body;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(operation_1.DBTarget.Body, { blockHash: blockHash, blockNumber: blockNumber })];\n case 1:\n body = _a.sent();\n return [2 /*return*/, rlp.decode(body)];\n }\n });\n });\n };\n /**\n * Fetches header of a block given its hash and number.\n */\n DBManager.prototype.getHeader = function (blockHash, blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var encodedHeader, opts;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(operation_1.DBTarget.Header, { blockHash: blockHash, blockNumber: blockNumber })];\n case 1:\n encodedHeader = _a.sent();\n opts = { common: this._common, hardforkByBlockNumber: true };\n return [2 /*return*/, block_1.BlockHeader.fromRLPSerializedHeader(encodedHeader, opts)];\n }\n });\n });\n };\n /**\n * Fetches total difficulty for a block given its hash and number.\n */\n DBManager.prototype.getTotalDifficulty = function (blockHash, blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var td;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(operation_1.DBTarget.TotalDifficulty, { blockHash: blockHash, blockNumber: blockNumber })];\n case 1:\n td = _a.sent();\n return [2 /*return*/, new ethereumjs_util_1.BN(rlp.decode(td))];\n }\n });\n });\n };\n /**\n * Performs a block hash to block number lookup.\n */\n DBManager.prototype.hashToNumber = function (blockHash) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(operation_1.DBTarget.HashToNumber, { blockHash: blockHash })];\n case 1:\n value = _a.sent();\n return [2 /*return*/, new ethereumjs_util_1.BN(value)];\n }\n });\n });\n };\n /**\n * Performs a block number to block hash lookup.\n */\n DBManager.prototype.numberToHash = function (blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (blockNumber.ltn(0)) {\n throw new level.errors.NotFoundError();\n }\n return [2 /*return*/, this.get(operation_1.DBTarget.NumberToHash, { blockNumber: blockNumber })];\n });\n });\n };\n /**\n * Fetches a key from the db. If `opts.cache` is specified\n * it first tries to load from cache, and on cache miss will\n * try to put the fetched item on cache afterwards.\n */\n DBManager.prototype.get = function (dbOperationTarget, key) {\n return __awaiter(this, void 0, void 0, function () {\n var dbGetOperation, cacheString, dbKey, dbOpts, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n dbGetOperation = operation_1.DBOp.get(dbOperationTarget, key);\n cacheString = dbGetOperation.cacheString;\n dbKey = dbGetOperation.baseDBOp.key;\n dbOpts = dbGetOperation.baseDBOp;\n if (!cacheString) return [3 /*break*/, 3];\n if (!this._cache[cacheString]) {\n throw new Error(\"Invalid cache: \" + cacheString);\n }\n value = this._cache[cacheString].get(dbKey);\n if (!!value) return [3 /*break*/, 2];\n return [4 /*yield*/, this._db.get(dbKey, dbOpts)];\n case 1:\n value = (_a.sent());\n this._cache[cacheString].set(dbKey, value);\n _a.label = 2;\n case 2: return [2 /*return*/, value];\n case 3: return [2 /*return*/, this._db.get(dbKey, dbOpts)];\n }\n });\n });\n };\n /**\n * Performs a batch operation on db.\n */\n DBManager.prototype.batch = function (ops) {\n return __awaiter(this, void 0, void 0, function () {\n var convertedOps;\n var _this = this;\n return __generator(this, function (_a) {\n convertedOps = ops.map(function (op) { return op.baseDBOp; });\n // update the current cache for each operation\n ops.map(function (op) { return op.updateCache(_this._cache); });\n return [2 /*return*/, this._db.batch(convertedOps)];\n });\n });\n };\n return DBManager;\n}());\nexports.DBManager = DBManager;\n//# sourceMappingURL=manager.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar debug_1 = require(\"debug\");\nvar rlp_1 = require(\"rlp\");\nvar merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar bloom_1 = __importDefault(require(\"./bloom\"));\nvar DAOConfig = __importStar(require(\"./config/dao_fork_accounts_config.json\"));\nvar opcodes_1 = require(\"./evm/opcodes\");\nvar debug = debug_1.debug('vm:block');\n/* DAO account list */\nvar DAOAccountList = DAOConfig.DAOAccounts;\nvar DAORefundContract = DAOConfig.DAORefundContract;\n/**\n * @ignore\n */\nfunction runBlock(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var state, root, block, generateStateRoot, result, err_1, stateRoot, bloom, results, afterBlockEvent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = this.stateManager;\n root = opts.root;\n block = opts.block;\n generateStateRoot = !!opts.generate;\n /**\n * The `beforeBlock` event.\n *\n * @event Event: beforeBlock\n * @type {Object}\n * @property {Block} block emits the block that is about to be processed\n */\n return [4 /*yield*/, this._emit('beforeBlock', block)];\n case 1:\n /**\n * The `beforeBlock` event.\n *\n * @event Event: beforeBlock\n * @type {Object}\n * @property {Block} block emits the block that is about to be processed\n */\n _a.sent();\n if (this._hardforkByBlockNumber) {\n this._common.setHardforkByBlockNumber(block.header.number.toNumber());\n }\n debug('-'.repeat(100));\n debug(\"Running blog hash=\" + block\n .hash()\n .toString('hex') + \" number=\" + block.header.number.toNumber() + \" hardfork=\" + this._common.hardfork());\n if (!root) return [3 /*break*/, 3];\n debug(\"Set provided state root \" + root.toString('hex'));\n return [4 /*yield*/, state.setStateRoot(root)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n if (!(this._common.hardforkIsActiveOnChain('dao') &&\n block.header.number.eq(this._common.hardforkBlockBN('dao')))) return [3 /*break*/, 5];\n debug(\"Apply DAO hardfork\");\n return [4 /*yield*/, _applyDAOHardfork(state)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: \n // Checkpoint state\n return [4 /*yield*/, state.checkpoint()];\n case 6:\n // Checkpoint state\n _a.sent();\n debug(\"block checkpoint\");\n _a.label = 7;\n case 7:\n _a.trys.push([7, 9, , 11]);\n return [4 /*yield*/, applyBlock.bind(this)(block, opts)];\n case 8:\n result = _a.sent();\n debug(\"Received block results gasUsed=\" + result.gasUsed + \" bloom=\" + opcodes_1.short(result.bloom.bitvector) + \" (\" + result.bloom.bitvector.length + \" bytes) receiptRoot=\" + result.receiptRoot.toString('hex') + \" receipts=\" + result.receipts.length + \" txResults=\" + result.results.length);\n return [3 /*break*/, 11];\n case 9:\n err_1 = _a.sent();\n return [4 /*yield*/, state.revert()];\n case 10:\n _a.sent();\n debug(\"block checkpoint reverted\");\n throw err_1;\n case 11: \n // Persist state\n return [4 /*yield*/, state.commit()];\n case 12:\n // Persist state\n _a.sent();\n debug(\"block checkpoint committed\");\n return [4 /*yield*/, state.getStateRoot(false)\n // Given the generate option, either set resulting header\n // values to the current block, or validate the resulting\n // header values against the current block.\n ];\n case 13:\n stateRoot = _a.sent();\n // Given the generate option, either set resulting header\n // values to the current block, or validate the resulting\n // header values against the current block.\n if (generateStateRoot) {\n bloom = result.bloom.bitvector;\n block = block_1.Block.fromBlockData(__assign(__assign({}, block), { header: __assign(__assign({}, block.header), { stateRoot: stateRoot, bloom: bloom }) }));\n }\n else {\n if (result.receiptRoot && !result.receiptRoot.equals(block.header.receiptTrie)) {\n debug(\"Invalid receiptTrie received=\" + result.receiptRoot.toString('hex') + \" expected=\" + block.header.receiptTrie.toString('hex'));\n throw new Error('invalid receiptTrie');\n }\n if (!result.bloom.bitvector.equals(block.header.bloom)) {\n debug(\"Invalid bloom received=\" + result.bloom.bitvector.toString('hex') + \" expected=\" + block.header.bloom.toString('hex'));\n throw new Error('invalid bloom');\n }\n if (!result.gasUsed.eq(block.header.gasUsed)) {\n debug(\"Invalid gasUsed received=\" + result.gasUsed + \" expected=\" + block.header.gasUsed);\n throw new Error('invalid gasUsed');\n }\n if (!stateRoot.equals(block.header.stateRoot)) {\n debug(\"Invalid stateRoot received=\" + stateRoot.toString('hex') + \" expected=\" + block.header.stateRoot.toString('hex'));\n throw new Error('invalid block stateRoot');\n }\n }\n results = {\n receipts: result.receipts,\n results: result.results,\n stateRoot: stateRoot,\n gasUsed: result.gasUsed,\n logsBloom: result.bloom.bitvector,\n receiptRoot: result.receiptRoot,\n };\n afterBlockEvent = __assign(__assign({}, results), { block: block });\n /**\n * The `afterBlock` event\n *\n * @event Event: afterBlock\n * @type {AfterBlockEvent}\n * @property {AfterBlockEvent} result emits the results of processing a block\n */\n return [4 /*yield*/, this._emit('afterBlock', afterBlockEvent)];\n case 14:\n /**\n * The `afterBlock` event\n *\n * @event Event: afterBlock\n * @type {AfterBlockEvent}\n * @property {AfterBlockEvent} result emits the results of processing a block\n */\n _a.sent();\n debug(\"Running blog finished hash=\" + block\n .hash()\n .toString('hex') + \" number=\" + block.header.number.toNumber() + \" hardfork=\" + this._common.hardfork());\n return [2 /*return*/, results];\n }\n });\n });\n}\nexports.default = runBlock;\n/**\n * Validates and applies a block, computing the results of\n * applying its transactions. This method doesn't modify the\n * block itself. It computes the block rewards and puts\n * them on state (but doesn't persist the changes).\n * @param {Block} block\n * @param {RunBlockOpts} opts\n */\nfunction applyBlock(block, opts) {\n return __awaiter(this, void 0, void 0, function () {\n var blockResults;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!opts.skipBlockValidation) return [3 /*break*/, 3];\n if (!block.header.gasLimit.gte(new ethereumjs_util_1.BN('8000000000000000', 16))) return [3 /*break*/, 1];\n throw new Error('Invalid block with gas limit greater than (2^63 - 1)');\n case 1:\n debug(\"Validate block\");\n return [4 /*yield*/, block.validate(this.blockchain)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n // Apply transactions\n debug(\"Apply transactions\");\n return [4 /*yield*/, applyTransactions.bind(this)(block, opts)\n // Pay ommers and miners\n ];\n case 4:\n blockResults = _a.sent();\n if (!(this._common.consensusType() === 'pow')) return [3 /*break*/, 6];\n return [4 /*yield*/, assignBlockRewards.bind(this)(block)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, blockResults];\n }\n });\n });\n}\n/**\n * Applies the transactions in a block, computing the receipts\n * as well as gas usage and some relevant data. This method is\n * side-effect free (it doesn't modify the block nor the state).\n * @param {Block} block\n * @param {RunBlockOpts} opts\n */\nfunction applyTransactions(block, opts) {\n return __awaiter(this, void 0, void 0, function () {\n var bloom, gasUsed, receiptTrie, receipts, txResults, txIdx, tx, gasLimitIsHigherThanBlock, skipBalance, skipNonce, txRes, abstractTxReceipt, txReceipt, encodedReceipt, receiptLog, statusInfo, stateRoot;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n bloom = new bloom_1.default();\n gasUsed = new ethereumjs_util_1.BN(0);\n receiptTrie = new merkle_patricia_tree_1.BaseTrie();\n receipts = [];\n txResults = [];\n txIdx = 0;\n _a.label = 1;\n case 1:\n if (!(txIdx < block.transactions.length)) return [3 /*break*/, 10];\n tx = block.transactions[txIdx];\n gasLimitIsHigherThanBlock = block.header.gasLimit.lt(tx.gasLimit.add(gasUsed));\n if (gasLimitIsHigherThanBlock) {\n throw new Error('tx has a higher gas limit than the block');\n }\n skipBalance = opts.skipBalance, skipNonce = opts.skipNonce;\n return [4 /*yield*/, this.runTx({\n tx: tx,\n block: block,\n skipBalance: skipBalance,\n skipNonce: skipNonce,\n })];\n case 2:\n txRes = _a.sent();\n txResults.push(txRes);\n debug('-'.repeat(100));\n // Add to total block gas usage\n gasUsed = gasUsed.add(txRes.gasUsed);\n debug(\"Add tx gas used (\" + txRes.gasUsed + \") to total block gas usage (-> \" + gasUsed + \")\");\n // Combine blooms via bitwise OR\n bloom.or(txRes.bloom);\n abstractTxReceipt = {\n gasUsed: gasUsed.toArrayLike(Buffer),\n bitvector: txRes.bloom.bitvector,\n logs: txRes.execResult.logs || [],\n };\n txReceipt = void 0;\n encodedReceipt = void 0;\n receiptLog = \"Generate tx receipt transactionType=\" + ('transactionType' in tx ? tx.transactionType : 'NaN') + \" gasUsed=\" + gasUsed + \" bitvector=\" + opcodes_1.short(abstractTxReceipt.bitvector) + \" (\" + abstractTxReceipt.bitvector.length + \" bytes) logs=\" + abstractTxReceipt.logs.length;\n if (!(!('transactionType' in tx) || tx.transactionType === 0)) return [3 /*break*/, 6];\n if (!this._common.gteHardfork('byzantium')) return [3 /*break*/, 3];\n txReceipt = __assign({ status: txRes.execResult.exceptionError ? 0 : 1 }, abstractTxReceipt);\n statusInfo = txRes.execResult.exceptionError ? 'error' : 'ok';\n receiptLog += \" status=\" + txReceipt.status + \" (\" + statusInfo + \") (>= Byzantium)\";\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, this.stateManager.getStateRoot(true)];\n case 4:\n stateRoot = _a.sent();\n txReceipt = __assign({ stateRoot: stateRoot }, abstractTxReceipt);\n receiptLog += \" stateRoot=\" + txReceipt.stateRoot.toString('hex') + \" (< Byzantium)\";\n _a.label = 5;\n case 5:\n encodedReceipt = rlp_1.encode(Object.values(txReceipt));\n return [3 /*break*/, 7];\n case 6:\n if ('transactionType' in tx && tx.transactionType === 1) {\n txReceipt = __assign({ status: txRes.execResult.exceptionError ? 0 : 1 }, abstractTxReceipt);\n encodedReceipt = Buffer.concat([Buffer.from('01', 'hex'), rlp_1.encode(Object.values(txReceipt))]);\n }\n else {\n throw new Error(\"Unsupported transaction type \" + ('transactionType' in tx ? tx.transactionType : 'NaN'));\n }\n _a.label = 7;\n case 7:\n debug(receiptLog);\n receipts.push(txReceipt);\n // Add receipt to trie to later calculate receipt root\n return [4 /*yield*/, receiptTrie.put(rlp_1.encode(txIdx), encodedReceipt)];\n case 8:\n // Add receipt to trie to later calculate receipt root\n _a.sent();\n _a.label = 9;\n case 9:\n txIdx++;\n return [3 /*break*/, 1];\n case 10: return [2 /*return*/, {\n bloom: bloom,\n gasUsed: gasUsed,\n receiptRoot: receiptTrie.root,\n receipts: receipts,\n results: txResults,\n }];\n }\n });\n });\n}\n/**\n * Calculates block rewards for miner and ommers and puts\n * the updated balances of their accounts to state.\n */\nfunction assignBlockRewards(block) {\n return __awaiter(this, void 0, void 0, function () {\n var state, minerReward, ommers, ommers_1, ommers_1_1, ommer, reward_1, account_1, e_1_1, reward, account;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n debug(\"Assign block rewards\");\n state = this.stateManager;\n minerReward = new ethereumjs_util_1.BN(this._common.param('pow', 'minerReward'));\n ommers = block.uncleHeaders;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, 7, 8]);\n ommers_1 = __values(ommers), ommers_1_1 = ommers_1.next();\n _b.label = 2;\n case 2:\n if (!!ommers_1_1.done) return [3 /*break*/, 5];\n ommer = ommers_1_1.value;\n reward_1 = calculateOmmerReward(ommer.number, block.header.number, minerReward);\n return [4 /*yield*/, rewardAccount(state, ommer.coinbase, reward_1)];\n case 3:\n account_1 = _b.sent();\n debug(\"Add uncle reward \" + reward_1 + \" to account \" + ommer.coinbase + \" (-> \" + account_1.balance + \")\");\n _b.label = 4;\n case 4:\n ommers_1_1 = ommers_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (ommers_1_1 && !ommers_1_1.done && (_a = ommers_1.return)) _a.call(ommers_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n reward = calculateMinerReward(minerReward, ommers.length);\n return [4 /*yield*/, rewardAccount(state, block.header.coinbase, reward)];\n case 9:\n account = _b.sent();\n debug(\"Add miner reward \" + reward + \" to account \" + block.header.coinbase + \" (-> \" + account.balance + \")\");\n return [2 /*return*/];\n }\n });\n });\n}\nfunction calculateOmmerReward(ommerBlockNumber, blockNumber, minerReward) {\n var heightDiff = blockNumber.sub(ommerBlockNumber);\n var reward = new ethereumjs_util_1.BN(8).sub(heightDiff).mul(minerReward.divn(8));\n if (reward.ltn(0)) {\n reward = new ethereumjs_util_1.BN(0);\n }\n return reward;\n}\nfunction calculateMinerReward(minerReward, ommersNum) {\n // calculate nibling reward\n var niblingReward = minerReward.divn(32);\n var totalNiblingReward = niblingReward.muln(ommersNum);\n var reward = minerReward.add(totalNiblingReward);\n return reward;\n}\nfunction rewardAccount(state, address, reward) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, state.getAccount(address)];\n case 1:\n account = _a.sent();\n account.balance.iadd(reward);\n return [4 /*yield*/, state.putAccount(address, account)];\n case 2:\n _a.sent();\n return [2 /*return*/, account];\n }\n });\n });\n}\n// apply the DAO fork changes to the VM\nfunction _applyDAOHardfork(state) {\n return __awaiter(this, void 0, void 0, function () {\n var DAORefundContractAddress, DAORefundAccount, DAOAccountList_1, DAOAccountList_1_1, addr, address, account, e_2_1;\n var e_2, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n DAORefundContractAddress = new ethereumjs_util_1.Address(Buffer.from(DAORefundContract, 'hex'));\n if (!!state.accountExists(DAORefundContractAddress)) return [3 /*break*/, 2];\n return [4 /*yield*/, state.putAccount(DAORefundContractAddress, new ethereumjs_util_1.Account())];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2: return [4 /*yield*/, state.getAccount(DAORefundContractAddress)];\n case 3:\n DAORefundAccount = _b.sent();\n _b.label = 4;\n case 4:\n _b.trys.push([4, 10, 11, 12]);\n DAOAccountList_1 = __values(DAOAccountList), DAOAccountList_1_1 = DAOAccountList_1.next();\n _b.label = 5;\n case 5:\n if (!!DAOAccountList_1_1.done) return [3 /*break*/, 9];\n addr = DAOAccountList_1_1.value;\n address = new ethereumjs_util_1.Address(Buffer.from(addr, 'hex'));\n return [4 /*yield*/, state.getAccount(address)];\n case 6:\n account = _b.sent();\n DAORefundAccount.balance.iadd(account.balance);\n // clear the accounts' balance\n account.balance = new ethereumjs_util_1.BN(0);\n return [4 /*yield*/, state.putAccount(address, account)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n DAOAccountList_1_1 = DAOAccountList_1.next();\n return [3 /*break*/, 5];\n case 9: return [3 /*break*/, 12];\n case 10:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 12];\n case 11:\n try {\n if (DAOAccountList_1_1 && !DAOAccountList_1_1.done && (_a = DAOAccountList_1.return)) _a.call(DAOAccountList_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 12: \n // finally, put the Refund Account\n return [4 /*yield*/, state.putAccount(DAORefundContractAddress, DAORefundAccount)];\n case 13:\n // finally, put the Refund Account\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n}\n//# sourceMappingURL=runBlock.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nconst { privateKeyVerify, publicKeyCreate, publicKeyVerify, publicKeyConvert } = require('ethereum-cryptography/secp256k1');\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nconst { privateKeyVerify, publicKeyCreate, publicKeyVerify, publicKeyConvert } = require('ethereum-cryptography/secp256k1');\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nconst { privateKeyVerify, publicKeyCreate, publicKeyVerify, publicKeyConvert } = require('ethereum-cryptography/secp256k1');\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nconst { privateKeyVerify, publicKeyCreate, publicKeyVerify, publicKeyConvert } = require('ethereum-cryptography/secp256k1');\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n helpers_1.assertIsHexString(hexAddress);\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar secp256k1_1 = require(\"secp256k1\");\nvar random_1 = require(\"./random\");\nvar SECP256K1_PRIVATE_KEY_SIZE = 32;\nfunction createPrivateKey() {\n return __awaiter(this, void 0, void 0, function () {\n var pk;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!true) return [3 /*break*/, 2];\n return [4 /*yield*/, random_1.getRandomBytes(SECP256K1_PRIVATE_KEY_SIZE)];\n case 1:\n pk = _a.sent();\n if (secp256k1_1.privateKeyVerify(pk)) {\n return [2 /*return*/, pk];\n }\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n });\n}\nexports.createPrivateKey = createPrivateKey;\nfunction createPrivateKeySync() {\n while (true) {\n var pk = random_1.getRandomBytesSync(SECP256K1_PRIVATE_KEY_SIZE);\n if (secp256k1_1.privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\nexports.createPrivateKeySync = createPrivateKeySync;\n__export(require(\"secp256k1\"));\n//# sourceMappingURL=secp256k1.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n try {\n helpers_1.assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1_1.privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1_1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return secp256k1_1.publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(secp256k1_1.publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(secp256k1_1.publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(secp256k1_1.publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n try {\n helpers_1.assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n try {\n helpers_1.assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1_1.privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1_1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return secp256k1_1.publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(secp256k1_1.publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(secp256k1_1.publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(secp256k1_1.publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n try {\n helpers_1.assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isZeroAddress = exports.zeroAddress = exports.importPublic = exports.privateToAddress = exports.privateToPublic = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isValidAddress = exports.Account = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst constants_1 = require(\"./constants\");\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nclass Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(nonce = new bn_js_1.default(0), balance = new bn_js_1.default(0), stateRoot = constants_1.KECCAK256_RLP, codeHash = constants_1.KECCAK256_NULL) {\n this.nonce = nonce;\n this.balance = balance;\n this.stateRoot = stateRoot;\n this.codeHash = codeHash;\n this._validate();\n }\n static fromAccountData(accountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData;\n return new Account(nonce ? new bn_js_1.default(bytes_1.toBuffer(nonce)) : undefined, balance ? new bn_js_1.default(bytes_1.toBuffer(balance)) : undefined, stateRoot ? bytes_1.toBuffer(stateRoot) : undefined, codeHash ? bytes_1.toBuffer(codeHash) : undefined);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromValuesArray(values) {\n const [nonce, balance, stateRoot, codeHash] = values;\n return new Account(new bn_js_1.default(nonce), new bn_js_1.default(balance), stateRoot, codeHash);\n }\n _validate() {\n if (this.nonce.lt(new bn_js_1.default(0))) {\n throw new Error('nonce must be greater than zero');\n }\n if (this.balance.lt(new bn_js_1.default(0))) {\n throw new Error('balance must be greater than zero');\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32');\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n }\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw() {\n return [types_1.bnToRlp(this.nonce), types_1.bnToRlp(this.balance), this.stateRoot, this.codeHash];\n }\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize() {\n return rlp.encode(this.raw());\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n return !this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(constants_1.KECCAK256_NULL);\n }\n}\nexports.Account = Account;\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (hexAddress) {\n try {\n helpers_1.assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (hexAddress, eip1191ChainId) {\n helpers_1.assertIsHexString(hexAddress);\n const address = ethjs_util_1.stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId) {\n const chainId = types_1.toType(eip1191ChainId, types_1.TypeOutput.BN);\n prefix = chainId.toString() + '0x';\n }\n const hash = hash_1.keccakFromString(prefix + address).toString('hex');\n let ret = '0x';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return exports.isValidAddress(hexAddress) && exports.toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(nonce);\n const nonceBN = new bn_js_1.default(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n helpers_1.assertIsBuffer(from);\n helpers_1.assertIsBuffer(salt);\n helpers_1.assertIsBuffer(initCode);\n assert_1.default(from.length === 20);\n assert_1.default(salt.length === 32);\n const address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), from, salt, hash_1.keccak256(initCode)]));\n return address.slice(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1_1.privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize = false) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1_1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return secp256k1_1.publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize = false) {\n helpers_1.assertIsBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(secp256k1_1.publicKeyConvert(pubKey, false).slice(1));\n }\n assert_1.default(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n helpers_1.assertIsBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return Buffer.from(secp256k1_1.publicKeyCreate(privateKey, false)).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n helpers_1.assertIsBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(secp256k1_1.publicKeyConvert(publicKey, false).slice(1));\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexports.zeroAddress = function () {\n const addressLength = 20;\n const addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexports.isZeroAddress = function (hexAddress) {\n try {\n helpers_1.assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n const zeroAddr = exports.zeroAddress();\n return zeroAddr === hexAddress;\n};\n//# sourceMappingURL=account.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/base\"), exports);\n__exportStar(require(\"./src/exclusive\"), exports);\n__exportStar(require(\"./src/definition\"), exports);\n__exportStar(require(\"./src/create\"), exports);\n__exportStar(require(\"./src/constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// \n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Account class and helper functions\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Address type\n */\n__exportStar(require(\"./address\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n/**\n * External exports (BN, rlp, secp256k1)\n */\n__exportStar(require(\"./externals\"), exports);\n/**\n * Helpful TypeScript types\n */\n__exportStar(require(\"./types\"), exports);\n/**\n * Export ethjs-util methods\n */\n__exportStar(require(\"ethjs-util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handlers = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar util_1 = require(\"./util\");\nvar EIP1283_1 = require(\"./EIP1283\");\nvar EIP2200_1 = require(\"./EIP2200\");\nvar EIP2929_1 = require(\"./EIP2929\");\nvar exceptions_1 = require(\"../../exceptions\");\n// the opcode functions\nexports.handlers = new Map([\n // 0x00: STOP\n [\n 0x00,\n function () {\n util_1.trap(exceptions_1.ERROR.STOP);\n },\n ],\n // 0x01: ADD\n [\n 0x01,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = a.add(b).mod(ethereumjs_util_1.TWO_POW256);\n runState.stack.push(r);\n },\n ],\n // 0x02: MUL\n [\n 0x02,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = a.mul(b).mod(ethereumjs_util_1.TWO_POW256);\n runState.stack.push(r);\n },\n ],\n // 0x03: SUB\n [\n 0x03,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = a.sub(b).toTwos(256);\n runState.stack.push(r);\n },\n ],\n // 0x04: DIV\n [\n 0x04,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n r = a.div(b);\n }\n runState.stack.push(r);\n },\n ],\n // 0x05: SDIV\n [\n 0x05,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n a = a.fromTwos(256);\n b = b.fromTwos(256);\n r = a.div(b).toTwos(256);\n }\n runState.stack.push(r);\n },\n ],\n // 0x06: MOD\n [\n 0x06,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n r = a.mod(b);\n }\n runState.stack.push(r);\n },\n ],\n // 0x07: SMOD\n [\n 0x07,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n a = a.fromTwos(256);\n b = b.fromTwos(256);\n r = a.abs().mod(b.abs());\n if (a.isNeg()) {\n r = r.ineg();\n }\n r = r.toTwos(256);\n }\n runState.stack.push(r);\n },\n ],\n // 0x08: ADDMOD\n [\n 0x08,\n function (runState) {\n var _a = __read(runState.stack.popN(3), 3), a = _a[0], b = _a[1], c = _a[2];\n var r;\n if (c.isZero()) {\n r = new ethereumjs_util_1.BN(c);\n }\n else {\n r = a.add(b).mod(c);\n }\n runState.stack.push(r);\n },\n ],\n // 0x09: MULMOD\n [\n 0x09,\n function (runState) {\n var _a = __read(runState.stack.popN(3), 3), a = _a[0], b = _a[1], c = _a[2];\n var r;\n if (c.isZero()) {\n r = new ethereumjs_util_1.BN(c);\n }\n else {\n r = a.mul(b).mod(c);\n }\n runState.stack.push(r);\n },\n ],\n // 0x0a: EXP\n [\n 0x0a,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), base = _a[0], exponent = _a[1];\n if (exponent.isZero()) {\n runState.stack.push(new ethereumjs_util_1.BN(1));\n return;\n }\n var byteLength = exponent.byteLength();\n if (byteLength < 1 || byteLength > 32) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_RANGE);\n }\n var gasPrice = runState._common.param('gasPrices', 'expByte');\n var amount = new ethereumjs_util_1.BN(byteLength).muln(gasPrice);\n runState.eei.useGas(amount, 'EXP opcode');\n if (base.isZero()) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n var m = ethereumjs_util_1.BN.red(ethereumjs_util_1.TWO_POW256);\n var redBase = base.toRed(m);\n var r = redBase.redPow(exponent);\n runState.stack.push(r.fromRed());\n },\n ],\n // 0x0b: SIGNEXTEND\n [\n 0x0b,\n function (runState) {\n /* eslint-disable-next-line prefer-const */\n var _a = __read(runState.stack.popN(2), 2), k = _a[0], val = _a[1];\n if (k.ltn(31)) {\n var signBit = k.muln(8).iaddn(7).toNumber();\n var mask = new ethereumjs_util_1.BN(1).ishln(signBit).isubn(1);\n if (val.testn(signBit)) {\n val = val.or(mask.notn(256));\n }\n else {\n val = val.and(mask);\n }\n }\n else {\n // return the same value\n val = new ethereumjs_util_1.BN(val);\n }\n runState.stack.push(val);\n },\n ],\n // 0x10 range - bit ops\n // 0x10: LT\n [\n 0x10,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = new ethereumjs_util_1.BN(a.lt(b) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x11: GT\n [\n 0x11,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = new ethereumjs_util_1.BN(a.gt(b) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x12: SLT\n [\n 0x12,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = new ethereumjs_util_1.BN(a.fromTwos(256).lt(b.fromTwos(256)) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x13: SGT\n [\n 0x13,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = new ethereumjs_util_1.BN(a.fromTwos(256).gt(b.fromTwos(256)) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x14: EQ\n [\n 0x14,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = new ethereumjs_util_1.BN(a.eq(b) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x15: ISZERO\n [\n 0x15,\n function (runState) {\n var a = runState.stack.pop();\n var r = new ethereumjs_util_1.BN(a.isZero() ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x16: AND\n [\n 0x16,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = a.and(b);\n runState.stack.push(r);\n },\n ],\n // 0x17: OR\n [\n 0x17,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = a.or(b);\n runState.stack.push(r);\n },\n ],\n // 0x18: XOR\n [\n 0x18,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r = a.xor(b);\n runState.stack.push(r);\n },\n ],\n // 0x19: NOT\n [\n 0x19,\n function (runState) {\n var a = runState.stack.pop();\n var r = a.notn(256);\n runState.stack.push(r);\n },\n ],\n // 0x1a: BYTE\n [\n 0x1a,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), pos = _a[0], word = _a[1];\n if (pos.gten(32)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n var r = new ethereumjs_util_1.BN(word.shrn((31 - pos.toNumber()) * 8).andln(0xff));\n runState.stack.push(r);\n },\n ],\n // 0x1b: SHL\n [\n 0x1b,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n if (a.gten(256)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n var r = b.shln(a.toNumber()).iand(ethereumjs_util_1.MAX_INTEGER);\n runState.stack.push(r);\n },\n ],\n // 0x1c: SHR\n [\n 0x1c,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n if (a.gten(256)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n var r = b.shrn(a.toNumber());\n runState.stack.push(r);\n },\n ],\n // 0x1d: SAR\n [\n 0x1d,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), a = _a[0], b = _a[1];\n var r;\n var isSigned = b.testn(255);\n if (a.gten(256)) {\n if (isSigned) {\n r = new ethereumjs_util_1.BN(ethereumjs_util_1.MAX_INTEGER);\n }\n else {\n r = new ethereumjs_util_1.BN(0);\n }\n runState.stack.push(r);\n return;\n }\n var c = b.shrn(a.toNumber());\n if (isSigned) {\n var shiftedOutWidth = 255 - a.toNumber();\n var mask = ethereumjs_util_1.MAX_INTEGER.shrn(shiftedOutWidth).shln(shiftedOutWidth);\n r = c.ior(mask);\n }\n else {\n r = c;\n }\n runState.stack.push(r);\n },\n ],\n // 0x20 range - crypto\n // 0x20: SHA3\n [\n 0x20,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), offset = _a[0], length = _a[1];\n util_1.subMemUsage(runState, offset, length);\n var data = Buffer.alloc(0);\n if (!length.isZero()) {\n data = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n // copy fee\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sha3Word')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'SHA3 opcode');\n var r = new ethereumjs_util_1.BN(ethereumjs_util_1.keccak256(data));\n runState.stack.push(r);\n },\n ],\n // 0x30 range - closure state\n // 0x30: ADDRESS\n [\n 0x30,\n function (runState) {\n var address = new ethereumjs_util_1.BN(runState.eei.getAddress().buf);\n runState.stack.push(address);\n },\n ],\n // 0x31: BALANCE\n [\n 0x31,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var addressBN, address, balance;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n addressBN = runState.stack.pop();\n address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n return [4 /*yield*/, runState.eei.getExternalBalance(address)];\n case 1:\n balance = _a.sent();\n runState.stack.push(balance);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x32: ORIGIN\n [\n 0x32,\n function (runState) {\n runState.stack.push(runState.eei.getTxOrigin());\n },\n ],\n // 0x33: CALLER\n [\n 0x33,\n function (runState) {\n runState.stack.push(runState.eei.getCaller());\n },\n ],\n // 0x34: CALLVALUE\n [\n 0x34,\n function (runState) {\n runState.stack.push(runState.eei.getCallValue());\n },\n ],\n // 0x35: CALLDATALOAD\n [\n 0x35,\n function (runState) {\n var pos = runState.stack.pop();\n if (pos.gt(runState.eei.getCallDataSize())) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n var i = pos.toNumber();\n var loaded = runState.eei.getCallData().slice(i, i + 32);\n loaded = loaded.length ? loaded : Buffer.from([0]);\n var r = new ethereumjs_util_1.BN(ethereumjs_util_1.setLengthRight(loaded, 32));\n runState.stack.push(r);\n },\n ],\n // 0x36: CALLDATASIZE\n [\n 0x36,\n function (runState) {\n var r = runState.eei.getCallDataSize();\n runState.stack.push(r);\n },\n ],\n // 0x37: CALLDATACOPY\n [\n 0x37,\n function (runState) {\n var _a = __read(runState.stack.popN(3), 3), memOffset = _a[0], dataOffset = _a[1], dataLength = _a[2];\n util_1.subMemUsage(runState, memOffset, dataLength);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).imul(util_1.divCeil(dataLength, new ethereumjs_util_1.BN(32))), 'CALLDATACOPY opcode');\n var data = util_1.getDataSlice(runState.eei.getCallData(), dataOffset, dataLength);\n var memOffsetNum = memOffset.toNumber();\n var dataLengthNum = dataLength.toNumber();\n runState.memory.extend(memOffsetNum, dataLengthNum);\n runState.memory.write(memOffsetNum, dataLengthNum, data);\n },\n ],\n // 0x38: CODESIZE\n [\n 0x38,\n function (runState) {\n runState.stack.push(runState.eei.getCodeSize());\n },\n ],\n // 0x39: CODECOPY\n [\n 0x39,\n function (runState) {\n var _a = __read(runState.stack.popN(3), 3), memOffset = _a[0], codeOffset = _a[1], length = _a[2];\n util_1.subMemUsage(runState, memOffset, length);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'CODECOPY opcode');\n var data = util_1.getDataSlice(runState.eei.getCode(), codeOffset, length);\n var memOffsetNum = memOffset.toNumber();\n var lengthNum = length.toNumber();\n runState.memory.extend(memOffsetNum, lengthNum);\n runState.memory.write(memOffsetNum, lengthNum, data);\n },\n ],\n // 0x3b: EXTCODESIZE\n [\n 0x3b,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var addressBN, address, size;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n addressBN = runState.stack.pop();\n address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n return [4 /*yield*/, runState.eei.getExternalCodeSize(addressBN)];\n case 1:\n size = _a.sent();\n runState.stack.push(size);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x3c: EXTCODECOPY\n [\n 0x3c,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, addressBN, memOffset, codeOffset, length, address, code, data, memOffsetNum, lengthNum;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = __read(runState.stack.popN(4), 4), addressBN = _a[0], memOffset = _a[1], codeOffset = _a[2], length = _a[3];\n // FIXME: for some reason this must come before subGas\n util_1.subMemUsage(runState, memOffset, length);\n address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n // copy fee\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'EXTCODECOPY opcode');\n return [4 /*yield*/, runState.eei.getExternalCode(addressBN)];\n case 1:\n code = _b.sent();\n data = util_1.getDataSlice(code, codeOffset, length);\n memOffsetNum = memOffset.toNumber();\n lengthNum = length.toNumber();\n runState.memory.extend(memOffsetNum, lengthNum);\n runState.memory.write(memOffsetNum, lengthNum, data);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x3f: EXTCODEHASH\n [\n 0x3f,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var addressBN, address, empty, code;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n addressBN = runState.stack.pop();\n address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n return [4 /*yield*/, runState.eei.isAccountEmpty(address)];\n case 1:\n empty = _a.sent();\n if (empty) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return [2 /*return*/];\n }\n return [4 /*yield*/, runState.eei.getExternalCode(addressBN)];\n case 2:\n code = _a.sent();\n if (code.length === 0) {\n runState.stack.push(new ethereumjs_util_1.BN(ethereumjs_util_1.KECCAK256_NULL));\n return [2 /*return*/];\n }\n runState.stack.push(new ethereumjs_util_1.BN(ethereumjs_util_1.keccak256(code)));\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x3d: RETURNDATASIZE\n [\n 0x3d,\n function (runState) {\n runState.stack.push(runState.eei.getReturnDataSize());\n },\n ],\n // 0x3e: RETURNDATACOPY\n [\n 0x3e,\n function (runState) {\n var _a = __read(runState.stack.popN(3), 3), memOffset = _a[0], returnDataOffset = _a[1], length = _a[2];\n if (returnDataOffset.add(length).gt(runState.eei.getReturnDataSize())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n util_1.subMemUsage(runState, memOffset, length);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).mul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'RETURNDATACOPY opcode');\n var data = util_1.getDataSlice(runState.eei.getReturnData(), returnDataOffset, length);\n var memOffsetNum = memOffset.toNumber();\n var lengthNum = length.toNumber();\n runState.memory.extend(memOffsetNum, lengthNum);\n runState.memory.write(memOffsetNum, lengthNum, data);\n },\n ],\n // 0x3a: GASPRICE\n [\n 0x3a,\n function (runState) {\n runState.stack.push(runState.eei.getTxGasPrice());\n },\n ],\n // '0x40' range - block operations\n // 0x40: BLOCKHASH\n [\n 0x40,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var number, diff, hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n number = runState.stack.pop();\n diff = runState.eei.getBlockNumber().sub(number);\n // block lookups must be within the past 256 blocks\n if (diff.gtn(256) || diff.lten(0)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return [2 /*return*/];\n }\n return [4 /*yield*/, runState.eei.getBlockHash(number)];\n case 1:\n hash = _a.sent();\n runState.stack.push(hash);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x41: COINBASE\n [\n 0x41,\n function (runState) {\n runState.stack.push(runState.eei.getBlockCoinbase());\n },\n ],\n // 0x42: TIMESTAMP\n [\n 0x42,\n function (runState) {\n runState.stack.push(runState.eei.getBlockTimestamp());\n },\n ],\n // 0x43: NUMBER\n [\n 0x43,\n function (runState) {\n runState.stack.push(runState.eei.getBlockNumber());\n },\n ],\n // 0x44: DIFFICULTY\n [\n 0x44,\n function (runState) {\n runState.stack.push(runState.eei.getBlockDifficulty());\n },\n ],\n // 0x45: GASLIMIT\n [\n 0x45,\n function (runState) {\n runState.stack.push(runState.eei.getBlockGasLimit());\n },\n ],\n // 0x46: CHAINID\n [\n 0x46,\n function (runState) {\n runState.stack.push(runState.eei.getChainId());\n },\n ],\n // 0x47: SELFBALANCE\n [\n 0x47,\n function (runState) {\n runState.stack.push(runState.eei.getSelfBalance());\n },\n ],\n // 0x50 range - 'storage' and execution\n // 0x50: POP\n [\n 0x50,\n function (runState) {\n runState.stack.pop();\n },\n ],\n // 0x51: MLOAD\n [\n 0x51,\n function (runState) {\n var pos = runState.stack.pop();\n util_1.subMemUsage(runState, pos, new ethereumjs_util_1.BN(32));\n var word = runState.memory.read(pos.toNumber(), 32);\n runState.stack.push(new ethereumjs_util_1.BN(word));\n },\n ],\n // 0x52: MSTORE\n [\n 0x52,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), offset = _a[0], word = _a[1];\n var buf = word.toArrayLike(Buffer, 'be', 32);\n util_1.subMemUsage(runState, offset, new ethereumjs_util_1.BN(32));\n var offsetNum = offset.toNumber();\n runState.memory.extend(offsetNum, 32);\n runState.memory.write(offsetNum, 32, buf);\n },\n ],\n // 0x53: MSTORE8\n [\n 0x53,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), offset = _a[0], byte = _a[1];\n // NOTE: we're using a 'trick' here to get the least significant byte\n // NOTE: force cast necessary because `BN.andln` returns number but\n // the types are wrong\n var buf = Buffer.from([byte.andln(0xff)]);\n util_1.subMemUsage(runState, offset, new ethereumjs_util_1.BN(1));\n var offsetNum = offset.toNumber();\n runState.memory.extend(offsetNum, 1);\n runState.memory.write(offsetNum, 1, buf);\n },\n ],\n // 0x54: SLOAD\n [\n 0x54,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var key, keyBuf, value, valueBN;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = runState.stack.pop();\n keyBuf = key.toArrayLike(Buffer, 'be', 32);\n EIP2929_1.accessStorageEIP2929(runState, keyBuf, false);\n return [4 /*yield*/, runState.eei.storageLoad(keyBuf)];\n case 1:\n value = _a.sent();\n valueBN = value.length ? new ethereumjs_util_1.BN(value) : new ethereumjs_util_1.BN(0);\n runState.stack.push(valueBN);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x55: SSTORE\n [\n 0x55,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, key, val, keyBuf, value, found;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n _a = __read(runState.stack.popN(2), 2), key = _a[0], val = _a[1];\n keyBuf = key.toArrayLike(Buffer, 'be', 32);\n if (val.isZero()) {\n value = Buffer.from([]);\n }\n else {\n value = val.toArrayLike(Buffer, 'be');\n }\n return [4 /*yield*/, util_1.getContractStorage(runState, runState.eei.getAddress(), keyBuf)];\n case 1:\n found = _b.sent();\n if (runState._common.hardfork() === 'constantinople') {\n EIP1283_1.updateSstoreGasEIP1283(runState, found, util_1.setLengthLeftStorage(value));\n }\n else if (runState._common.gteHardfork('istanbul')) {\n EIP2200_1.updateSstoreGasEIP2200(runState, found, util_1.setLengthLeftStorage(value), keyBuf);\n }\n else {\n util_1.updateSstoreGas(runState, found, util_1.setLengthLeftStorage(value), keyBuf);\n }\n // We have to do this after the Istanbul (EIP2200) checks.\n // Otherwise, we might run out of gas, due to \"sentry check\" of 2300 gas, if we deduct extra gas first.\n EIP2929_1.accessStorageEIP2929(runState, keyBuf, true);\n return [4 /*yield*/, runState.eei.storageStore(keyBuf, value)];\n case 2:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x56: JUMP\n [\n 0x56,\n function (runState) {\n var dest = runState.stack.pop();\n if (dest.gt(runState.eei.getCodeSize())) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n var destNum = dest.toNumber();\n if (!util_1.jumpIsValid(runState, destNum)) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n runState.programCounter = destNum;\n },\n ],\n // 0x57: JUMPI\n [\n 0x57,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), dest = _a[0], cond = _a[1];\n if (!cond.isZero()) {\n if (dest.gt(runState.eei.getCodeSize())) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n var destNum = dest.toNumber();\n if (!util_1.jumpIsValid(runState, destNum)) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n runState.programCounter = destNum;\n }\n },\n ],\n // 0x58: PC\n [\n 0x58,\n function (runState) {\n runState.stack.push(new ethereumjs_util_1.BN(runState.programCounter - 1));\n },\n ],\n // 0x59: MSIZE\n [\n 0x59,\n function (runState) {\n runState.stack.push(runState.memoryWordCount.muln(32));\n },\n ],\n // 0x5a: GAS\n [\n 0x5a,\n function (runState) {\n runState.stack.push(new ethereumjs_util_1.BN(runState.eei.getGasLeft()));\n },\n ],\n // 0x5b: JUMPDEST\n [0x5b, function () { }],\n // 0x5c: BEGINSUB\n [\n 0x5c,\n function (runState) {\n util_1.trap(exceptions_1.ERROR.INVALID_BEGINSUB + ' at ' + util_1.describeLocation(runState));\n },\n ],\n // 0x5d: RETURNSUB\n [\n 0x5d,\n function (runState) {\n if (runState.returnStack.length < 1) {\n util_1.trap(exceptions_1.ERROR.INVALID_RETURNSUB);\n }\n var dest = runState.returnStack.pop();\n runState.programCounter = dest.toNumber();\n },\n ],\n // 0x5e: JUMPSUB\n [\n 0x5e,\n function (runState) {\n var dest = runState.stack.pop();\n if (dest.gt(runState.eei.getCodeSize())) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMPSUB + ' at ' + util_1.describeLocation(runState));\n }\n var destNum = dest.toNumber();\n if (!util_1.jumpSubIsValid(runState, destNum)) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMPSUB + ' at ' + util_1.describeLocation(runState));\n }\n runState.returnStack.push(new ethereumjs_util_1.BN(runState.programCounter));\n runState.programCounter = destNum + 1;\n },\n ],\n // 0x60: PUSH\n [\n 0x60,\n function (runState) {\n var numToPush = runState.opCode - 0x5f;\n var loaded = new ethereumjs_util_1.BN(runState.eei.getCode().slice(runState.programCounter, runState.programCounter + numToPush));\n runState.programCounter += numToPush;\n runState.stack.push(loaded);\n },\n ],\n // 0x80: DUP\n [\n 0x80,\n function (runState) {\n var stackPos = runState.opCode - 0x7f;\n runState.stack.dup(stackPos);\n },\n ],\n // 0x90: SWAP\n [\n 0x90,\n function (runState) {\n var stackPos = runState.opCode - 0x8f;\n runState.stack.swap(stackPos);\n },\n ],\n // 0xa0: LOG\n [\n 0xa0,\n function (runState) {\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n var _a = __read(runState.stack.popN(2), 2), memOffset = _a[0], memLength = _a[1];\n var topicsCount = runState.opCode - 0xa0;\n if (topicsCount < 0 || topicsCount > 4) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_RANGE);\n }\n var topics = runState.stack.popN(topicsCount);\n var topicsBuf = topics.map(function (a) {\n return a.toArrayLike(Buffer, 'be', 32);\n });\n util_1.subMemUsage(runState, memOffset, memLength);\n var mem = Buffer.alloc(0);\n if (!memLength.isZero()) {\n mem = runState.memory.read(memOffset.toNumber(), memLength.toNumber());\n }\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'logTopic'))\n .imuln(topicsCount)\n .iadd(memLength.muln(runState._common.param('gasPrices', 'logData'))), 'LOG opcode');\n runState.eei.log(mem, topicsCount, topicsBuf);\n },\n ],\n // '0xf0' range - closures\n // 0xf0: CREATE\n [\n 0xf0,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, value, offset, length, gasLimit, data, ret;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n _a = __read(runState.stack.popN(3), 3), value = _a[0], offset = _a[1], length = _a[2];\n EIP2929_1.accessAddressEIP2929(runState, runState.eei.getAddress(), false);\n util_1.subMemUsage(runState, offset, length);\n gasLimit = new ethereumjs_util_1.BN(runState.eei.getGasLeft());\n gasLimit = util_1.maxCallGas(gasLimit, runState.eei.getGasLeft(), runState);\n data = Buffer.alloc(0);\n if (!length.isZero()) {\n data = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n return [4 /*yield*/, runState.eei.create(gasLimit, value, data)];\n case 1:\n ret = _b.sent();\n runState.stack.push(ret);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0xf5: CREATE2\n [\n 0xf5,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, value, offset, length, salt, gasLimit, data, ret;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n _a = __read(runState.stack.popN(4), 4), value = _a[0], offset = _a[1], length = _a[2], salt = _a[3];\n util_1.subMemUsage(runState, offset, length);\n EIP2929_1.accessAddressEIP2929(runState, runState.eei.getAddress(), false);\n // Deduct gas costs for hashing\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sha3Word')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'CREATE2 opcode');\n gasLimit = new ethereumjs_util_1.BN(runState.eei.getGasLeft());\n gasLimit = util_1.maxCallGas(gasLimit, runState.eei.getGasLeft(), runState); // CREATE2 is only available after TangerineWhistle (Constantinople introduced this opcode)\n data = Buffer.alloc(0);\n if (!length.isZero()) {\n data = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n return [4 /*yield*/, runState.eei.create2(gasLimit, value, data, salt.toArrayLike(Buffer, 'be', 32))];\n case 1:\n ret = _b.sent();\n runState.stack.push(ret);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0xf1: CALL\n [\n 0xf1,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, currentGasLimit, toAddr, value, inOffset, inLength, outOffset, outLength, toAddress, data, gasLimit, ret;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = __read(runState.stack.popN(7), 7), currentGasLimit = _a[0], toAddr = _a[1], value = _a[2], inOffset = _a[3], inLength = _a[4], outOffset = _a[5], outLength = _a[6];\n toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n if (runState.eei.isStatic() && !value.isZero()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n if (!value.isZero()) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callValueTransfer')), 'CALL opcode -> callValueTransfer');\n }\n data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n if (!runState._common.gteHardfork('spuriousDragon')) return [3 /*break*/, 2];\n return [4 /*yield*/, runState.eei.isAccountEmpty(toAddress)];\n case 1:\n // We are at or after Spurious Dragon\n // Call new account gas: account is DEAD and we transfer nonzero value\n if ((_b.sent()) && !value.isZero()) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callNewAccount')), 'CALL opcode -> callNewAccount (>= SpuriousDragon)');\n }\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, runState.eei.accountExists(toAddress)];\n case 3:\n if (!(_b.sent())) {\n // We are before Spurious Dragon and the account does not exist.\n // Call new account gas: account does not exist (it is not in the state trie, not even as an \"empty\" account)\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callNewAccount')), 'CALL opcode -> callNewAccount (< SpuriousDragon)');\n }\n _b.label = 4;\n case 4:\n gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState);\n // note that TangerineWhistle or later this cannot happen (it could have ran out of gas prior to getting here though)\n if (gasLimit.gt(runState.eei.getGasLeft())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n if (!value.isZero()) {\n // TODO: Don't use private attr directly\n runState.eei._gasLeft.iaddn(runState._common.param('gasPrices', 'callStipend'));\n gasLimit.iaddn(runState._common.param('gasPrices', 'callStipend'));\n }\n return [4 /*yield*/, runState.eei.call(gasLimit, toAddress, value, data)\n // Write return data to memory\n ];\n case 5:\n ret = _b.sent();\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0xf2: CALLCODE\n [\n 0xf2,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, currentGasLimit, toAddr, value, inOffset, inLength, outOffset, outLength, toAddress, gasLimit, data, ret;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = __read(runState.stack.popN(7), 7), currentGasLimit = _a[0], toAddr = _a[1], value = _a[2], inOffset = _a[3], inLength = _a[4], outOffset = _a[5], outLength = _a[6];\n toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n if (!value.isZero()) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callValueTransfer')), 'CALLCODE opcode -> callValueTransfer');\n }\n gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState);\n // note that TangerineWhistle or later this cannot happen (it could have ran out of gas prior to getting here though)\n if (gasLimit.gt(runState.eei.getGasLeft())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n if (!value.isZero()) {\n // TODO: Don't use private attr directly\n runState.eei._gasLeft.iaddn(runState._common.param('gasPrices', 'callStipend'));\n gasLimit.iaddn(runState._common.param('gasPrices', 'callStipend'));\n }\n data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n return [4 /*yield*/, runState.eei.callCode(gasLimit, toAddress, value, data)\n // Write return data to memory\n ];\n case 1:\n ret = _b.sent();\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0xf4: DELEGATECALL\n [\n 0xf4,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var value, _a, currentGasLimit, toAddr, inOffset, inLength, outOffset, outLength, toAddress, gasLimit, data, ret;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n value = runState.eei.getCallValue();\n _a = __read(runState.stack.popN(6), 6), currentGasLimit = _a[0], toAddr = _a[1], inOffset = _a[2], inLength = _a[3], outOffset = _a[4], outLength = _a[5];\n toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState);\n // note that TangerineWhistle or later this cannot happen (it could have ran out of gas prior to getting here though)\n if (gasLimit.gt(runState.eei.getGasLeft())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n return [4 /*yield*/, runState.eei.callDelegate(gasLimit, toAddress, value, data)\n // Write return data to memory\n ];\n case 1:\n ret = _b.sent();\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0x06: STATICCALL\n [\n 0xfa,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var value, _a, currentGasLimit, toAddr, inOffset, inLength, outOffset, outLength, toAddress, gasLimit, data, ret;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n value = new ethereumjs_util_1.BN(0);\n _a = __read(runState.stack.popN(6), 6), currentGasLimit = _a[0], toAddr = _a[1], inOffset = _a[2], inLength = _a[3], outOffset = _a[4], outLength = _a[5];\n toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState) // we set TangerineWhistle or later to true here, as STATICCALL was available from Byzantium (which is after TangerineWhistle)\n ;\n data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n return [4 /*yield*/, runState.eei.callStatic(gasLimit, toAddress, value, data)\n // Write return data to memory\n ];\n case 1:\n ret = _b.sent();\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n return [2 /*return*/];\n }\n });\n });\n },\n ],\n // 0xf3: RETURN\n [\n 0xf3,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), offset = _a[0], length = _a[1];\n util_1.subMemUsage(runState, offset, length);\n var returnData = Buffer.alloc(0);\n if (!length.isZero()) {\n returnData = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n runState.eei.finish(returnData);\n },\n ],\n // 0xfd: REVERT\n [\n 0xfd,\n function (runState) {\n var _a = __read(runState.stack.popN(2), 2), offset = _a[0], length = _a[1];\n util_1.subMemUsage(runState, offset, length);\n var returnData = Buffer.alloc(0);\n if (!length.isZero()) {\n returnData = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n runState.eei.revert(returnData);\n },\n ],\n // '0x70', range - other\n // 0xff: SELFDESTRUCT\n [\n 0xff,\n function (runState) {\n return __awaiter(this, void 0, void 0, function () {\n var selfdestructToAddressBN, selfdestructToAddress, deductGas, balance, empty, exists;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n selfdestructToAddressBN = runState.stack.pop();\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n selfdestructToAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(selfdestructToAddressBN));\n deductGas = false;\n if (!runState._common.gteHardfork('spuriousDragon')) return [3 /*break*/, 4];\n return [4 /*yield*/, runState.eei.getExternalBalance(runState.eei.getAddress())];\n case 1:\n balance = _a.sent();\n if (!balance.gtn(0)) return [3 /*break*/, 3];\n return [4 /*yield*/, runState.eei.isAccountEmpty(selfdestructToAddress)];\n case 2:\n empty = _a.sent();\n if (empty) {\n deductGas = true;\n }\n _a.label = 3;\n case 3: return [3 /*break*/, 6];\n case 4:\n if (!runState._common.gteHardfork('tangerineWhistle')) return [3 /*break*/, 6];\n return [4 /*yield*/, runState.stateManager.accountExists(selfdestructToAddress)];\n case 5:\n exists = _a.sent();\n if (!exists) {\n deductGas = true;\n }\n _a.label = 6;\n case 6:\n if (deductGas) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callNewAccount')), ' opcode');\n }\n EIP2929_1.accessAddressEIP2929(runState, selfdestructToAddress, true, true);\n return [2 /*return*/, runState.eei.selfDestruct(selfdestructToAddress)];\n }\n });\n });\n },\n ],\n]);\n// Fill in rest of PUSHn, DUPn, SWAPn, LOGn for handlers\nvar pushFn = exports.handlers.get(0x60);\nfor (var i = 0x61; i <= 0x7f; i++) {\n exports.handlers.set(i, pushFn);\n}\nvar dupFn = exports.handlers.get(0x80);\nfor (var i = 0x81; i <= 0x8f; i++) {\n exports.handlers.set(i, dupFn);\n}\nvar swapFn = exports.handlers.get(0x90);\nfor (var i = 0x91; i <= 0x9f; i++) {\n exports.handlers.set(i, swapFn);\n}\nvar logFn = exports.handlers.get(0xa0);\nfor (var i = 0xa1; i <= 0xa4; i++) {\n exports.handlers.set(i, logFn);\n}\n//# sourceMappingURL=functions.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst { keccak224, keccak384, keccak256: k256, keccak512 } = require('ethereum-cryptography/keccak');\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak224(a);\n }\n case 256: {\n return k256(a);\n }\n case 384: {\n return keccak384(a);\n }\n case 512: {\n return keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256')\n .update(a)\n .digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160')\n .update(a)\n .digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst { keccak224, keccak384, keccak256: k256, keccak512 } = require('ethereum-cryptography/keccak');\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak224(a);\n }\n case 256: {\n return k256(a);\n }\n case 384: {\n return keccak384(a);\n }\n case 512: {\n return keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256')\n .update(a)\n .digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160')\n .update(a)\n .digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst { keccak224, keccak384, keccak256: k256, keccak512 } = require('ethereum-cryptography/keccak');\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak224(a);\n }\n case 256: {\n return k256(a);\n }\n case 384: {\n return keccak384(a);\n }\n case 512: {\n return keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256')\n .update(a)\n .digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160')\n .update(a)\n .digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst { keccak224, keccak384, keccak256: k256, keccak512 } = require('ethereum-cryptography/keccak');\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak224(a);\n }\n case 256: {\n return k256(a);\n }\n case 384: {\n return keccak384(a);\n }\n case 512: {\n return keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256')\n .update(a)\n .digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160')\n .update(a)\n .digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst keccak_1 = require(\"ethereum-cryptography/keccak\");\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak_1.keccak224(a);\n }\n case 256: {\n return keccak_1.keccak256(a);\n }\n case 384: {\n return keccak_1.keccak384(a);\n }\n case 512: {\n return keccak_1.keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar crc_32_1 = require(\"crc-32\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar chains_1 = require(\"./chains\");\nvar hardforks_1 = require(\"./hardforks\");\nvar eips_1 = require(\"./eips\");\n/**\n * Common class to access chain and hardfork parameters\n */\nvar Common = /** @class */ (function (_super) {\n __extends(Common, _super);\n /**\n * @constructor\n */\n function Common(opts) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this._supportedHardforks = [];\n _this._eips = [];\n _this._customChains = (_a = opts.customChains) !== null && _a !== void 0 ? _a : [];\n _this._chainParams = _this.setChain(opts.chain);\n _this.DEFAULT_HARDFORK = (_b = _this._chainParams.defaultHardfork) !== null && _b !== void 0 ? _b : 'istanbul';\n _this._hardfork = _this.DEFAULT_HARDFORK;\n if (opts.supportedHardforks) {\n _this._supportedHardforks = opts.supportedHardforks;\n }\n if (opts.hardfork) {\n _this.setHardfork(opts.hardfork);\n }\n if (opts.eips) {\n _this.setEIPs(opts.eips);\n }\n return _this;\n }\n /**\n * Creates a Common object for a custom chain, based on a standard one. It uses all the [[Chain]]\n * params from [[baseChain]] except the ones overridden in [[customChainParams]].\n *\n * @param baseChain The name (`mainnet`) or id (`1`) of a standard chain used to base the custom\n * chain params on.\n * @param customChainParams The custom parameters of the chain.\n * @param hardfork String identifier ('byzantium') for hardfork (optional)\n * @param supportedHardforks Limit parameter returns to the given hardforks (optional)\n */\n Common.forCustomChain = function (baseChain, customChainParams, hardfork, supportedHardforks) {\n var standardChainParams = Common._getChainParams(baseChain);\n return new Common({\n chain: __assign(__assign({}, standardChainParams), customChainParams),\n hardfork: hardfork,\n supportedHardforks: supportedHardforks,\n });\n };\n Common._getChainParams = function (chain, customChains) {\n var initializedChains = chains_1._getInitializedChains(customChains);\n if (typeof chain === 'number' || ethereumjs_util_1.BN.isBN(chain)) {\n chain = chain.toString();\n if (initializedChains['names'][chain]) {\n var name_1 = initializedChains['names'][chain];\n return initializedChains[name_1];\n }\n throw new Error(\"Chain with ID \" + chain + \" not supported\");\n }\n if (initializedChains[chain]) {\n return initializedChains[chain];\n }\n throw new Error(\"Chain with name \" + chain + \" not supported\");\n };\n /**\n * Sets the chain\n * @param chain String ('mainnet') or Number (1) chain\n * representation. Or, a Dictionary of chain parameters for a private network.\n * @returns The dictionary with parameters set as chain\n */\n Common.prototype.setChain = function (chain) {\n var e_1, _a;\n if (typeof chain === 'number' || typeof chain === 'string' || ethereumjs_util_1.BN.isBN(chain)) {\n this._chainParams = Common._getChainParams(chain, this._customChains);\n }\n else if (typeof chain === 'object') {\n if (this._customChains.length > 0) {\n throw new Error('Chain must be a string, number, or BN when initialized with customChains passed in');\n }\n var required = ['networkId', 'genesis', 'hardforks', 'bootstrapNodes'];\n try {\n for (var required_1 = __values(required), required_1_1 = required_1.next(); !required_1_1.done; required_1_1 = required_1.next()) {\n var param = required_1_1.value;\n if (chain[param] === undefined) {\n throw new Error(\"Missing required chain parameter: \" + param);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (required_1_1 && !required_1_1.done && (_a = required_1.return)) _a.call(required_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this._chainParams = chain;\n }\n else {\n throw new Error('Wrong input format');\n }\n return this._chainParams;\n };\n /**\n * Sets the hardfork to get params for\n * @param hardfork String identifier (e.g. 'byzantium')\n */\n Common.prototype.setHardfork = function (hardfork) {\n var e_2, _a;\n if (!this._isSupportedHardfork(hardfork)) {\n throw new Error(\"Hardfork \" + hardfork + \" not set as supported in supportedHardforks\");\n }\n var existing = false;\n try {\n for (var HARDFORK_CHANGES_1 = __values(hardforks_1.hardforks), HARDFORK_CHANGES_1_1 = HARDFORK_CHANGES_1.next(); !HARDFORK_CHANGES_1_1.done; HARDFORK_CHANGES_1_1 = HARDFORK_CHANGES_1.next()) {\n var hfChanges = HARDFORK_CHANGES_1_1.value;\n if (hfChanges[0] === hardfork) {\n if (this._hardfork !== hardfork) {\n this._hardfork = hardfork;\n this.emit('hardforkChanged', hardfork);\n }\n existing = true;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (HARDFORK_CHANGES_1_1 && !HARDFORK_CHANGES_1_1.done && (_a = HARDFORK_CHANGES_1.return)) _a.call(HARDFORK_CHANGES_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (!existing) {\n throw new Error(\"Hardfork with name \" + hardfork + \" not supported\");\n }\n };\n /**\n * Returns the hardfork based on the block number provided\n * @param blockNumber\n * @returns The name of the HF\n */\n Common.prototype.getHardforkByBlockNumber = function (blockNumber) {\n var e_3, _a;\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n var hardfork = 'chainstart';\n try {\n for (var _b = __values(this.hardforks()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var hf = _c.value;\n // Skip comparison for not applied HFs\n if (hf.block === null) {\n continue;\n }\n if (blockNumber.gte(new ethereumjs_util_1.BN(hf.block))) {\n hardfork = hf.name;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return hardfork;\n };\n /**\n * Sets a new hardfork based on the block number provided\n * @param blockNumber\n * @returns The name of the HF set\n */\n Common.prototype.setHardforkByBlockNumber = function (blockNumber) {\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n var hardfork = this.getHardforkByBlockNumber(blockNumber);\n this.setHardfork(hardfork);\n return hardfork;\n };\n /**\n * Internal helper function to choose between hardfork set and hardfork provided as param\n * @param hardfork Hardfork given to function as a parameter\n * @returns Hardfork chosen to be used\n */\n Common.prototype._chooseHardfork = function (hardfork, onlySupported) {\n if (onlySupported === void 0) { onlySupported = true; }\n if (!hardfork) {\n hardfork = this._hardfork;\n }\n else if (onlySupported && !this._isSupportedHardfork(hardfork)) {\n throw new Error(\"Hardfork \" + hardfork + \" not set as supported in supportedHardforks\");\n }\n return hardfork;\n };\n /**\n * Internal helper function, returns the params for the given hardfork for the chain set\n * @param hardfork Hardfork name\n * @returns Dictionary with hardfork params\n */\n Common.prototype._getHardfork = function (hardfork) {\n var e_4, _a;\n var hfs = this.hardforks();\n try {\n for (var hfs_1 = __values(hfs), hfs_1_1 = hfs_1.next(); !hfs_1_1.done; hfs_1_1 = hfs_1.next()) {\n var hf = hfs_1_1.value;\n if (hf['name'] === hardfork)\n return hf;\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (hfs_1_1 && !hfs_1_1.done && (_a = hfs_1.return)) _a.call(hfs_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n throw new Error(\"Hardfork \" + hardfork + \" not defined for chain \" + this.chainName());\n };\n /**\n * Internal helper function to check if a hardfork is set to be supported by the library\n * @param hardfork Hardfork name\n * @returns True if hardfork is supported\n */\n Common.prototype._isSupportedHardfork = function (hardfork) {\n var e_5, _a;\n if (this._supportedHardforks.length > 0) {\n try {\n for (var _b = __values(this._supportedHardforks), _c = _b.next(); !_c.done; _c = _b.next()) {\n var supportedHf = _c.value;\n if (hardfork === supportedHf)\n return true;\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n else {\n return true;\n }\n return false;\n };\n /**\n * Sets the active EIPs\n * @param eips\n */\n Common.prototype.setEIPs = function (eips) {\n var e_6, _a;\n var _this = this;\n if (eips === void 0) { eips = []; }\n var _loop_1 = function (eip) {\n if (!(eip in eips_1.EIPs)) {\n throw new Error(eip + \" not supported\");\n }\n var minHF = this_1.gteHardfork(eips_1.EIPs[eip]['minimumHardfork']);\n if (!minHF) {\n throw new Error(eip + \" cannot be activated on hardfork \" + this_1.hardfork() + \", minimumHardfork: \" + minHF);\n }\n if (eips_1.EIPs[eip].requiredEIPs) {\n // eslint-disable-next-line prettier/prettier\n eips_1.EIPs[eip].requiredEIPs.forEach(function (elem) {\n if (!(eips.includes(elem) || _this.isActivatedEIP(elem))) {\n throw new Error(eip + \" requires EIP \" + elem + \", but is not included in the EIP list\");\n }\n });\n }\n };\n var this_1 = this;\n try {\n for (var eips_2 = __values(eips), eips_2_1 = eips_2.next(); !eips_2_1.done; eips_2_1 = eips_2.next()) {\n var eip = eips_2_1.value;\n _loop_1(eip);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (eips_2_1 && !eips_2_1.done && (_a = eips_2.return)) _a.call(eips_2);\n }\n finally { if (e_6) throw e_6.error; }\n }\n this._eips = eips;\n };\n /**\n * Returns a parameter for the current chain setup\n *\n * If the parameter is present in an EIP, the EIP always takes precendence.\n * Otherwise the parameter if taken from the latest applied HF with\n * a change on the respective parameter.\n *\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @returns The value requested or `null` if not found\n */\n Common.prototype.param = function (topic, name) {\n var e_7, _a;\n // TODO: consider the case that different active EIPs\n // can change the same parameter\n var value = null;\n try {\n for (var _b = __values(this._eips), _c = _b.next(); !_c.done; _c = _b.next()) {\n var eip = _c.value;\n value = this.paramByEIP(topic, name, eip);\n if (value !== null) {\n return value;\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_7) throw e_7.error; }\n }\n return this.paramByHardfork(topic, name, this._hardfork);\n };\n /**\n * Returns the parameter corresponding to a hardfork\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param hardfork Hardfork name\n * @returns The value requested or `null` if not found\n */\n Common.prototype.paramByHardfork = function (topic, name, hardfork) {\n var e_8, _a, e_9, _b;\n hardfork = this._chooseHardfork(hardfork);\n var value = null;\n try {\n for (var HARDFORK_CHANGES_2 = __values(hardforks_1.hardforks), HARDFORK_CHANGES_2_1 = HARDFORK_CHANGES_2.next(); !HARDFORK_CHANGES_2_1.done; HARDFORK_CHANGES_2_1 = HARDFORK_CHANGES_2.next()) {\n var hfChanges = HARDFORK_CHANGES_2_1.value;\n // EIP-referencing HF file (e.g. berlin.json)\n if (hfChanges[1].hasOwnProperty('eips')) { // eslint-disable-line\n var hfEIPs = hfChanges[1]['eips'];\n try {\n for (var hfEIPs_1 = (e_9 = void 0, __values(hfEIPs)), hfEIPs_1_1 = hfEIPs_1.next(); !hfEIPs_1_1.done; hfEIPs_1_1 = hfEIPs_1.next()) {\n var eip = hfEIPs_1_1.value;\n var valueEIP = this.paramByEIP(topic, name, eip);\n value = valueEIP !== null ? valueEIP : value;\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (hfEIPs_1_1 && !hfEIPs_1_1.done && (_b = hfEIPs_1.return)) _b.call(hfEIPs_1);\n }\n finally { if (e_9) throw e_9.error; }\n }\n // Paramater-inlining HF file (e.g. istanbul.json)\n }\n else {\n if (!hfChanges[1][topic]) {\n throw new Error(\"Topic \" + topic + \" not defined\");\n }\n if (hfChanges[1][topic][name] !== undefined) {\n value = hfChanges[1][topic][name].v;\n }\n }\n if (hfChanges[0] === hardfork)\n break;\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (HARDFORK_CHANGES_2_1 && !HARDFORK_CHANGES_2_1.done && (_a = HARDFORK_CHANGES_2.return)) _a.call(HARDFORK_CHANGES_2);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return value;\n };\n /**\n * Returns a parameter corresponding to an EIP\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param eip Number of the EIP\n * @returns The value requested or `null` if not found\n */\n Common.prototype.paramByEIP = function (topic, name, eip) {\n if (!(eip in eips_1.EIPs)) {\n throw new Error(eip + \" not supported\");\n }\n var eipParams = eips_1.EIPs[eip];\n if (!(topic in eipParams)) {\n throw new Error(\"Topic \" + topic + \" not defined\");\n }\n if (eipParams[topic][name] === undefined) {\n return null;\n }\n var value = eipParams[topic][name].v;\n return value;\n };\n /**\n * Returns a parameter for the hardfork active on block number\n * @param topic Parameter topic\n * @param name Parameter name\n * @param blockNumber Block number\n */\n Common.prototype.paramByBlock = function (topic, name, blockNumber) {\n var activeHfs = this.activeHardforks(blockNumber);\n var hardfork = activeHfs[activeHfs.length - 1]['name'];\n return this.paramByHardfork(topic, name, hardfork);\n };\n /**\n * Checks if an EIP is activated by either being included in the EIPs\n * manually passed in with the `eips` constructor option or in a\n * hardfork currently being active\n *\n * Note: this method only works for EIPs being supported\n * by the `eips` constructor option\n * @param eip\n */\n Common.prototype.isActivatedEIP = function (eip) {\n var e_10, _a;\n if (this.eips().includes(eip)) {\n return true;\n }\n try {\n for (var HARDFORK_CHANGES_3 = __values(hardforks_1.hardforks), HARDFORK_CHANGES_3_1 = HARDFORK_CHANGES_3.next(); !HARDFORK_CHANGES_3_1.done; HARDFORK_CHANGES_3_1 = HARDFORK_CHANGES_3.next()) {\n var hfChanges = HARDFORK_CHANGES_3_1.value;\n var hf = hfChanges[1];\n if (this.gteHardfork(hf['name']) && 'eips' in hf) {\n if (hf['eips'].includes(eip)) {\n return true;\n }\n }\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (HARDFORK_CHANGES_3_1 && !HARDFORK_CHANGES_3_1.done && (_a = HARDFORK_CHANGES_3.return)) _a.call(HARDFORK_CHANGES_3);\n }\n finally { if (e_10) throw e_10.error; }\n }\n return false;\n };\n /**\n * Checks if set or provided hardfork is active on block number\n * @param hardfork Hardfork name or null (for HF set)\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n Common.prototype.hardforkIsActiveOnBlock = function (hardfork, blockNumber, opts) {\n var _a;\n if (opts === void 0) { opts = {}; }\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n var onlySupported = (_a = opts.onlySupported) !== null && _a !== void 0 ? _a : false;\n hardfork = this._chooseHardfork(hardfork, onlySupported);\n var hfBlock = this.hardforkBlockBN(hardfork);\n if (hfBlock && blockNumber.gte(hfBlock)) {\n return true;\n }\n return false;\n };\n /**\n * Alias to hardforkIsActiveOnBlock when hardfork is set\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n Common.prototype.activeOnBlock = function (blockNumber, opts) {\n return this.hardforkIsActiveOnBlock(null, blockNumber, opts);\n };\n /**\n * Sequence based check if given or set HF1 is greater than or equal HF2\n * @param hardfork1 Hardfork name or null (if set)\n * @param hardfork2 Hardfork name\n * @param opts Hardfork options\n * @returns True if HF1 gte HF2\n */\n Common.prototype.hardforkGteHardfork = function (hardfork1, hardfork2, opts) {\n var e_11, _a;\n if (opts === void 0) { opts = {}; }\n var onlyActive = opts.onlyActive === undefined ? false : opts.onlyActive;\n hardfork1 = this._chooseHardfork(hardfork1, opts.onlySupported);\n var hardforks;\n if (onlyActive) {\n hardforks = this.activeHardforks(null, opts);\n }\n else {\n hardforks = this.hardforks();\n }\n var posHf1 = -1, posHf2 = -1;\n var index = 0;\n try {\n for (var hardforks_2 = __values(hardforks), hardforks_2_1 = hardforks_2.next(); !hardforks_2_1.done; hardforks_2_1 = hardforks_2.next()) {\n var hf = hardforks_2_1.value;\n if (hf['name'] === hardfork1)\n posHf1 = index;\n if (hf['name'] === hardfork2)\n posHf2 = index;\n index += 1;\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_1 }; }\n finally {\n try {\n if (hardforks_2_1 && !hardforks_2_1.done && (_a = hardforks_2.return)) _a.call(hardforks_2);\n }\n finally { if (e_11) throw e_11.error; }\n }\n return posHf1 >= posHf2 && posHf2 !== -1;\n };\n /**\n * Alias to hardforkGteHardfork when hardfork is set\n * @param hardfork Hardfork name\n * @param opts Hardfork options\n * @returns True if hardfork set is greater than hardfork provided\n */\n Common.prototype.gteHardfork = function (hardfork, opts) {\n return this.hardforkGteHardfork(null, hardfork, opts);\n };\n /**\n * Checks if given or set hardfork is active on the chain\n * @param hardfork Hardfork name, optional if HF set\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if hardfork is active on the chain\n */\n Common.prototype.hardforkIsActiveOnChain = function (hardfork, opts) {\n var e_12, _a;\n var _b;\n if (opts === void 0) { opts = {}; }\n var onlySupported = (_b = opts.onlySupported) !== null && _b !== void 0 ? _b : false;\n hardfork = this._chooseHardfork(hardfork, onlySupported);\n try {\n for (var _c = __values(this.hardforks()), _d = _c.next(); !_d.done; _d = _c.next()) {\n var hf = _d.value;\n if (hf['name'] === hardfork && hf['block'] !== null)\n return true;\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_12) throw e_12.error; }\n }\n return false;\n };\n /**\n * Returns the active hardfork switches for the current chain\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Array with hardfork arrays\n */\n Common.prototype.activeHardforks = function (blockNumber, opts) {\n var e_13, _a;\n if (opts === void 0) { opts = {}; }\n var activeHardforks = [];\n var hfs = this.hardforks();\n try {\n for (var hfs_2 = __values(hfs), hfs_2_1 = hfs_2.next(); !hfs_2_1.done; hfs_2_1 = hfs_2.next()) {\n var hf = hfs_2_1.value;\n if (hf['block'] === null)\n continue;\n if (blockNumber !== undefined && blockNumber !== null && blockNumber < hf['block'])\n break;\n if (opts.onlySupported && !this._isSupportedHardfork(hf['name']))\n continue;\n activeHardforks.push(hf);\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (hfs_2_1 && !hfs_2_1.done && (_a = hfs_2.return)) _a.call(hfs_2);\n }\n finally { if (e_13) throw e_13.error; }\n }\n return activeHardforks;\n };\n /**\n * Returns the latest active hardfork name for chain or block or throws if unavailable\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Hardfork name\n */\n Common.prototype.activeHardfork = function (blockNumber, opts) {\n if (opts === void 0) { opts = {}; }\n var activeHardforks = this.activeHardforks(blockNumber, opts);\n if (activeHardforks.length > 0) {\n return activeHardforks[activeHardforks.length - 1]['name'];\n }\n else {\n throw new Error(\"No (supported) active hardfork found\");\n }\n };\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number\n * @deprecated Please use hardforkBlockBN() for large number support\n */\n Common.prototype.hardforkBlock = function (hardfork) {\n return ethereumjs_util_1.toType(this.hardforkBlockBN(hardfork), ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number\n */\n Common.prototype.hardforkBlockBN = function (hardfork) {\n hardfork = this._chooseHardfork(hardfork, false);\n return new ethereumjs_util_1.BN(this._getHardfork(hardfork)['block']);\n };\n /**\n * True if block number provided is the hardfork (given or set) change block\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n Common.prototype.isHardforkBlock = function (blockNumber, hardfork) {\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n hardfork = this._chooseHardfork(hardfork, false);\n return this.hardforkBlockBN(hardfork).eq(blockNumber);\n };\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n * @deprecated Please use nextHardforkBlockBN() for large number support\n */\n Common.prototype.nextHardforkBlock = function (hardfork) {\n var block = this.nextHardforkBlockBN(hardfork);\n return block === null ? null : ethereumjs_util_1.toType(block, ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n */\n Common.prototype.nextHardforkBlockBN = function (hardfork) {\n hardfork = this._chooseHardfork(hardfork, false);\n var hfBlock = this.hardforkBlockBN(hardfork);\n // Next fork block number or null if none available\n // Logic: if accumulator is still null and on the first occurence of\n // a block greater than the current hfBlock set the accumulator,\n // pass on the accumulator as the final result from this time on\n var nextHfBlock = this.hardforks().reduce(function (acc, hf) {\n var block = new ethereumjs_util_1.BN(hf.block);\n return block.gt(hfBlock) && acc === null ? block : acc;\n }, null);\n return nextHfBlock;\n };\n /**\n * True if block number provided is the hardfork change block following the hardfork given or set\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n Common.prototype.isNextHardforkBlock = function (blockNumber, hardfork) {\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n hardfork = this._chooseHardfork(hardfork, false);\n var nextHardforkBlock = this.nextHardforkBlockBN(hardfork);\n return nextHardforkBlock === null ? false : nextHardforkBlock.eq(blockNumber);\n };\n /**\n * Internal helper function to calculate a fork hash\n * @param hardfork Hardfork name\n * @returns Fork hash as hex string\n */\n Common.prototype._calcForkHash = function (hardfork) {\n var e_14, _a;\n var genesis = Buffer.from(this.genesis().hash.substr(2), 'hex');\n var hfBuffer = Buffer.alloc(0);\n var prevBlock = 0;\n try {\n for (var _b = __values(this.hardforks()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var hf = _c.value;\n var block = hf.block;\n // Skip for chainstart (0), not applied HFs (null) and\n // when already applied on same block number HFs\n if (block !== 0 && block !== null && block !== prevBlock) {\n var hfBlockBuffer = Buffer.from(block.toString(16).padStart(16, '0'), 'hex');\n hfBuffer = Buffer.concat([hfBuffer, hfBlockBuffer]);\n }\n if (hf.name === hardfork)\n break;\n prevBlock = block;\n }\n }\n catch (e_14_1) { e_14 = { error: e_14_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_14) throw e_14.error; }\n }\n var inputBuffer = Buffer.concat([genesis, hfBuffer]);\n // CRC32 delivers result as signed (negative) 32-bit integer,\n // convert to hex string\n var forkhash = ethereumjs_util_1.intToBuffer(crc_32_1.buf(inputBuffer) >>> 0).toString('hex');\n return \"0x\" + forkhash;\n };\n /**\n * Returns an eth/64 compliant fork hash (EIP-2124)\n * @param hardfork Hardfork name, optional if HF set\n */\n Common.prototype.forkHash = function (hardfork) {\n hardfork = this._chooseHardfork(hardfork, false);\n var data = this._getHardfork(hardfork);\n if (data['block'] === null) {\n var msg = 'No fork hash calculation possible for non-applied or future hardfork';\n throw new Error(msg);\n }\n if (data['forkHash'] !== undefined) {\n return data['forkHash'];\n }\n return this._calcForkHash(hardfork);\n };\n /**\n *\n * @param forkHash Fork hash as a hex string\n * @returns Array with hardfork data (name, block, forkHash)\n */\n Common.prototype.hardforkForForkHash = function (forkHash) {\n var resArray = this.hardforks().filter(function (hf) {\n return hf.forkHash === forkHash;\n });\n return resArray.length >= 1 ? resArray[resArray.length - 1] : null;\n };\n /**\n * Returns the Genesis parameters of current chain\n * @returns Genesis dictionary\n */\n Common.prototype.genesis = function () {\n return this._chainParams['genesis'];\n };\n /**\n * Returns the hardforks for current chain\n * @returns {Array} Array with arrays of hardforks\n */\n Common.prototype.hardforks = function () {\n return this._chainParams['hardforks'];\n };\n /**\n * Returns bootstrap nodes for the current chain\n * @returns {Dictionary} Dict with bootstrap nodes\n */\n Common.prototype.bootstrapNodes = function () {\n return this._chainParams['bootstrapNodes'];\n };\n /**\n * Returns DNS networks for the current chain\n * @returns {String[]} Array of DNS ENR urls\n */\n Common.prototype.dnsNetworks = function () {\n return this._chainParams['dnsNetworks'];\n };\n /**\n * Returns the hardfork set\n * @returns Hardfork name\n */\n Common.prototype.hardfork = function () {\n return this._hardfork;\n };\n /**\n * Returns the Id of current chain\n * @returns chain Id\n * @deprecated Please use chainIdBN() for large number support\n */\n Common.prototype.chainId = function () {\n return ethereumjs_util_1.toType(this.chainIdBN(), ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the Id of current chain\n * @returns chain Id\n */\n Common.prototype.chainIdBN = function () {\n return new ethereumjs_util_1.BN(this._chainParams['chainId']);\n };\n /**\n * Returns the name of current chain\n * @returns chain name (lower case)\n */\n Common.prototype.chainName = function () {\n return this._chainParams['name'];\n };\n /**\n * Returns the Id of current network\n * @returns network Id\n * @deprecated Please use networkIdBN() for large number support\n */\n Common.prototype.networkId = function () {\n return ethereumjs_util_1.toType(this.networkIdBN(), ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the Id of current network\n * @returns network Id\n */\n Common.prototype.networkIdBN = function () {\n return new ethereumjs_util_1.BN(this._chainParams['networkId']);\n };\n /**\n * Returns the active EIPs\n * @returns List of EIPs\n */\n Common.prototype.eips = function () {\n return this._eips;\n };\n /**\n * Returns the consensus type of the network\n * Possible values: \"pow\"|\"poa\"\n */\n Common.prototype.consensusType = function () {\n return this._chainParams['consensus']['type'];\n };\n /**\n * Returns the concrete consensus implementation\n * algorithm or protocol for the network\n * e.g. \"ethash\" for \"pow\" consensus type or\n * \"clique\" for \"poa\" consensus type\n */\n Common.prototype.consensusAlgorithm = function () {\n return this._chainParams['consensus']['algorithm'];\n };\n /**\n * Returns a dictionary with consensus configuration\n * parameters based on the consensus algorithm\n *\n * Expected returns (parameters must be present in\n * the respective chain json files):\n *\n * ethash: -\n * clique: period, epoch\n * aura: -\n */\n Common.prototype.consensusConfig = function () {\n return this._chainParams['consensus'][this.consensusAlgorithm()];\n };\n /**\n * Returns a deep copy of this common instance.\n */\n Common.prototype.copy = function () {\n return Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n };\n return Common;\n}(events_1.EventEmitter));\nexports.default = Common;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst keccak_1 = require(\"ethereum-cryptography/keccak\");\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak_1.keccak224(a);\n }\n case 256: {\n return keccak_1.keccak256(a);\n }\n case 384: {\n return keccak_1.keccak384(a);\n }\n case 512: {\n return keccak_1.keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;\nconst keccak_1 = require(\"ethereum-cryptography/keccak\");\nconst createHash = require('create-hash');\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccak = function (a, bits = 256) {\n helpers_1.assertIsBuffer(a);\n switch (bits) {\n case 224: {\n return keccak_1.keccak224(a);\n }\n case 256: {\n return keccak_1.keccak256(a);\n }\n case 384: {\n return keccak_1.keccak384(a);\n }\n case 512: {\n return keccak_1.keccak512(a);\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromString = function (a, bits = 256) {\n helpers_1.assertIsString(a);\n const buf = Buffer.from(a, 'utf8');\n return exports.keccak(buf, bits);\n};\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromHexString = function (a, bits = 256) {\n helpers_1.assertIsHexString(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexports.keccakFromArray = function (a, bits = 256) {\n helpers_1.assertIsArray(a);\n return exports.keccak(bytes_1.toBuffer(a), bits);\n};\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexports.sha256 = function (a) {\n helpers_1.assertIsBuffer(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexports.sha256FromString = function (a) {\n helpers_1.assertIsString(a);\n return _sha256(a);\n};\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexports.sha256FromArray = function (a) {\n helpers_1.assertIsArray(a);\n return _sha256(a);\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n const hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return bytes_1.setLengthLeft(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n helpers_1.assertIsBuffer(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromString = function (a, padded) {\n helpers_1.assertIsString(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160FromArray = function (a, padded) {\n helpers_1.assertIsArray(a);\n return _ripemd160(a, padded);\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.stripZeros = exports.unpad = exports.setLengthRight = exports.setLength = exports.setLengthLeft = exports.zeros = void 0;\nvar ethjsUtil = require('ethjs-util');\nvar BN = require(\"bn.js\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer|Array)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer|Array)\n */\nexports.setLengthLeft = function (msg, length, right) {\n if (right === void 0) { right = false; }\n var buf = exports.zeros(length);\n msg = exports.toBuffer(msg);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\nexports.setLength = exports.setLengthLeft;\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer|Array)\n * @param length the number of bytes the output should be\n * @return (Buffer|Array)\n */\nexports.setLengthRight = function (msg, length) {\n return exports.setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer` or an `Array`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nexports.unpad = function (a) {\n a = ethjsUtil.stripHexPrefix(a);\n var first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\nexports.stripZeros = exports.unpad;\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v);\n }\n else if (typeof v === 'string') {\n if (ethjsUtil.isHexString(v)) {\n v = Buffer.from(ethjsUtil.padToEven(ethjsUtil.stripHexPrefix(v)), 'hex');\n }\n else {\n throw new Error(\"Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: \" + v);\n }\n }\n else if (typeof v === 'number') {\n v = ethjsUtil.intToBuffer(v);\n }\n else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0);\n }\n else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer);\n }\n else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray());\n }\n else {\n throw new Error('invalid type');\n }\n }\n return v;\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new BN(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new BN(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjsUtil.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return \"0x\" + ba.toString('hex');\n }\n else if (ba instanceof Array) {\n var array = [];\n for (var i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encodeLength = exports.encode = exports.digest = exports.encodeRange = exports.getLength = void 0;\nconst rlp_1 = require(\"rlp\");\nObject.defineProperty(exports, \"getLength\", { enumerable: true, get: function () { return rlp_1.getLength; } });\nconst utils_1 = require(\"@ganache/utils\");\n/**\n * Begin RLP encoding of `items`, from `start` until `length`. Call `RLP.digest` to\n * finish encoding.\n *\n * @param input\n **/\nfunction encodeRange(items, start, length) {\n let count = 0;\n const end = start + length;\n const output = [];\n for (var i = start; i < end; i++) {\n const item = items[i];\n const encoded = encode(item);\n count += encoded.length;\n output.push(encoded);\n }\n return { length: count, output };\n}\nexports.encodeRange = encodeRange;\n/**\n * Finishes encoding started by `encodeRange`.\n *\n * @param ranges\n * @returns returns a Buffer of encoded data\n */\nfunction digest(ranges, length) {\n const encodedLength = encodeLength(length, 192);\n const lengthEncodedLength = encodedLength.length;\n const buf = Buffer.allocUnsafe(lengthEncodedLength + length);\n encodedLength.copy(buf, 0, 0, lengthEncodedLength);\n let offset = lengthEncodedLength;\n for (let i = 0, l = ranges.length; i < l; i++) {\n const range = ranges[i];\n for (let j = 0, m = range.length; j < m; j++) {\n const entry = range[j];\n const size = entry.length;\n entry.copy(buf, offset, 0, size);\n offset += size;\n }\n }\n return buf;\n}\nexports.digest = digest;\n/**\n * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP\n * @param input\n * @returns returns a Buffer of encoded data\n **/\nfunction encode(input) {\n if (Array.isArray(input)) {\n let length = 0;\n const output = [];\n for (let i = 0, l = input.length; i < l; i++) {\n const enc = encode(input[i]);\n length += enc.length;\n output.push(enc);\n }\n const buf = Buffer.concat(output, length);\n const encodedLength = encodeLength(length, 192);\n return Buffer.concat([encodedLength, buf], encodedLength.length + length);\n }\n else {\n if (input == null) {\n const buf = Buffer.allocUnsafe(1);\n buf[0] = 128;\n return buf;\n }\n else {\n const length = input.length;\n if (length === 1 && input[0] < 128) {\n return input;\n }\n else {\n const encLength = encodeLength(length, 128);\n return Buffer.concat([encLength, input], encLength.length + length);\n }\n }\n }\n}\nexports.encode = encode;\nfunction encodeLength(len, offset) {\n if (len < 56) {\n const buf = Buffer.allocUnsafe(1);\n buf[0] = len + offset;\n return buf;\n }\n else {\n const hexLength = utils_1.uintToBuffer(len);\n const lLength = hexLength.length;\n const firstByte = utils_1.uintToBuffer(offset + 55 + lLength);\n return Buffer.concat([firstByte, hexLength], firstByte.length + lLength);\n }\n}\nexports.encodeLength = encodeLength;\nfunction decode(input) {\n return rlp_1.decode(input);\n}\nexports.decode = decode;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nclass Address extends utils_1.Data {\n /**\n *\n * @param value\n * @param byteLength the exact length the value represents when encoded as\n * Ethereum JSON-RPC DATA.\n */\n constructor(value) {\n super(value, Address.ByteLength);\n }\n static from(value) {\n return new Address(value);\n }\n}\nexports.Address = Address;\nAddress.ByteLength = 20;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","'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","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","'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","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","'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","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;\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","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EthereumOptionsConfig = exports.EthereumDefaults = void 0;\nconst chain_options_1 = require(\"./chain-options\");\nconst database_options_1 = require(\"./database-options\");\nconst logging_options_1 = require(\"./logging-options\");\nconst miner_options_1 = require(\"./miner-options\");\nconst wallet_options_1 = require(\"./wallet-options\");\nconst fork_options_1 = require(\"./fork-options\");\nconst options_1 = require(\"@ganache/options\");\nexports.EthereumDefaults = {\n chain: chain_options_1.ChainOptions,\n database: database_options_1.DatabaseOptions,\n logging: logging_options_1.LoggingOptions,\n miner: miner_options_1.MinerOptions,\n wallet: wallet_options_1.WalletOptions,\n fork: fork_options_1.ForkOptions\n};\nexports.EthereumOptionsConfig = new options_1.OptionsConfig(exports.EthereumDefaults);\n__exportStar(require(\"./chain-options\"), exports);\n__exportStar(require(\"./database-options\"), exports);\n__exportStar(require(\"./helpers\"), exports);\n__exportStar(require(\"./logging-options\"), exports);\n__exportStar(require(\"./miner-options\"), exports);\n__exportStar(require(\"./wallet-options\"), exports);\n__exportStar(require(\"./fork-options\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar debug_1 = require(\"debug\");\nvar semaphore_async_await_1 = __importDefault(require(\"semaphore-async-await\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar ethash_1 = __importDefault(require(\"@ethereumjs/ethash\"));\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar manager_1 = require(\"./db/manager\");\nvar helpers_1 = require(\"./db/helpers\");\nvar operation_1 = require(\"./db/operation\");\nvar clique_1 = require(\"./clique\");\nvar debug = debug_1.debug('blockchain:clique');\nvar level = require('level-mem');\n/**\n * This class stores and interacts with blocks.\n */\nvar Blockchain = /** @class */ (function () {\n /**\n * Creates new Blockchain object\n *\n * @deprecated - The direct usage of this constructor is discouraged since\n * non-finalized async initialization might lead to side effects. Please\n * use the async `Blockchain.create()` constructor instead (same API).\n *\n * @param opts - An object with the options that this constructor takes. See\n * [[BlockchainOptions]].\n */\n function Blockchain(opts) {\n if (opts === void 0) { opts = {}; }\n var _a, _b, _c;\n /**\n * Keep signer history data (signer states and votes)\n * for all block numbers >= HEAD_BLOCK - CLIQUE_SIGNER_HISTORY_BLOCK_LIMIT\n *\n * This defines a limit for reorgs on PoA clique chains.\n */\n this.CLIQUE_SIGNER_HISTORY_BLOCK_LIMIT = 100;\n /**\n * List with the latest signer states checkpointed on blocks where\n * a change (added new or removed a signer) occurred.\n *\n * Format:\n * [ [BLOCK_NUMBER_1, [SIGNER1, SIGNER 2,]], [BLOCK_NUMBER2, [SIGNER1, SIGNER3]], ...]\n *\n * The top element from the array represents the list of current signers.\n * On reorgs elements from the array are removed until BLOCK_NUMBER > REORG_BLOCK.\n *\n * Always keep at least one item on the stack.\n */\n this._cliqueLatestSignerStates = [];\n /**\n * List with the latest signer votes.\n *\n * Format:\n * [ [BLOCK_NUMBER_1, [SIGNER, BENEFICIARY, AUTH]], [BLOCK_NUMBER_1, [SIGNER, BENEFICIARY, AUTH]] ]\n * where AUTH = CLIQUE_NONCE_AUTH | CLIQUE_NONCE_DROP\n *\n * For votes all elements here must be taken into account with a\n * block number >= LAST_EPOCH_BLOCK\n * (nevertheless keep entries with blocks before EPOCH_BLOCK in case a reorg happens\n * during an epoch change)\n *\n * On reorgs elements from the array are removed until BLOCK_NUMBER > REORG_BLOCK.\n */\n this._cliqueLatestVotes = [];\n /**\n * List of signers for the last consecutive `this.cliqueSignerLimit()` blocks.\n * Kept as a snapshot for quickly checking for \"recently signed\" error.\n * Format: [ [BLOCK_NUMBER, SIGNER_ADDRESS], ...]\n *\n * On reorgs elements from the array are removed until BLOCK_NUMBER > REORG_BLOCK.\n */\n this._cliqueLatestBlockSigners = [];\n // Throw on chain or hardfork options removed in latest major release to\n // prevent implicit chain setup on a wrong chain\n if ('chain' in opts || 'hardfork' in opts) {\n throw new Error('Chain/hardfork options are not allowed any more on initialization');\n }\n if (opts.common) {\n this._common = opts.common;\n }\n else {\n var DEFAULT_CHAIN = 'mainnet';\n var DEFAULT_HARDFORK = 'chainstart';\n this._common = new common_1.default({\n chain: DEFAULT_CHAIN,\n hardfork: DEFAULT_HARDFORK,\n });\n }\n this._hardforkByHeadBlockNumber = (_a = opts.hardforkByHeadBlockNumber) !== null && _a !== void 0 ? _a : false;\n this._validateConsensus = (_b = opts.validateConsensus) !== null && _b !== void 0 ? _b : true;\n this._validateBlocks = (_c = opts.validateBlocks) !== null && _c !== void 0 ? _c : true;\n this.db = opts.db ? opts.db : level();\n this.dbManager = new manager_1.DBManager(this.db, this._common);\n if (this._validateConsensus) {\n if (this._common.consensusType() === 'pow') {\n if (this._common.consensusAlgorithm() !== 'ethash') {\n throw new Error('consensus validation only supported for pow ethash algorithm');\n }\n else {\n this._ethash = new ethash_1.default(this.db);\n }\n }\n if (this._common.consensusType() === 'poa') {\n if (this._common.consensusAlgorithm() !== 'clique') {\n throw new Error('consensus (signature) validation only supported for poa clique algorithm');\n }\n }\n }\n this._heads = {};\n this._lock = new semaphore_async_await_1.default(1);\n if (opts.genesisBlock && !opts.genesisBlock.isGenesis()) {\n throw 'supplied block is not a genesis block';\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.initPromise = this._init(opts.genesisBlock);\n }\n /**\n * Safe creation of a new Blockchain object awaiting the initialization function,\n * encouraged method to use when creating a blockchain object.\n *\n * @param opts Constructor options, see [[BlockchainOptions]]\n */\n Blockchain.create = function (opts) {\n if (opts === void 0) { opts = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var blockchain;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n blockchain = new Blockchain(opts);\n return [4 /*yield*/, blockchain.initPromise.catch(function (e) {\n throw e;\n })];\n case 1:\n _a.sent();\n return [2 /*return*/, blockchain];\n }\n });\n });\n };\n /**\n * Creates a blockchain from a list of block objects,\n * objects must be readable by the `Block.fromBlockData()` method\n *\n * @param blockData List of block objects\n * @param opts Constructor options, see [[BlockchainOptions]]\n */\n Blockchain.fromBlocksData = function (blocksData, opts) {\n if (opts === void 0) { opts = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var blockchain, blocksData_1, blocksData_1_1, blockData, block, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, Blockchain.create(opts)];\n case 1:\n blockchain = _b.sent();\n _b.label = 2;\n case 2:\n _b.trys.push([2, 7, 8, 9]);\n blocksData_1 = __values(blocksData), blocksData_1_1 = blocksData_1.next();\n _b.label = 3;\n case 3:\n if (!!blocksData_1_1.done) return [3 /*break*/, 6];\n blockData = blocksData_1_1.value;\n block = block_1.Block.fromBlockData(blockData, {\n common: blockchain._common,\n hardforkByBlockNumber: true,\n });\n return [4 /*yield*/, blockchain.putBlock(block)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n blocksData_1_1 = blocksData_1.next();\n return [3 /*break*/, 3];\n case 6: return [3 /*break*/, 9];\n case 7:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 9];\n case 8:\n try {\n if (blocksData_1_1 && !blocksData_1_1.done && (_a = blocksData_1.return)) _a.call(blocksData_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 9: return [2 /*return*/, blockchain];\n }\n });\n });\n };\n Object.defineProperty(Blockchain.prototype, \"meta\", {\n /**\n * Returns an object with metadata about the Blockchain. It's defined for\n * backwards compatibility.\n */\n get: function () {\n return {\n rawHead: this._headHeaderHash,\n heads: this._heads,\n genesis: this._genesis,\n };\n },\n enumerable: false,\n configurable: true\n });\n /**\n * This method is called in the constructor and either sets up the DB or reads\n * values from the DB and makes these available to the consumers of\n * Blockchain.\n *\n * @hidden\n */\n Blockchain.prototype._init = function (genesisBlock) {\n return __awaiter(this, void 0, void 0, function () {\n var dbGenesisBlock, genesisHash_1, error_1, common, genesisHash, dbOps_1, _a, _b, _c, heads, error_2, hash, error_3, hash, error_4, latestHeader;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 3, , 4]);\n return [4 /*yield*/, this.dbManager.numberToHash(new ethereumjs_util_1.BN(0))];\n case 1:\n genesisHash_1 = _d.sent();\n return [4 /*yield*/, this.dbManager.getBlock(genesisHash_1)];\n case 2:\n dbGenesisBlock = _d.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _d.sent();\n if (error_1.type !== 'NotFoundError') {\n throw error_1;\n }\n return [3 /*break*/, 4];\n case 4:\n if (!genesisBlock) {\n common = this._common.copy();\n common.setHardfork('chainstart');\n genesisBlock = block_1.Block.genesis({}, { common: common });\n }\n // If the DB has a genesis block, then verify that the genesis block in the\n // DB is indeed the Genesis block generated or assigned.\n if (dbGenesisBlock && !genesisBlock.hash().equals(dbGenesisBlock.hash())) {\n throw new Error('The genesis block in the DB has a different hash than the provided genesis block.');\n }\n genesisHash = genesisBlock.hash();\n if (!!dbGenesisBlock) return [3 /*break*/, 7];\n dbOps_1 = [];\n dbOps_1.push(helpers_1.DBSetTD(genesisBlock.header.difficulty.clone(), new ethereumjs_util_1.BN(0), genesisHash));\n helpers_1.DBSetBlockOrHeader(genesisBlock).map(function (op) { return dbOps_1.push(op); });\n helpers_1.DBSaveLookups(genesisHash, new ethereumjs_util_1.BN(0)).map(function (op) { return dbOps_1.push(op); });\n return [4 /*yield*/, this.dbManager.batch(dbOps_1)];\n case 5:\n _d.sent();\n if (!(this._common.consensusAlgorithm() === 'clique')) return [3 /*break*/, 7];\n return [4 /*yield*/, this.cliqueSaveGenesisSigners(genesisBlock)];\n case 6:\n _d.sent();\n _d.label = 7;\n case 7:\n if (!(this._common.consensusAlgorithm() === 'clique')) return [3 /*break*/, 11];\n _a = this;\n return [4 /*yield*/, this.dbManager.getCliqueLatestSignerStates()];\n case 8:\n _a._cliqueLatestSignerStates = _d.sent();\n _b = this;\n return [4 /*yield*/, this.dbManager.getCliqueLatestVotes()];\n case 9:\n _b._cliqueLatestVotes = _d.sent();\n _c = this;\n return [4 /*yield*/, this.dbManager.getCliqueLatestBlockSigners()];\n case 10:\n _c._cliqueLatestBlockSigners = _d.sent();\n _d.label = 11;\n case 11:\n // At this point, we can safely set genesisHash as the _genesis hash in this\n // object: it is either the one we put in the DB, or it is equal to the one\n // which we read from the DB.\n this._genesis = genesisHash;\n _d.label = 12;\n case 12:\n _d.trys.push([12, 14, , 15]);\n return [4 /*yield*/, this.dbManager.getHeads()];\n case 13:\n heads = _d.sent();\n this._heads = heads;\n return [3 /*break*/, 15];\n case 14:\n error_2 = _d.sent();\n if (error_2.type !== 'NotFoundError') {\n throw error_2;\n }\n this._heads = {};\n return [3 /*break*/, 15];\n case 15:\n _d.trys.push([15, 17, , 18]);\n return [4 /*yield*/, this.dbManager.getHeadHeader()];\n case 16:\n hash = _d.sent();\n this._headHeaderHash = hash;\n return [3 /*break*/, 18];\n case 17:\n error_3 = _d.sent();\n if (error_3.type !== 'NotFoundError') {\n throw error_3;\n }\n this._headHeaderHash = genesisHash;\n return [3 /*break*/, 18];\n case 18:\n _d.trys.push([18, 20, , 21]);\n return [4 /*yield*/, this.dbManager.getHeadBlock()];\n case 19:\n hash = _d.sent();\n this._headBlockHash = hash;\n return [3 /*break*/, 21];\n case 20:\n error_4 = _d.sent();\n if (error_4.type !== 'NotFoundError') {\n throw error_4;\n }\n this._headBlockHash = genesisHash;\n return [3 /*break*/, 21];\n case 21:\n if (!this._hardforkByHeadBlockNumber) return [3 /*break*/, 23];\n return [4 /*yield*/, this._getHeader(this._headHeaderHash)];\n case 22:\n latestHeader = _d.sent();\n this._common.setHardforkByBlockNumber(latestHeader.number);\n _d.label = 23;\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Perform the `action` function after we have initialized this module and\n * have acquired a lock\n * @param action - the action function to run after initializing and acquiring\n * a lock\n * @hidden\n */\n Blockchain.prototype.initAndLock = function (action) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initPromise];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.runWithLock(action)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Run a function after acquiring a lock. It is implied that we have already\n * initialized the module (or we are calling this from the init function, like\n * `_setCanonicalGenesisBlock`)\n * @param action - function to run after acquiring a lock\n * @hidden\n */\n Blockchain.prototype.runWithLock = function (action) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, , 3, 4]);\n return [4 /*yield*/, this._lock.acquire()];\n case 1:\n _a.sent();\n return [4 /*yield*/, action()];\n case 2:\n value = _a.sent();\n return [2 /*return*/, value];\n case 3:\n this._lock.release();\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Blockchain.prototype._requireClique = function () {\n if (this._common.consensusAlgorithm() !== 'clique') {\n throw new Error('Function call only supported for clique PoA networks');\n }\n };\n /**\n * Checks if signer was recently signed.\n * Returns true if signed too recently: more than once per `this.cliqueSignerLimit()` consecutive blocks.\n * @param header BlockHeader\n * @hidden\n */\n Blockchain.prototype.cliqueCheckRecentlySigned = function (header) {\n if (header.isGenesis() || header.number.eqn(1)) {\n // skip genesis, first block\n return false;\n }\n var limit = this.cliqueSignerLimit();\n // construct recent block signers list with this block\n var signers = this._cliqueLatestBlockSigners;\n signers = signers.slice(signers.length < limit ? 0 : 1);\n signers.push([header.number, header.cliqueSigner()]);\n var seen = signers.filter(function (s) { return s[1].equals(header.cliqueSigner()); }).length;\n return seen > 1;\n };\n /**\n * Save genesis signers to db\n * @param genesisBlock genesis block\n * @hidden\n */\n Blockchain.prototype.cliqueSaveGenesisSigners = function (genesisBlock) {\n return __awaiter(this, void 0, void 0, function () {\n var genesisSignerState;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n genesisSignerState = [\n new ethereumjs_util_1.BN(0),\n genesisBlock.header.cliqueEpochTransitionSigners(),\n ];\n return [4 /*yield*/, this.cliqueUpdateSignerStates(genesisSignerState)];\n case 1:\n _a.sent();\n debug(\"[Block 0] Genesis block -> update signer states\");\n return [4 /*yield*/, this.cliqueUpdateVotes()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Save signer state to db\n * @param signerState\n * @hidden\n */\n Blockchain.prototype.cliqueUpdateSignerStates = function (signerState) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var dbOps, limit, blockSigners, lastBlockNumber, blockLimit_1, states, lastItem, formatted, i, _b, _c, signer;\n var e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n dbOps = [];\n if (signerState) {\n this._cliqueLatestSignerStates.push(signerState);\n }\n limit = this.CLIQUE_SIGNER_HISTORY_BLOCK_LIMIT;\n blockSigners = this._cliqueLatestBlockSigners;\n lastBlockNumber = (_a = blockSigners[blockSigners.length - 1]) === null || _a === void 0 ? void 0 : _a[0];\n if (lastBlockNumber) {\n blockLimit_1 = lastBlockNumber.subn(limit);\n states = this._cliqueLatestSignerStates;\n lastItem = states[states.length - 1];\n this._cliqueLatestSignerStates = states.filter(function (state) { return state[0].gte(blockLimit_1); });\n if (this._cliqueLatestSignerStates.length === 0) {\n // always keep at least one item on the stack\n this._cliqueLatestSignerStates.push(lastItem);\n }\n }\n formatted = this._cliqueLatestSignerStates.map(function (state) { return [\n state[0].toBuffer(),\n state[1].map(function (a) { return a.toBuffer(); }),\n ]; });\n dbOps.push(helpers_1.DBOp.set(operation_1.DBTarget.CliqueSignerStates, ethereumjs_util_1.rlp.encode(formatted)));\n return [4 /*yield*/, this.dbManager.batch(dbOps)\n // Output active signers for debugging purposes\n ];\n case 1:\n _e.sent();\n i = 0;\n try {\n for (_b = __values(this.cliqueActiveSigners()), _c = _b.next(); !_c.done; _c = _b.next()) {\n signer = _c.value;\n debug(\"Clique signer [\" + i + \"]: \" + signer);\n i++;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_d = _b.return)) _d.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Update clique votes and save to db\n * @param header BlockHeader\n * @hidden\n */\n Blockchain.prototype.cliqueUpdateVotes = function (header) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var signer_1, beneficiary_1, nonce, latestVote, _loop_1, this_1, round, state_1, limit, blockSigners, lastBlockNumber, lastEpochBlockNumber, blockLimit_2, dbOps, formatted;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(header && !header.coinbase.isZero())) return [3 /*break*/, 4];\n signer_1 = header.cliqueSigner();\n beneficiary_1 = header.coinbase;\n nonce = header.nonce;\n latestVote = [header.number, [signer_1, beneficiary_1, nonce]];\n _loop_1 = function (round) {\n var lastEpochBlockNumber, limit_1, activeSigners, consensus, votes, beneficiaryVotesAUTH, _loop_2, votes_1, votes_1_1, vote, numBeneficiaryVotesAUTH, beneficiaryVotesDROP, _loop_3, votes_2, votes_2_1, vote, numBeneficiaryVotesDROP, newSignerState;\n var e_3, _a, e_4, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n lastEpochBlockNumber = header.number.sub(header.number.mod(new ethereumjs_util_1.BN(this_1._common.consensusConfig().epoch)));\n limit_1 = this_1.cliqueSignerLimit();\n activeSigners = this_1.cliqueActiveSigners();\n consensus = false;\n votes = this_1._cliqueLatestVotes.filter(function (vote) {\n return (vote[0].gte(lastEpochBlockNumber) &&\n !vote[1][0].equals(signer_1) &&\n vote[1][1].equals(beneficiary_1) &&\n vote[1][2].equals(clique_1.CLIQUE_NONCE_AUTH));\n });\n beneficiaryVotesAUTH = [];\n _loop_2 = function (vote) {\n var num = beneficiaryVotesAUTH.filter(function (voteCMP) {\n return voteCMP.equals(vote[1][0]);\n }).length;\n if (num === 0) {\n beneficiaryVotesAUTH.push(vote[1][0]);\n }\n };\n try {\n for (votes_1 = (e_3 = void 0, __values(votes)), votes_1_1 = votes_1.next(); !votes_1_1.done; votes_1_1 = votes_1.next()) {\n vote = votes_1_1.value;\n _loop_2(vote);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (votes_1_1 && !votes_1_1.done && (_a = votes_1.return)) _a.call(votes_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n numBeneficiaryVotesAUTH = beneficiaryVotesAUTH.length;\n if (round === 2 && nonce.equals(clique_1.CLIQUE_NONCE_AUTH)) {\n numBeneficiaryVotesAUTH += 1;\n }\n // Majority consensus\n if (numBeneficiaryVotesAUTH >= limit_1) {\n consensus = true;\n // Authorize new signer\n activeSigners.push(beneficiary_1);\n activeSigners.sort(function (a, b) {\n // Sort by buffer size\n return a.toBuffer().compare(b.toBuffer());\n });\n // Discard votes for added signer\n this_1._cliqueLatestVotes = this_1._cliqueLatestVotes.filter(function (vote) { return !vote[1][1].equals(beneficiary_1); });\n debug(\"[Block \" + header.number.toNumber() + \"] Clique majority consensus (AUTH \" + beneficiary_1 + \")\");\n }\n // DROP vote\n votes = this_1._cliqueLatestVotes.filter(function (vote) {\n return (vote[0].gte(lastEpochBlockNumber) &&\n !vote[1][0].equals(signer_1) &&\n vote[1][1].equals(beneficiary_1) &&\n vote[1][2].equals(clique_1.CLIQUE_NONCE_DROP));\n });\n beneficiaryVotesDROP = [];\n _loop_3 = function (vote) {\n var num = beneficiaryVotesDROP.filter(function (voteCMP) {\n return voteCMP.equals(vote[1][0]);\n }).length;\n if (num === 0) {\n beneficiaryVotesDROP.push(vote[1][0]);\n }\n };\n try {\n for (votes_2 = (e_4 = void 0, __values(votes)), votes_2_1 = votes_2.next(); !votes_2_1.done; votes_2_1 = votes_2.next()) {\n vote = votes_2_1.value;\n _loop_3(vote);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (votes_2_1 && !votes_2_1.done && (_b = votes_2.return)) _b.call(votes_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n numBeneficiaryVotesDROP = beneficiaryVotesDROP.length;\n if (round === 2 && nonce.equals(clique_1.CLIQUE_NONCE_DROP)) {\n numBeneficiaryVotesDROP += 1;\n }\n // Majority consensus\n if (numBeneficiaryVotesDROP >= limit_1) {\n consensus = true;\n // Drop signer\n activeSigners = activeSigners.filter(function (signer) { return !signer.equals(beneficiary_1); });\n this_1._cliqueLatestVotes = this_1._cliqueLatestVotes.filter(\n // Discard votes from removed signer and for removed signer\n function (vote) { return !vote[1][0].equals(beneficiary_1) && !vote[1][1].equals(beneficiary_1); });\n debug(\"[Block \" + header.number.toNumber() + \"] Clique majority consensus (DROP \" + beneficiary_1 + \")\");\n }\n if (round === 1) {\n // Always add the latest vote to the history no matter if already voted\n // the same vote or not\n this_1._cliqueLatestVotes.push(latestVote);\n debug(\"[Block \" + header.number.toNumber() + \"] New clique vote: \" + signer_1 + \" -> \" + beneficiary_1 + \" \" + (nonce.equals(clique_1.CLIQUE_NONCE_AUTH) ? 'AUTH' : 'DROP'));\n }\n if (!consensus) return [3 /*break*/, 2];\n if (round === 1) {\n debug(\"[Block \" + header.number.toNumber() + \"] Clique majority consensus on existing votes -> update signer states\");\n }\n else {\n debug(\"[Block \" + header.number.toNumber() + \"] Clique majority consensus on new vote -> update signer states\");\n }\n newSignerState = [header.number, activeSigners];\n return [4 /*yield*/, this_1.cliqueUpdateSignerStates(newSignerState)];\n case 1:\n _c.sent();\n return [2 /*return*/, { value: void 0 }];\n case 2: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n round = 1;\n _b.label = 1;\n case 1:\n if (!(round <= 2)) return [3 /*break*/, 4];\n return [5 /*yield**/, _loop_1(round)];\n case 2:\n state_1 = _b.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n _b.label = 3;\n case 3:\n round++;\n return [3 /*break*/, 1];\n case 4:\n limit = this.CLIQUE_SIGNER_HISTORY_BLOCK_LIMIT;\n blockSigners = this._cliqueLatestBlockSigners;\n lastBlockNumber = (_a = blockSigners[blockSigners.length - 1]) === null || _a === void 0 ? void 0 : _a[0];\n if (lastBlockNumber) {\n lastEpochBlockNumber = lastBlockNumber.sub(lastBlockNumber.mod(new ethereumjs_util_1.BN(this._common.consensusConfig().epoch)));\n blockLimit_2 = lastEpochBlockNumber.subn(limit);\n this._cliqueLatestVotes = this._cliqueLatestVotes.filter(function (state) { return state[0].gte(blockLimit_2); });\n }\n dbOps = [];\n formatted = this._cliqueLatestVotes.map(function (v) { return [\n v[0].toBuffer(),\n [v[1][0].toBuffer(), v[1][1].toBuffer(), v[1][2]],\n ]; });\n dbOps.push(helpers_1.DBOp.set(operation_1.DBTarget.CliqueVotes, ethereumjs_util_1.rlp.encode(formatted)));\n return [4 /*yield*/, this.dbManager.batch(dbOps)];\n case 5:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Update snapshot of latest clique block signers.\n * Used for checking for 'recently signed' error.\n * Length trimmed to `this.cliqueSignerLimit()`.\n * @param header BlockHeader\n * @hidden\n */\n Blockchain.prototype.cliqueUpdateLatestBlockSigners = function (header) {\n return __awaiter(this, void 0, void 0, function () {\n var dbOps, signer, length_1, limit, formatted;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n dbOps = [];\n if (header) {\n if (header.isGenesis()) {\n return [2 /*return*/];\n }\n signer = [header.number, header.cliqueSigner()];\n this._cliqueLatestBlockSigners.push(signer);\n length_1 = this._cliqueLatestBlockSigners.length;\n limit = this.cliqueSignerLimit();\n if (length_1 > limit) {\n this._cliqueLatestBlockSigners = this._cliqueLatestBlockSigners.slice(length_1 - limit, length_1);\n }\n }\n formatted = this._cliqueLatestBlockSigners.map(function (b) { return [b[0].toBuffer(), b[1].toBuffer()]; });\n dbOps.push(helpers_1.DBOp.set(operation_1.DBTarget.CliqueBlockSigners, ethereumjs_util_1.rlp.encode(formatted)));\n return [4 /*yield*/, this.dbManager.batch(dbOps)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns a list with the current block signers\n * (only clique PoA, throws otherwise)\n */\n Blockchain.prototype.cliqueActiveSigners = function () {\n this._requireClique();\n var signers = this._cliqueLatestSignerStates;\n return __spread(signers[signers.length - 1][1]);\n };\n /**\n * Number of consecutive blocks out of which a signer may only sign one.\n * Defined as `Math.floor(SIGNER_COUNT / 2) + 1` to enforce majority consensus.\n * signer count -> signer limit:\n * 1 -> 1, 2 -> 2, 3 -> 2, 4 -> 2, 5 -> 3, ...\n * @hidden\n */\n Blockchain.prototype.cliqueSignerLimit = function () {\n return Math.floor(this.cliqueActiveSigners().length / 2) + 1;\n };\n /**\n * Returns the specified iterator head.\n *\n * This function replaces the old `getHead()` method. Note that\n * the function deviates from the old behavior and returns the\n * genesis hash instead of the current head block if an iterator\n * has not been run. This matches the behavior of the `iterator()`\n * method.\n *\n * @param name - Optional name of the iterator head (default: 'vm')\n */\n Blockchain.prototype.getIteratorHead = function (name) {\n if (name === void 0) { name = 'vm'; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var hash, block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n hash = this._heads[name] || this._genesis;\n if (!hash) {\n throw new Error('No head found.');\n }\n return [4 /*yield*/, this._getBlock(hash)];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block];\n }\n });\n }); })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Returns the specified iterator head.\n *\n * @param name - Optional name of the iterator head (default: 'vm')\n *\n * @deprecated use `getIteratorHead()` instead. Note that `getIteratorHead()`\n * doesn't return the `headHeader` but the genesis hash as an initial\n * iterator head value (now matching the behavior of the `iterator()`\n * method on a first run)\n */\n Blockchain.prototype.getHead = function (name) {\n if (name === void 0) { name = 'vm'; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var hash, block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n hash = this._heads[name] || this._headBlockHash;\n if (!hash) {\n throw new Error('No head found.');\n }\n return [4 /*yield*/, this._getBlock(hash)];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block];\n }\n });\n }); })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Returns the latest header in the canonical chain.\n */\n Blockchain.prototype.getLatestHeader = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._headHeaderHash) {\n throw new Error('No head header set');\n }\n return [4 /*yield*/, this._getBlock(this._headHeaderHash)];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block.header];\n }\n });\n }); })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Returns the latest full block in the canonical chain.\n */\n Blockchain.prototype.getLatestBlock = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var block;\n return __generator(this, function (_a) {\n if (!this._headBlockHash) {\n throw new Error('No head block set');\n }\n block = this._getBlock(this._headBlockHash);\n return [2 /*return*/, block];\n });\n }); })];\n });\n });\n };\n /**\n * Adds blocks to the blockchain.\n *\n * If an invalid block is met the function will throw, blocks before will\n * nevertheless remain in the DB. If any of the saved blocks has a higher\n * total difficulty than the current max total difficulty the canonical\n * chain is rebuilt and any stale heads/hashes are overwritten.\n * @param blocks - The blocks to be added to the blockchain\n */\n Blockchain.prototype.putBlocks = function (blocks) {\n return __awaiter(this, void 0, void 0, function () {\n var i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initPromise];\n case 1:\n _a.sent();\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < blocks.length)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.putBlock(blocks[i])];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Adds a block to the blockchain.\n *\n * If the block is valid and has a higher total difficulty than the current\n * max total difficulty, the canonical chain is rebuilt and any stale\n * heads/hashes are overwritten.\n * @param block - The block to be added to the blockchain\n */\n Blockchain.prototype.putBlock = function (block) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initPromise];\n case 1:\n _a.sent();\n return [4 /*yield*/, this._putBlockOrHeader(block)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Adds many headers to the blockchain.\n *\n * If an invalid header is met the function will throw, headers before will\n * nevertheless remain in the DB. If any of the saved headers has a higher\n * total difficulty than the current max total difficulty the canonical\n * chain is rebuilt and any stale heads/hashes are overwritten.\n * @param headers - The headers to be added to the blockchain\n */\n Blockchain.prototype.putHeaders = function (headers) {\n return __awaiter(this, void 0, void 0, function () {\n var i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initPromise];\n case 1:\n _a.sent();\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < headers.length)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.putHeader(headers[i])];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Adds a header to the blockchain.\n *\n * If this header is valid and it has a higher total difficulty than the current\n * max total difficulty, the canonical chain is rebuilt and any stale\n * heads/hashes are overwritten.\n * @param header - The header to be added to the blockchain\n */\n Blockchain.prototype.putHeader = function (header) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initPromise];\n case 1:\n _a.sent();\n return [4 /*yield*/, this._putBlockOrHeader(header)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Entrypoint for putting any block or block header. Verifies this block,\n * checks the total TD: if this TD is higher than the current highest TD, we\n * have thus found a new canonical block and have to rewrite the canonical\n * chain. This also updates the head block hashes. If any of the older known\n * canonical chains just became stale, then we also reset every _heads header\n * which points to a stale header to the last verified header which was in the\n * old canonical chain, but also in the new canonical chain. This thus rolls\n * back these headers so that these can be updated to the \"new\" canonical\n * header using the iterator method.\n * @hidden\n */\n Blockchain.prototype._putBlockOrHeader = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.runWithLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var block, isGenesis, header, blockHash, blockNumber, td, currentTd, dbOps, valid, valid, checkpointSigners, activeSigners, _a, _b, _c, i, cSigner, _d, _e, parentTd, ops;\n var e_5, _f;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n block = item instanceof block_1.BlockHeader\n ? new block_1.Block(item, undefined, undefined, {\n common: this._common,\n hardforkByBlockNumber: true,\n })\n : item;\n isGenesis = block.isGenesis();\n // we cannot overwrite the Genesis block after initializing the Blockchain\n if (isGenesis) {\n throw new Error('Cannot put a genesis block: create a new Blockchain');\n }\n header = block.header;\n blockHash = header.hash();\n blockNumber = header.number;\n td = header.difficulty.clone();\n currentTd = { header: new ethereumjs_util_1.BN(0), block: new ethereumjs_util_1.BN(0) };\n dbOps = [];\n if (!block._common.chainIdBN().eq(this._common.chainIdBN())) {\n throw new Error('Chain mismatch while trying to put block or header');\n }\n if (!(this._validateBlocks && !isGenesis)) return [3 /*break*/, 2];\n // this calls into `getBlock`, which is why we cannot lock yet\n return [4 /*yield*/, block.validate(this)];\n case 1:\n // this calls into `getBlock`, which is why we cannot lock yet\n _g.sent();\n _g.label = 2;\n case 2:\n if (!this._validateConsensus) return [3 /*break*/, 5];\n if (!(this._common.consensusAlgorithm() === 'ethash')) return [3 /*break*/, 4];\n return [4 /*yield*/, this._ethash.verifyPOW(block)];\n case 3:\n valid = _g.sent();\n if (!valid) {\n throw new Error('invalid POW');\n }\n _g.label = 4;\n case 4:\n if (this._common.consensusAlgorithm() === 'clique') {\n valid = header.cliqueVerifySignature(this.cliqueActiveSigners());\n if (!valid) {\n throw new Error('invalid PoA block signature (clique)');\n }\n if (this.cliqueCheckRecentlySigned(header)) {\n throw new Error('recently signed');\n }\n }\n _g.label = 5;\n case 5:\n if (this._common.consensusAlgorithm() === 'clique') {\n // validate checkpoint signers towards active signers on epoch transition blocks\n if (header.cliqueIsEpochTransition()) {\n checkpointSigners = header.cliqueEpochTransitionSigners();\n activeSigners = this.cliqueActiveSigners();\n try {\n for (_a = __values(checkpointSigners.entries()), _b = _a.next(); !_b.done; _b = _a.next()) {\n _c = __read(_b.value, 2), i = _c[0], cSigner = _c[1];\n if (!activeSigners[i] || !activeSigners[i].equals(cSigner)) {\n throw new Error(\"checkpoint signer not found in active signers list at index \" + i + \": \" + cSigner.toString());\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_f = _a.return)) _f.call(_a);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n }\n if (!this._headHeaderHash) return [3 /*break*/, 7];\n _d = currentTd;\n return [4 /*yield*/, this.getTotalDifficulty(this._headHeaderHash)];\n case 6:\n _d.header = _g.sent();\n _g.label = 7;\n case 7:\n if (!this._headBlockHash) return [3 /*break*/, 9];\n _e = currentTd;\n return [4 /*yield*/, this.getTotalDifficulty(this._headBlockHash)];\n case 8:\n _e.block = _g.sent();\n _g.label = 9;\n case 9:\n parentTd = new ethereumjs_util_1.BN(0);\n if (!!block.isGenesis()) return [3 /*break*/, 11];\n return [4 /*yield*/, this.getTotalDifficulty(header.parentHash, blockNumber.subn(1))];\n case 10:\n parentTd = _g.sent();\n _g.label = 11;\n case 11:\n td.iadd(parentTd);\n // save total difficulty to the database\n dbOps = dbOps.concat(helpers_1.DBSetTD(td, blockNumber, blockHash));\n // save header/block to the database\n dbOps = dbOps.concat(helpers_1.DBSetBlockOrHeader(block));\n if (!(block.isGenesis() ||\n (this._common.consensusType() === 'pow' && td.gt(currentTd.header)) ||\n this._common.consensusType() === 'poa')) return [3 /*break*/, 18];\n this._headHeaderHash = blockHash;\n if (item instanceof block_1.Block) {\n this._headBlockHash = blockHash;\n }\n if (this._hardforkByHeadBlockNumber) {\n this._common.setHardforkByBlockNumber(blockNumber);\n }\n // TODO SET THIS IN CONSTRUCTOR\n if (block.isGenesis()) {\n this._genesis = blockHash;\n }\n if (!(this._common.consensusAlgorithm() === 'clique')) return [3 /*break*/, 15];\n if (!!header.cliqueIsEpochTransition()) return [3 /*break*/, 13];\n return [4 /*yield*/, this.cliqueUpdateVotes(header)];\n case 12:\n _g.sent();\n _g.label = 13;\n case 13: return [4 /*yield*/, this.cliqueUpdateLatestBlockSigners(header)];\n case 14:\n _g.sent();\n _g.label = 15;\n case 15: \n // delete higher number assignments and overwrite stale canonical chain\n return [4 /*yield*/, this._deleteCanonicalChainReferences(blockNumber.addn(1), blockHash, dbOps)\n // from the current header block, check the blockchain in reverse (i.e.\n // traverse `parentHash`) until `numberToHash` matches the current\n // number/hash in the canonical chain also: overwrite any heads if these\n // heads are stale in `_heads` and `_headBlockHash`\n ];\n case 16:\n // delete higher number assignments and overwrite stale canonical chain\n _g.sent();\n // from the current header block, check the blockchain in reverse (i.e.\n // traverse `parentHash`) until `numberToHash` matches the current\n // number/hash in the canonical chain also: overwrite any heads if these\n // heads are stale in `_heads` and `_headBlockHash`\n return [4 /*yield*/, this._rebuildCanonical(header, dbOps)];\n case 17:\n // from the current header block, check the blockchain in reverse (i.e.\n // traverse `parentHash`) until `numberToHash` matches the current\n // number/hash in the canonical chain also: overwrite any heads if these\n // heads are stale in `_heads` and `_headBlockHash`\n _g.sent();\n return [3 /*break*/, 19];\n case 18:\n // the TD is lower than the current highest TD so we will add the block\n // to the DB, but will not mark it as the canonical chain.\n if (td.gt(currentTd.block) && item instanceof block_1.Block) {\n this._headBlockHash = blockHash;\n }\n // save hash to number lookup info even if rebuild not needed\n dbOps.push(helpers_1.DBSetHashToNumber(blockHash, blockNumber));\n _g.label = 19;\n case 19:\n ops = dbOps.concat(this._saveHeadOps());\n return [4 /*yield*/, this.dbManager.batch(ops)];\n case 20:\n _g.sent();\n return [2 /*return*/];\n }\n });\n }); })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets a block by its hash.\n *\n * @param blockId - The block's hash or number. If a hash is provided, then\n * this will be immediately looked up, otherwise it will wait until we have\n * unlocked the DB\n */\n Blockchain.prototype.getBlock = function (blockId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: \n // cannot wait for a lock here: it is used both in `validate` of `Block`\n // (calls `getBlock` to get `parentHash`) it is also called from `runBlock`\n // in the `VM` if we encounter a `BLOCKHASH` opcode: then a BN is used we\n // need to then read the block from the canonical chain Q: is this safe? We\n // know it is OK if we call it from the iterator... (runBlock)\n return [4 /*yield*/, this.initPromise];\n case 1:\n // cannot wait for a lock here: it is used both in `validate` of `Block`\n // (calls `getBlock` to get `parentHash`) it is also called from `runBlock`\n // in the `VM` if we encounter a `BLOCKHASH` opcode: then a BN is used we\n // need to then read the block from the canonical chain Q: is this safe? We\n // know it is OK if we call it from the iterator... (runBlock)\n _a.sent();\n return [4 /*yield*/, this._getBlock(blockId)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * @hidden\n */\n Blockchain.prototype._getBlock = function (blockId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.dbManager.getBlock(blockId)];\n });\n });\n };\n /**\n * Gets total difficulty for a block specified by hash and number\n */\n Blockchain.prototype.getTotalDifficulty = function (hash, number) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!number) return [3 /*break*/, 2];\n return [4 /*yield*/, this.dbManager.hashToNumber(hash)];\n case 1:\n number = _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, this.dbManager.getTotalDifficulty(hash, number)];\n }\n });\n });\n };\n /**\n * Looks up many blocks relative to blockId Note: due to `GetBlockHeaders\n * (0x03)` (ETH wire protocol) we have to support skip/reverse as well.\n * @param blockId - The block's hash or number\n * @param maxBlocks - Max number of blocks to return\n * @param skip - Number of blocks to skip apart\n * @param reverse - Fetch blocks in reverse\n */\n Blockchain.prototype.getBlocks = function (blockId, maxBlocks, skip, reverse) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var blocks, i, nextBlock;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n blocks = [];\n i = -1;\n nextBlock = function (blockId) { return __awaiter(_this, void 0, void 0, function () {\n var block, error_5, nextBlockNumber;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this._getBlock(blockId)];\n case 1:\n block = _a.sent();\n return [3 /*break*/, 3];\n case 2:\n error_5 = _a.sent();\n if (error_5.type !== 'NotFoundError') {\n throw error_5;\n }\n return [2 /*return*/];\n case 3:\n i++;\n nextBlockNumber = block.header.number.addn(reverse ? -1 : 1);\n if (!(i !== 0 && skip && i % (skip + 1) !== 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, nextBlock(nextBlockNumber)];\n case 4: return [2 /*return*/, _a.sent()];\n case 5:\n blocks.push(block);\n if (!(blocks.length < maxBlocks)) return [3 /*break*/, 7];\n return [4 /*yield*/, nextBlock(nextBlockNumber)];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [2 /*return*/];\n }\n });\n }); };\n return [4 /*yield*/, nextBlock(blockId)];\n case 1:\n _a.sent();\n return [2 /*return*/, blocks];\n }\n });\n }); })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Given an ordered array, returns an array of hashes that are not in the\n * blockchain yet. Uses binary search to find out what hashes are missing.\n * Therefore, the array needs to be ordered upon number.\n * @param hashes - Ordered array of hashes (ordered on `number`).\n */\n Blockchain.prototype.selectNeededHashes = function (hashes) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var max, mid, min, number, error_6;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n max = hashes.length - 1;\n mid = min = 0;\n _a.label = 1;\n case 1:\n if (!(max >= min)) return [3 /*break*/, 6];\n number = void 0;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.dbManager.hashToNumber(hashes[mid])];\n case 3:\n number = _a.sent();\n return [3 /*break*/, 5];\n case 4:\n error_6 = _a.sent();\n if (error_6.type !== 'NotFoundError') {\n throw error_6;\n }\n return [3 /*break*/, 5];\n case 5:\n if (number) {\n min = mid + 1;\n }\n else {\n max = mid - 1;\n }\n mid = Math.floor((min + max) / 2);\n return [3 /*break*/, 1];\n case 6: return [2 /*return*/, hashes.slice(min)];\n }\n });\n }); })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Completely deletes a block from the blockchain including any references to\n * this block. If this block was in the canonical chain, then also each child\n * block of this block is deleted Also, if this was a canonical block, each\n * head header which is part of this now stale chain will be set to the\n * parentHeader of this block An example reason to execute is when running the\n * block in the VM invalidates this block: this will then reset the canonical\n * head to the past block (which has been validated in the past by the VM, so\n * we can be sure it is correct).\n * @param blockHash - The hash of the block to be deleted\n */\n Blockchain.prototype.delBlock = function (blockHash) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: \n // Q: is it safe to make this not wait for a lock? this is called from\n // `runBlockchain` in case `runBlock` throws (i.e. the block is invalid).\n // But is this the way to go? If we know this is called from the\n // iterator/runBlockchain we are safe, but if this is called from anywhere\n // else then this might lead to a concurrency problem?\n return [4 /*yield*/, this.initPromise];\n case 1:\n // Q: is it safe to make this not wait for a lock? this is called from\n // `runBlockchain` in case `runBlock` throws (i.e. the block is invalid).\n // But is this the way to go? If we know this is called from the\n // iterator/runBlockchain we are safe, but if this is called from anywhere\n // else then this might lead to a concurrency problem?\n _a.sent();\n return [4 /*yield*/, this._delBlock(blockHash)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @hidden\n */\n Blockchain.prototype._delBlock = function (blockHash) {\n return __awaiter(this, void 0, void 0, function () {\n var dbOps, header, blockHeader, blockNumber, parentHash, canonicalHash, inCanonical;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n dbOps = [];\n return [4 /*yield*/, this._getHeader(blockHash)];\n case 1:\n header = _a.sent();\n blockHeader = header;\n blockNumber = blockHeader.number;\n parentHash = blockHeader.parentHash;\n return [4 /*yield*/, this.safeNumberToHash(blockNumber)];\n case 2:\n canonicalHash = _a.sent();\n inCanonical = !!canonicalHash && canonicalHash.equals(blockHash);\n // delete the block, and if block is in the canonical chain, delete all\n // children as well\n return [4 /*yield*/, this._delChild(blockHash, blockNumber, inCanonical ? parentHash : null, dbOps)\n // delete all number to hash mappings for deleted block number and above\n ];\n case 3:\n // delete the block, and if block is in the canonical chain, delete all\n // children as well\n _a.sent();\n if (!inCanonical) return [3 /*break*/, 5];\n return [4 /*yield*/, this._deleteCanonicalChainReferences(blockNumber, parentHash, dbOps)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [4 /*yield*/, this.dbManager.batch(dbOps)];\n case 6:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates the `DatabaseOperation` list to delete a block from the DB,\n * identified by `blockHash` and `blockNumber`. Deletes fields from `Header`,\n * `Body`, `HashToNumber` and `TotalDifficulty` tables. If child blocks of\n * this current block are in the canonical chain, delete these as well. Does\n * not actually commit these changes to the DB. Sets `_headHeaderHash` and\n * `_headBlockHash` to `headHash` if any of these matches the current child to\n * be deleted.\n * @param blockHash - the block hash to delete\n * @param blockNumber - the number corresponding to the block hash\n * @param headHash - the current head of the chain (if null, do not update\n * `_headHeaderHash` and `_headBlockHash`)\n * @param ops - the `DatabaseOperation` list to add the delete operations to\n * @hidden\n */\n Blockchain.prototype._delChild = function (blockHash, blockNumber, headHash, ops) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var childHeader, error_7;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n // delete header, body, hash to number mapping and td\n ops.push(helpers_1.DBOp.del(operation_1.DBTarget.Header, { blockHash: blockHash, blockNumber: blockNumber }));\n ops.push(helpers_1.DBOp.del(operation_1.DBTarget.Body, { blockHash: blockHash, blockNumber: blockNumber }));\n ops.push(helpers_1.DBOp.del(operation_1.DBTarget.HashToNumber, { blockHash: blockHash }));\n ops.push(helpers_1.DBOp.del(operation_1.DBTarget.TotalDifficulty, { blockHash: blockHash, blockNumber: blockNumber }));\n if (!headHash) {\n return [2 /*return*/];\n }\n if ((_a = this._headHeaderHash) === null || _a === void 0 ? void 0 : _a.equals(blockHash)) {\n this._headHeaderHash = headHash;\n }\n if ((_b = this._headBlockHash) === null || _b === void 0 ? void 0 : _b.equals(blockHash)) {\n this._headBlockHash = headHash;\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 4, , 5]);\n return [4 /*yield*/, this._getCanonicalHeader(blockNumber.addn(1))];\n case 2:\n childHeader = _c.sent();\n return [4 /*yield*/, this._delChild(childHeader.hash(), childHeader.number, headHash, ops)];\n case 3:\n _c.sent();\n return [3 /*break*/, 5];\n case 4:\n error_7 = _c.sent();\n if (error_7.type !== 'NotFoundError') {\n throw error_7;\n }\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Iterates through blocks starting at the specified iterator head and calls\n * the onBlock function on each block. The current location of an iterator\n * head can be retrieved using the `getHead()` method.\n *\n * @param name - Name of the state root head\n * @param onBlock - Function called on each block with params (block, reorg)\n * @param maxBlocks - How many blocks to run. By default, run all unprocessed blocks in the canonical chain.\n * @returns number of blocks actually iterated\n */\n Blockchain.prototype.iterator = function (name, onBlock, maxBlocks) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._iterator(name, onBlock, maxBlocks)];\n });\n });\n };\n /**\n * @hidden\n */\n Blockchain.prototype._iterator = function (name, onBlock, maxBlocks) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n var headHash, lastBlock, headBlockNumber, nextBlockNumber, blocksRanCounter, nextBlock, reorg, error_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headHash = this._heads[name] || this._genesis;\n if (!headHash) {\n return [2 /*return*/, 0];\n }\n if (maxBlocks && maxBlocks < 0) {\n throw 'If maxBlocks is provided, it has to be a non-negative number';\n }\n return [4 /*yield*/, this.dbManager.hashToNumber(headHash)];\n case 1:\n headBlockNumber = _a.sent();\n nextBlockNumber = headBlockNumber.addn(1);\n blocksRanCounter = 0;\n _a.label = 2;\n case 2:\n if (!(maxBlocks !== blocksRanCounter)) return [3 /*break*/, 8];\n _a.label = 3;\n case 3:\n _a.trys.push([3, 6, , 7]);\n return [4 /*yield*/, this._getBlock(nextBlockNumber)];\n case 4:\n nextBlock = _a.sent();\n this._heads[name] = nextBlock.hash();\n reorg = lastBlock ? lastBlock.hash().equals(nextBlock.header.parentHash) : false;\n lastBlock = nextBlock;\n return [4 /*yield*/, onBlock(nextBlock, reorg)];\n case 5:\n _a.sent();\n nextBlockNumber.iaddn(1);\n blocksRanCounter++;\n return [3 /*break*/, 7];\n case 6:\n error_8 = _a.sent();\n if (error_8.type === 'NotFoundError') {\n return [3 /*break*/, 8];\n }\n else {\n throw error_8;\n }\n return [3 /*break*/, 7];\n case 7: return [3 /*break*/, 2];\n case 8: return [4 /*yield*/, this._saveHeads()];\n case 9:\n _a.sent();\n return [2 /*return*/, blocksRanCounter];\n }\n });\n }); })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Set header hash of a certain `tag`.\n * When calling the iterator, the iterator will start running the first child block after the header hash currenntly stored.\n * @param tag - The tag to save the headHash to\n * @param headHash - The head hash to save\n */\n Blockchain.prototype.setIteratorHead = function (tag, headHash) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.setHead(tag, headHash)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Set header hash of a certain `tag`.\n * When calling the iterator, the iterator will start running the first child block after the header hash currenntly stored.\n * @param tag - The tag to save the headHash to\n * @param headHash - The head hash to save\n *\n * @deprecated use `setIteratorHead()` instead\n */\n Blockchain.prototype.setHead = function (tag, headHash) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initAndLock(function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._heads[tag] = headHash;\n return [4 /*yield*/, this._saveHeads()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /* Methods regarding re-org operations */\n /**\n * Pushes DB operations to delete canonical number assignments for specified\n * block number and above This only deletes `NumberToHash` references, and not\n * the blocks themselves. Note: this does not write to the DB but only pushes\n * to a DB operations list.\n * @param blockNumber - the block number from which we start deleting\n * canonical chain assignments (including this block)\n * @param headHash - the hash of the current canonical chain head. The _heads\n * reference matching any hash of any of the deleted blocks will be set to\n * this\n * @param ops - the DatabaseOperation list to write DatabaseOperations to\n * @hidden\n */\n Blockchain.prototype._deleteCanonicalChainReferences = function (blockNumber, headHash, ops) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n blockNumber = blockNumber.clone();\n return [4 /*yield*/, this.safeNumberToHash(blockNumber)];\n case 1:\n hash = _b.sent();\n _b.label = 2;\n case 2:\n if (!hash) return [3 /*break*/, 8];\n ops.push(helpers_1.DBOp.del(operation_1.DBTarget.NumberToHash, { blockNumber: blockNumber }));\n // reset stale iterator heads to current canonical head this can, for\n // instance, make the VM run \"older\" (i.e. lower number blocks than last\n // executed block) blocks to verify the chain up to the current, actual,\n // head.\n Object.keys(this._heads).forEach(function (name) {\n if (_this._heads[name].equals(hash)) {\n // explicitly cast as Buffer: it is not possible that `hash` is false\n // here, but TypeScript does not understand this.\n _this._heads[name] = headHash;\n }\n });\n // reset stale headBlock to current canonical\n if ((_a = this._headBlockHash) === null || _a === void 0 ? void 0 : _a.equals(hash)) {\n this._headBlockHash = headHash;\n }\n if (!(this._common.consensusAlgorithm() === 'clique')) return [3 /*break*/, 6];\n // remove blockNumber from clique snapshots\n // (latest signer states, latest votes, latest block signers)\n this._cliqueLatestSignerStates = this._cliqueLatestSignerStates.filter(function (s) { return !s[0].eq(blockNumber); });\n return [4 /*yield*/, this.cliqueUpdateSignerStates()];\n case 3:\n _b.sent();\n this._cliqueLatestVotes = this._cliqueLatestVotes.filter(function (v) { return !v[0].eq(blockNumber); });\n return [4 /*yield*/, this.cliqueUpdateVotes()];\n case 4:\n _b.sent();\n this._cliqueLatestBlockSigners = this._cliqueLatestBlockSigners.filter(function (s) { return !s[0].eq(blockNumber); });\n return [4 /*yield*/, this.cliqueUpdateLatestBlockSigners()];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n blockNumber.iaddn(1);\n return [4 /*yield*/, this.safeNumberToHash(blockNumber)];\n case 7:\n hash = _b.sent();\n return [3 /*break*/, 2];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Given a `header`, put all operations to change the canonical chain directly\n * into `ops`. This walks the supplied `header` backwards. It is thus assumed\n * that this header should be canonical header. For each header the\n * corresponding hash corresponding to the current canonical chain in the DB\n * is checked If the number => hash reference does not correspond to the\n * reference in the DB, we overwrite this reference with the implied number =>\n * hash reference Also, each `_heads` member is checked; if these point to a\n * stale hash, then the hash which we terminate the loop (i.e. the first hash\n * which matches the number => hash of the implied chain) is put as this stale\n * head hash The same happens to _headBlockHash\n * @param header - The canonical header.\n * @param ops - The database operations list.\n * @hidden\n */\n Blockchain.prototype._rebuildCanonical = function (header, ops) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var currentNumber, currentCanonicalHash, staleHash, staleHeads, staleHeadBlock, loopCondition, blockHash, blockNumber, error_9;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n currentNumber = header.number.clone() // we change this during this method with `isubn`\n ;\n currentCanonicalHash = header.hash();\n staleHash = false;\n staleHeads = [];\n staleHeadBlock = false;\n loopCondition = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.safeNumberToHash(currentNumber)];\n case 1:\n staleHash = _a.sent();\n currentCanonicalHash = header.hash();\n return [2 /*return*/, !staleHash || !currentCanonicalHash.equals(staleHash)];\n }\n });\n }); };\n _b.label = 1;\n case 1: return [4 /*yield*/, loopCondition()];\n case 2:\n if (!_b.sent()) return [3 /*break*/, 7];\n blockHash = header.hash();\n blockNumber = header.number;\n helpers_1.DBSaveLookups(blockHash, blockNumber).map(function (op) {\n ops.push(op);\n });\n if (blockNumber.isZero()) {\n return [3 /*break*/, 7];\n }\n // mark each key `_heads` which is currently set to the hash in the DB as\n // stale to overwrite this later.\n Object.keys(this._heads).forEach(function (name) {\n if (staleHash && _this._heads[name].equals(staleHash)) {\n staleHeads.push(name);\n }\n });\n // flag stale headBlock for reset\n if (staleHash && ((_a = this._headBlockHash) === null || _a === void 0 ? void 0 : _a.equals(staleHash))) {\n staleHeadBlock = true;\n }\n currentNumber.isubn(1);\n _b.label = 3;\n case 3:\n _b.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this._getHeader(header.parentHash, currentNumber)];\n case 4:\n header = _b.sent();\n return [3 /*break*/, 6];\n case 5:\n error_9 = _b.sent();\n staleHeads = [];\n if (error_9.type !== 'NotFoundError') {\n throw error_9;\n }\n return [3 /*break*/, 7];\n case 6: return [3 /*break*/, 1];\n case 7:\n // the stale hash is equal to the blockHash set stale heads to last\n // previously valid canonical block\n staleHeads.forEach(function (name) {\n _this._heads[name] = currentCanonicalHash;\n });\n // set stale headBlock to last previously valid canonical block\n if (staleHeadBlock) {\n this._headBlockHash = currentCanonicalHash;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /* Helper functions */\n /**\n * Builds the `DatabaseOperation[]` list which describes the DB operations to\n * write the heads, head header hash and the head header block to the DB\n * @hidden\n */\n Blockchain.prototype._saveHeadOps = function () {\n return [\n helpers_1.DBOp.set(operation_1.DBTarget.Heads, this._heads),\n helpers_1.DBOp.set(operation_1.DBTarget.HeadHeader, this._headHeaderHash),\n helpers_1.DBOp.set(operation_1.DBTarget.HeadBlock, this._headBlockHash),\n ];\n };\n /**\n * Gets the `DatabaseOperation[]` list to save `_heads`, `_headHeaderHash` and\n * `_headBlockHash` and writes these to the DB\n * @hidden\n */\n Blockchain.prototype._saveHeads = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.dbManager.batch(this._saveHeadOps())];\n });\n });\n };\n /**\n * Gets a header by hash and number. Header can exist outside the canonical\n * chain\n *\n * @hidden\n */\n Blockchain.prototype._getHeader = function (hash, number) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!number) return [3 /*break*/, 2];\n return [4 /*yield*/, this.dbManager.hashToNumber(hash)];\n case 1:\n number = _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, this.dbManager.getHeader(hash, number)];\n }\n });\n });\n };\n /**\n * Gets a header by number. Header must be in the canonical chain\n *\n * @hidden\n */\n Blockchain.prototype._getCanonicalHeader = function (number) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.dbManager.numberToHash(number)];\n case 1:\n hash = _a.sent();\n return [2 /*return*/, this._getHeader(hash, number)];\n }\n });\n });\n };\n /**\n * This method either returns a Buffer if there exists one in the DB or if it\n * does not exist (DB throws a `NotFoundError`) then return false If DB throws\n * any other error, this function throws.\n * @param number\n */\n Blockchain.prototype.safeNumberToHash = function (number) {\n return __awaiter(this, void 0, void 0, function () {\n var hash, error_10;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.dbManager.numberToHash(number)];\n case 1:\n hash = _a.sent();\n return [2 /*return*/, hash];\n case 2:\n error_10 = _a.sent();\n if (error_10.type !== 'NotFoundError') {\n throw error_10;\n }\n return [2 /*return*/, false];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n return Blockchain;\n}());\nexports.default = Blockchain;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baToJSON = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg, length, right) {\n const buf = exports.zeros(length);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n }\n else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthLeft = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexports.setLengthRight = function (msg, length) {\n helpers_1.assertIsBuffer(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a) {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexports.unpadBuffer = function (a) {\n helpers_1.assertIsBuffer(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexports.unpadArray = function (a) {\n helpers_1.assertIsArray(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexports.unpadHexString = function (a) {\n helpers_1.assertIsHexString(a);\n a = ethjs_util_1.stripHexPrefix(a);\n return stripZeros(a);\n};\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexports.toBuffer = function (v) {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0);\n }\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n if (typeof v === 'string') {\n if (!ethjs_util_1.isHexString(v)) {\n throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return Buffer.from(ethjs_util_1.padToEven(ethjs_util_1.stripHexPrefix(v)), 'hex');\n }\n if (typeof v === 'number') {\n return ethjs_util_1.intToBuffer(v);\n }\n if (bn_js_1.default.isBN(v)) {\n return v.toArrayLike(Buffer);\n }\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer());\n }\n throw new Error('invalid type');\n};\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new bn_js_1.default(exports.toBuffer(buf)).toNumber();\n};\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexports.fromSigned = function (num) {\n return new bn_js_1.default(num).fromTwos(256);\n};\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return ethjs_util_1.isHexPrefixed(str) ? str : '0x' + str;\n};\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`;\n }\n else if (ba instanceof Array) {\n const array = [];\n for (let i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n//# sourceMappingURL=bytes.js.map","'use strict';\n\nvar ES5Type = require('../5/Type');\n\n// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values\n\nmodule.exports = function Type(x) {\n\tif (typeof x === 'symbol') {\n\t\treturn 'Symbol';\n\t}\n\tif (typeof x === 'bigint') {\n\t\treturn 'BigInt';\n\t}\n\treturn ES5Type(x);\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.secp256k1 = exports.rlp = exports.BN = void 0;\nvar secp256k1 = require('./secp256k1v3-adapter');\nexports.secp256k1 = secp256k1;\nvar ethjsUtil = require('ethjs-util');\nvar BN = require(\"bn.js\");\nexports.BN = BN;\nvar rlp = require(\"rlp\");\nexports.rlp = rlp;\nObject.assign(exports, ethjsUtil);\n/**\n * Constants\n */\n__exportStar(require(\"./constants\"), exports);\n/**\n * Public-key cryptography (secp256k1) and addresses\n */\n__exportStar(require(\"./account\"), exports);\n/**\n * Hash functions\n */\n__exportStar(require(\"./hash\"), exports);\n/**\n * ECDSA signature\n */\n__exportStar(require(\"./signature\"), exports);\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\n__exportStar(require(\"./bytes\"), exports);\n/**\n * Function for definining properties on an object\n */\n__exportStar(require(\"./object\"), exports);\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar isHexPrefixed = require('is-hex-prefixed');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Pads a `String` to have an even length\n * @param {String} value\n * @return {String} output\n */\nfunction padToEven(value) {\n var a = value; // eslint-disable-line\n\n if (typeof a !== 'string') {\n throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');\n }\n\n if (a.length % 2) {\n a = '0' + a;\n }\n\n return a;\n}\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nfunction intToHex(i) {\n var hex = i.toString(16); // eslint-disable-line\n\n return '0x' + hex;\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nfunction intToBuffer(i) {\n var hex = intToHex(i);\n\n return new Buffer(padToEven(hex.slice(2)), 'hex');\n}\n\n/**\n * Get the binary size of a string\n * @param {String} str\n * @return {Number}\n */\nfunction getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \\'str\\' to be type String, got \\'' + typeof str + '\\'.');\n }\n\n return Buffer.byteLength(str, 'utf8');\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'superset\\' to be an array got type \\'' + typeof superset + '\\'');\n }\n if (Array.isArray(subset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'subset\\' to be an array got type \\'' + typeof subset + '\\'');\n }\n\n return subset[Boolean(some) && 'some' || 'every'](function (value) {\n return superset.indexOf(value) >= 0;\n });\n}\n\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method toUtf8\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toUtf8(hex) {\n var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');\n\n return bufferValue.toString('utf8');\n}\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method toAscii\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toAscii(hex) {\n var str = ''; // eslint-disable-line\n var i = 0,\n l = hex.length; // eslint-disable-line\n\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method fromUtf8\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromUtf8(stringValue) {\n var str = new Buffer(stringValue, 'utf8');\n\n return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method fromAscii\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromAscii(stringValue) {\n var hex = ''; // eslint-disable-line\n for (var i = 0; i < stringValue.length; i++) {\n // eslint-disable-line\n var code = stringValue.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return '0x' + hex;\n}\n\n/**\n * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n *\n * @method getKeys get specific key from inner object array of objects\n * @param {String} params\n * @param {String} key\n * @param {Boolean} allowEmpty\n * @returns {Array} output just a simple array of output keys\n */\nfunction getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error('[ethjs-util] method getKeys expecting type Array as \\'params\\' input, got \\'' + typeof params + '\\'');\n }\n if (typeof key !== 'string') {\n throw new Error('[ethjs-util] method getKeys expecting type String for input \\'key\\' got \\'' + typeof key + '\\'.');\n }\n\n var result = []; // eslint-disable-line\n\n for (var i = 0; i < params.length; i++) {\n // eslint-disable-line\n var value = params[i][key]; // eslint-disable-line\n if (allowEmpty && !value) {\n value = '';\n } else if (typeof value !== 'string') {\n throw new Error('invalid abi');\n }\n result.push(value);\n }\n\n return result;\n}\n\n/**\n * Is the string a hex string.\n *\n * @method check if string is hex string of specific length\n * @param {String} value\n * @param {Number} length\n * @returns {Boolean} output the string is a hex string\n */\nfunction isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n arrayContainsArray: arrayContainsArray,\n intToBuffer: intToBuffer,\n getBinarySize: getBinarySize,\n isHexPrefixed: isHexPrefixed,\n stripHexPrefix: stripHexPrefix,\n padToEven: padToEven,\n intToHex: intToHex,\n fromAscii: fromAscii,\n fromUtf8: fromUtf8,\n toAscii: toAscii,\n toUtf8: toUtf8,\n getKeys: getKeys,\n isHexString: isHexString\n};","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckpointTrie = void 0;\nvar baseTrie_1 = require(\"./baseTrie\");\nvar checkpointDb_1 = require(\"./checkpointDb\");\n/**\n * Adds checkpointing to the {@link BaseTrie}\n */\nvar CheckpointTrie = /** @class */ (function (_super) {\n __extends(CheckpointTrie, _super);\n function CheckpointTrie() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, __spread(args)) || this;\n _this.db = new (checkpointDb_1.CheckpointDB.bind.apply(checkpointDb_1.CheckpointDB, __spread([void 0], args)))();\n return _this;\n }\n Object.defineProperty(CheckpointTrie.prototype, \"isCheckpoint\", {\n /**\n * Is the trie during a checkpoint phase?\n */\n get: function () {\n return this.db.isCheckpoint;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Creates a checkpoint that can later be reverted to or committed.\n * After this is called, all changes can be reverted until `commit` is called.\n */\n CheckpointTrie.prototype.checkpoint = function () {\n this.db.checkpoint(this.root);\n };\n /**\n * Commits a checkpoint to disk, if current checkpoint is not nested.\n * If nested, only sets the parent checkpoint as current checkpoint.\n * @throws If not during a checkpoint phase\n */\n CheckpointTrie.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isCheckpoint) {\n throw new Error('trying to commit when not checkpointed');\n }\n return [4 /*yield*/, this.lock.wait()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.db.commit()];\n case 2:\n _a.sent();\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Reverts the trie to the state it was at when `checkpoint` was first called.\n * If during a nested checkpoint, sets root to most recent checkpoint, and sets\n * parent checkpoint as current.\n */\n CheckpointTrie.prototype.revert = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.isCheckpoint) {\n throw new Error('trying to revert when not checkpointed');\n }\n return [4 /*yield*/, this.lock.wait()];\n case 1:\n _b.sent();\n _a = this;\n return [4 /*yield*/, this.db.revert()];\n case 2:\n _a.root = _b.sent();\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns a copy of the underlying trie with the interface of CheckpointTrie.\n * @param includeCheckpoints - If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.\n */\n CheckpointTrie.prototype.copy = function (includeCheckpoints) {\n if (includeCheckpoints === void 0) { includeCheckpoints = true; }\n var db = this.db.copy();\n var trie = new CheckpointTrie(db._leveldb, this.root);\n if (includeCheckpoints && this.isCheckpoint) {\n trie.db.checkpoints = __spread(this.db.checkpoints);\n }\n return trie;\n };\n return CheckpointTrie;\n}(baseTrie_1.Trie));\nexports.CheckpointTrie = CheckpointTrie;\n//# sourceMappingURL=checkpointTrie.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRawNode = exports.decodeNode = exports.decodeRawNode = exports.LeafNode = exports.ExtensionNode = exports.BranchNode = void 0;\nvar rlp = __importStar(require(\"rlp\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar nibbles_1 = require(\"./util/nibbles\");\nvar hex_1 = require(\"./util/hex\");\nvar BranchNode = /** @class */ (function () {\n function BranchNode() {\n this._branches = new Array(16).fill(null);\n this._value = null;\n }\n BranchNode.fromArray = function (arr) {\n var node = new BranchNode();\n node._branches = arr.slice(0, 16);\n node._value = arr[16];\n return node;\n };\n Object.defineProperty(BranchNode.prototype, \"value\", {\n get: function () {\n return this._value && this._value.length > 0 ? this._value : null;\n },\n set: function (v) {\n this._value = v;\n },\n enumerable: false,\n configurable: true\n });\n BranchNode.prototype.setBranch = function (i, v) {\n this._branches[i] = v;\n };\n BranchNode.prototype.raw = function () {\n return __spread(this._branches, [this._value]);\n };\n BranchNode.prototype.serialize = function () {\n return rlp.encode(this.raw());\n };\n BranchNode.prototype.hash = function () {\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n BranchNode.prototype.getBranch = function (i) {\n var b = this._branches[i];\n if (b !== null && b.length > 0) {\n return b;\n }\n else {\n return null;\n }\n };\n BranchNode.prototype.getChildren = function () {\n var children = [];\n for (var i = 0; i < 16; i++) {\n var b = this._branches[i];\n if (b !== null && b.length > 0) {\n children.push([i, b]);\n }\n }\n return children;\n };\n return BranchNode;\n}());\nexports.BranchNode = BranchNode;\nvar ExtensionNode = /** @class */ (function () {\n function ExtensionNode(nibbles, value) {\n this._nibbles = nibbles;\n this._value = value;\n }\n ExtensionNode.encodeKey = function (key) {\n return hex_1.addHexPrefix(key, false);\n };\n ExtensionNode.decodeKey = function (key) {\n return hex_1.removeHexPrefix(key);\n };\n Object.defineProperty(ExtensionNode.prototype, \"key\", {\n get: function () {\n return this._nibbles.slice(0);\n },\n set: function (k) {\n this._nibbles = k;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ExtensionNode.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (v) {\n this._value = v;\n },\n enumerable: false,\n configurable: true\n });\n ExtensionNode.prototype.encodedKey = function () {\n return ExtensionNode.encodeKey(this._nibbles.slice(0));\n };\n ExtensionNode.prototype.raw = function () {\n return [nibbles_1.nibblesToBuffer(this.encodedKey()), this._value];\n };\n ExtensionNode.prototype.serialize = function () {\n return rlp.encode(this.raw());\n };\n ExtensionNode.prototype.hash = function () {\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n return ExtensionNode;\n}());\nexports.ExtensionNode = ExtensionNode;\nvar LeafNode = /** @class */ (function () {\n function LeafNode(nibbles, value) {\n this._nibbles = nibbles;\n this._value = value;\n }\n LeafNode.encodeKey = function (key) {\n return hex_1.addHexPrefix(key, true);\n };\n LeafNode.decodeKey = function (encodedKey) {\n return hex_1.removeHexPrefix(encodedKey);\n };\n Object.defineProperty(LeafNode.prototype, \"key\", {\n get: function () {\n return this._nibbles.slice(0);\n },\n set: function (k) {\n this._nibbles = k;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LeafNode.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (v) {\n this._value = v;\n },\n enumerable: false,\n configurable: true\n });\n LeafNode.prototype.encodedKey = function () {\n return LeafNode.encodeKey(this._nibbles.slice(0));\n };\n LeafNode.prototype.raw = function () {\n return [nibbles_1.nibblesToBuffer(this.encodedKey()), this._value];\n };\n LeafNode.prototype.serialize = function () {\n return rlp.encode(this.raw());\n };\n LeafNode.prototype.hash = function () {\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n return LeafNode;\n}());\nexports.LeafNode = LeafNode;\nfunction decodeRawNode(raw) {\n if (raw.length === 17) {\n return BranchNode.fromArray(raw);\n }\n else if (raw.length === 2) {\n var nibbles = nibbles_1.bufferToNibbles(raw[0]);\n if (hex_1.isTerminator(nibbles)) {\n return new LeafNode(LeafNode.decodeKey(nibbles), raw[1]);\n }\n return new ExtensionNode(ExtensionNode.decodeKey(nibbles), raw[1]);\n }\n else {\n throw new Error('Invalid node');\n }\n}\nexports.decodeRawNode = decodeRawNode;\nfunction decodeNode(raw) {\n var des = rlp.decode(raw);\n if (!Array.isArray(des)) {\n throw new Error('Invalid node');\n }\n return decodeRawNode(des);\n}\nexports.decodeNode = decodeNode;\nfunction isRawNode(n) {\n return Array.isArray(n) && !Buffer.isBuffer(n);\n}\nexports.isRawNode = isRawNode;\n//# sourceMappingURL=trieNode.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckpointTrie = void 0;\nvar baseTrie_1 = require(\"./baseTrie\");\nvar checkpointDb_1 = require(\"./checkpointDb\");\n/**\n * Adds checkpointing to the {@link BaseTrie}\n */\nvar CheckpointTrie = /** @class */ (function (_super) {\n __extends(CheckpointTrie, _super);\n function CheckpointTrie() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, __spread(args)) || this;\n _this.db = new (checkpointDb_1.CheckpointDB.bind.apply(checkpointDb_1.CheckpointDB, __spread([void 0], args)))();\n return _this;\n }\n Object.defineProperty(CheckpointTrie.prototype, \"isCheckpoint\", {\n /**\n * Is the trie during a checkpoint phase?\n */\n get: function () {\n return this.db.isCheckpoint;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Creates a checkpoint that can later be reverted to or committed.\n * After this is called, all changes can be reverted until `commit` is called.\n */\n CheckpointTrie.prototype.checkpoint = function () {\n this.db.checkpoint(this.root);\n };\n /**\n * Commits a checkpoint to disk, if current checkpoint is not nested.\n * If nested, only sets the parent checkpoint as current checkpoint.\n * @throws If not during a checkpoint phase\n */\n CheckpointTrie.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isCheckpoint) {\n throw new Error('trying to commit when not checkpointed');\n }\n return [4 /*yield*/, this.lock.wait()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.db.commit()];\n case 2:\n _a.sent();\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Reverts the trie to the state it was at when `checkpoint` was first called.\n * If during a nested checkpoint, sets root to most recent checkpoint, and sets\n * parent checkpoint as current.\n */\n CheckpointTrie.prototype.revert = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.isCheckpoint) {\n throw new Error('trying to revert when not checkpointed');\n }\n return [4 /*yield*/, this.lock.wait()];\n case 1:\n _b.sent();\n _a = this;\n return [4 /*yield*/, this.db.revert()];\n case 2:\n _a.root = _b.sent();\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns a copy of the underlying trie with the interface of CheckpointTrie.\n * @param includeCheckpoints - If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.\n */\n CheckpointTrie.prototype.copy = function (includeCheckpoints) {\n if (includeCheckpoints === void 0) { includeCheckpoints = true; }\n var db = this.db.copy();\n var trie = new CheckpointTrie(db._leveldb, this.root);\n if (includeCheckpoints && this.isCheckpoint) {\n trie.db.checkpoints = __spread(this.db.checkpoints);\n }\n return trie;\n };\n return CheckpointTrie;\n}(baseTrie_1.Trie));\nexports.CheckpointTrie = CheckpointTrie;\n//# sourceMappingURL=checkpointTrie.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRawNode = exports.decodeNode = exports.decodeRawNode = exports.LeafNode = exports.ExtensionNode = exports.BranchNode = void 0;\nvar rlp = __importStar(require(\"rlp\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar nibbles_1 = require(\"./util/nibbles\");\nvar hex_1 = require(\"./util/hex\");\nvar BranchNode = /** @class */ (function () {\n function BranchNode() {\n this._branches = new Array(16).fill(null);\n this._value = null;\n }\n BranchNode.fromArray = function (arr) {\n var node = new BranchNode();\n node._branches = arr.slice(0, 16);\n node._value = arr[16];\n return node;\n };\n Object.defineProperty(BranchNode.prototype, \"value\", {\n get: function () {\n return this._value && this._value.length > 0 ? this._value : null;\n },\n set: function (v) {\n this._value = v;\n },\n enumerable: false,\n configurable: true\n });\n BranchNode.prototype.setBranch = function (i, v) {\n this._branches[i] = v;\n };\n BranchNode.prototype.raw = function () {\n return __spread(this._branches, [this._value]);\n };\n BranchNode.prototype.serialize = function () {\n return rlp.encode(this.raw());\n };\n BranchNode.prototype.hash = function () {\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n BranchNode.prototype.getBranch = function (i) {\n var b = this._branches[i];\n if (b !== null && b.length > 0) {\n return b;\n }\n else {\n return null;\n }\n };\n BranchNode.prototype.getChildren = function () {\n var children = [];\n for (var i = 0; i < 16; i++) {\n var b = this._branches[i];\n if (b !== null && b.length > 0) {\n children.push([i, b]);\n }\n }\n return children;\n };\n return BranchNode;\n}());\nexports.BranchNode = BranchNode;\nvar ExtensionNode = /** @class */ (function () {\n function ExtensionNode(nibbles, value) {\n this._nibbles = nibbles;\n this._value = value;\n }\n ExtensionNode.encodeKey = function (key) {\n return hex_1.addHexPrefix(key, false);\n };\n ExtensionNode.decodeKey = function (key) {\n return hex_1.removeHexPrefix(key);\n };\n Object.defineProperty(ExtensionNode.prototype, \"key\", {\n get: function () {\n return this._nibbles.slice(0);\n },\n set: function (k) {\n this._nibbles = k;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ExtensionNode.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (v) {\n this._value = v;\n },\n enumerable: false,\n configurable: true\n });\n ExtensionNode.prototype.encodedKey = function () {\n return ExtensionNode.encodeKey(this._nibbles.slice(0));\n };\n ExtensionNode.prototype.raw = function () {\n return [nibbles_1.nibblesToBuffer(this.encodedKey()), this._value];\n };\n ExtensionNode.prototype.serialize = function () {\n return rlp.encode(this.raw());\n };\n ExtensionNode.prototype.hash = function () {\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n return ExtensionNode;\n}());\nexports.ExtensionNode = ExtensionNode;\nvar LeafNode = /** @class */ (function () {\n function LeafNode(nibbles, value) {\n this._nibbles = nibbles;\n this._value = value;\n }\n LeafNode.encodeKey = function (key) {\n return hex_1.addHexPrefix(key, true);\n };\n LeafNode.decodeKey = function (encodedKey) {\n return hex_1.removeHexPrefix(encodedKey);\n };\n Object.defineProperty(LeafNode.prototype, \"key\", {\n get: function () {\n return this._nibbles.slice(0);\n },\n set: function (k) {\n this._nibbles = k;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LeafNode.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (v) {\n this._value = v;\n },\n enumerable: false,\n configurable: true\n });\n LeafNode.prototype.encodedKey = function () {\n return LeafNode.encodeKey(this._nibbles.slice(0));\n };\n LeafNode.prototype.raw = function () {\n return [nibbles_1.nibblesToBuffer(this.encodedKey()), this._value];\n };\n LeafNode.prototype.serialize = function () {\n return rlp.encode(this.raw());\n };\n LeafNode.prototype.hash = function () {\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n return LeafNode;\n}());\nexports.LeafNode = LeafNode;\nfunction decodeRawNode(raw) {\n if (raw.length === 17) {\n return BranchNode.fromArray(raw);\n }\n else if (raw.length === 2) {\n var nibbles = nibbles_1.bufferToNibbles(raw[0]);\n if (hex_1.isTerminator(nibbles)) {\n return new LeafNode(LeafNode.decodeKey(nibbles), raw[1]);\n }\n return new ExtensionNode(ExtensionNode.decodeKey(nibbles), raw[1]);\n }\n else {\n throw new Error('Invalid node');\n }\n}\nexports.decodeRawNode = decodeRawNode;\nfunction decodeNode(raw) {\n var des = rlp.decode(raw);\n if (!Array.isArray(des)) {\n throw new Error('Invalid node');\n }\n return decodeRawNode(des);\n}\nexports.decodeNode = decodeNode;\nfunction isRawNode(n) {\n return Array.isArray(n) && !Buffer.isBuffer(n);\n}\nexports.isRawNode = isRawNode;\n//# sourceMappingURL=trieNode.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockHeader = void 0;\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar clique_1 = require(\"./clique\");\nvar DEFAULT_GAS_LIMIT = new ethereumjs_util_1.BN(Buffer.from('ffffffffffffff', 'hex'));\n/**\n * An object that represents the block header.\n */\nvar BlockHeader = /** @class */ (function () {\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * @deprecated - Use the public static factory methods to assist in creating a Header object from\n * varying data types. For a default empty header, use `BlockHeader.fromHeaderData()`.\n *\n */\n function BlockHeader(parentHash, uncleHash, coinbase, stateRoot, transactionsTrie, receiptTrie, bloom, difficulty, number, gasLimit, gasUsed, timestamp, extraData, mixHash, nonce, options, baseFeePerGas) {\n if (options === void 0) { options = {}; }\n var _a;\n this._errorPostfix = '';\n if (options.common) {\n this._common = options.common.copy();\n }\n else {\n var chain = 'mainnet'; // default\n if (options.initWithGenesisHeader) {\n this._common = new common_1.default({ chain: chain, hardfork: 'chainstart' });\n }\n else {\n // This initializes on the Common default hardfork\n this._common = new common_1.default({ chain: chain });\n }\n }\n if (options.hardforkByBlockNumber) {\n this._common.setHardforkByBlockNumber(number.toNumber());\n }\n if (this._common.isActivatedEIP(1559)) {\n if (baseFeePerGas === undefined) {\n baseFeePerGas = new ethereumjs_util_1.BN(7);\n }\n }\n else {\n if (baseFeePerGas) {\n throw new Error('A base fee for a block can only be set with EIP1559 being activated');\n }\n }\n if (options.initWithGenesisHeader) {\n number = new ethereumjs_util_1.BN(0);\n if (gasLimit.eq(DEFAULT_GAS_LIMIT)) {\n gasLimit = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(this._common.genesis().gasLimit));\n }\n if (timestamp.isZero()) {\n timestamp = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(this._common.genesis().timestamp));\n }\n if (difficulty.isZero()) {\n difficulty = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(this._common.genesis().difficulty));\n }\n if (extraData.length === 0) {\n extraData = ethereumjs_util_1.toBuffer(this._common.genesis().extraData);\n }\n if (nonce.equals(ethereumjs_util_1.zeros(8))) {\n nonce = ethereumjs_util_1.toBuffer(this._common.genesis().nonce);\n }\n if (stateRoot.equals(ethereumjs_util_1.zeros(32))) {\n stateRoot = ethereumjs_util_1.toBuffer(this._common.genesis().stateRoot);\n }\n }\n this.parentHash = parentHash;\n this.uncleHash = uncleHash;\n this.coinbase = coinbase;\n this.stateRoot = stateRoot;\n this.transactionsTrie = transactionsTrie;\n this.receiptTrie = receiptTrie;\n this.bloom = bloom;\n this.difficulty = difficulty;\n this.number = number;\n this.gasLimit = gasLimit;\n this.gasUsed = gasUsed;\n this.timestamp = timestamp;\n this.extraData = extraData;\n this.mixHash = mixHash;\n this.nonce = nonce;\n this.baseFeePerGas = baseFeePerGas;\n this._validateHeaderFields();\n this._checkDAOExtraData();\n // Now we have set all the values of this Header, we possibly have set a dummy\n // `difficulty` value (defaults to 0). If we have a `calcDifficultyFromHeader`\n // block option parameter, we instead set difficulty to this value.\n if (options.calcDifficultyFromHeader) {\n this.difficulty = this.canonicalDifficulty(options.calcDifficultyFromHeader);\n }\n // If cliqueSigner is provided, seal block with provided privateKey.\n if (options.cliqueSigner) {\n // Ensure extraData is at least length CLIQUE_EXTRA_VANITY + CLIQUE_EXTRA_SEAL\n var minExtraDataLength = clique_1.CLIQUE_EXTRA_VANITY + clique_1.CLIQUE_EXTRA_SEAL;\n if (this.extraData.length < minExtraDataLength) {\n var remainingLength = minExtraDataLength - this.extraData.length;\n this.extraData = Buffer.concat([this.extraData, Buffer.alloc(remainingLength)]);\n }\n this.extraData = this.cliqueSealBlock(options.cliqueSigner);\n }\n this._errorPostfix = \"block number=\" + this.number.toNumber() + \" hash=\" + this.hash().toString('hex');\n var freeze = (_a = options === null || options === void 0 ? void 0 : options.freeze) !== null && _a !== void 0 ? _a : true;\n if (freeze) {\n Object.freeze(this);\n }\n }\n /**\n * Static constructor to create a block header from a header data dictionary\n *\n * @param headerData\n * @param opts\n */\n BlockHeader.fromHeaderData = function (headerData, opts) {\n if (headerData === void 0) { headerData = {}; }\n if (opts === void 0) { opts = {}; }\n var parentHash = headerData.parentHash, uncleHash = headerData.uncleHash, coinbase = headerData.coinbase, stateRoot = headerData.stateRoot, transactionsTrie = headerData.transactionsTrie, receiptTrie = headerData.receiptTrie, bloom = headerData.bloom, difficulty = headerData.difficulty, number = headerData.number, gasLimit = headerData.gasLimit, gasUsed = headerData.gasUsed, timestamp = headerData.timestamp, extraData = headerData.extraData, mixHash = headerData.mixHash, nonce = headerData.nonce, baseFeePerGas = headerData.baseFeePerGas;\n return new BlockHeader(parentHash ? ethereumjs_util_1.toBuffer(parentHash) : ethereumjs_util_1.zeros(32), uncleHash ? ethereumjs_util_1.toBuffer(uncleHash) : ethereumjs_util_1.KECCAK256_RLP_ARRAY, coinbase ? new ethereumjs_util_1.Address(ethereumjs_util_1.toBuffer(coinbase)) : ethereumjs_util_1.Address.zero(), stateRoot ? ethereumjs_util_1.toBuffer(stateRoot) : ethereumjs_util_1.zeros(32), transactionsTrie ? ethereumjs_util_1.toBuffer(transactionsTrie) : ethereumjs_util_1.KECCAK256_RLP, receiptTrie ? ethereumjs_util_1.toBuffer(receiptTrie) : ethereumjs_util_1.KECCAK256_RLP, bloom ? ethereumjs_util_1.toBuffer(bloom) : ethereumjs_util_1.zeros(256), difficulty ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(difficulty)) : new ethereumjs_util_1.BN(0), number ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(number)) : new ethereumjs_util_1.BN(0), gasLimit ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasLimit)) : DEFAULT_GAS_LIMIT, gasUsed ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasUsed)) : new ethereumjs_util_1.BN(0), timestamp ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(timestamp)) : new ethereumjs_util_1.BN(0), extraData ? ethereumjs_util_1.toBuffer(extraData) : Buffer.from([]), mixHash ? ethereumjs_util_1.toBuffer(mixHash) : ethereumjs_util_1.zeros(32), nonce ? ethereumjs_util_1.toBuffer(nonce) : ethereumjs_util_1.zeros(8), opts, baseFeePerGas !== undefined ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(baseFeePerGas)) : undefined);\n };\n /**\n * Static constructor to create a block header from a RLP-serialized header\n *\n * @param headerData\n * @param opts\n */\n BlockHeader.fromRLPSerializedHeader = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n var values = ethereumjs_util_1.rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized header input. Must be array');\n }\n return BlockHeader.fromValuesArray(values, opts);\n };\n /**\n * Static constructor to create a block header from an array of Buffer values\n *\n * @param headerData\n * @param opts\n */\n BlockHeader.fromValuesArray = function (values, opts) {\n if (opts === void 0) { opts = {}; }\n var _a = __read(values, 16), parentHash = _a[0], uncleHash = _a[1], coinbase = _a[2], stateRoot = _a[3], transactionsTrie = _a[4], receiptTrie = _a[5], bloom = _a[6], difficulty = _a[7], number = _a[8], gasLimit = _a[9], gasUsed = _a[10], timestamp = _a[11], extraData = _a[12], mixHash = _a[13], nonce = _a[14], baseFeePerGas = _a[15];\n if (values.length > 16) {\n throw new Error('invalid header. More values than expected were received');\n }\n if (values.length < 15) {\n throw new Error('invalid header. Less values than expected were received');\n }\n return new BlockHeader(ethereumjs_util_1.toBuffer(parentHash), ethereumjs_util_1.toBuffer(uncleHash), new ethereumjs_util_1.Address(ethereumjs_util_1.toBuffer(coinbase)), ethereumjs_util_1.toBuffer(stateRoot), ethereumjs_util_1.toBuffer(transactionsTrie), ethereumjs_util_1.toBuffer(receiptTrie), ethereumjs_util_1.toBuffer(bloom), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(difficulty)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(number)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasLimit)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasUsed)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(timestamp)), ethereumjs_util_1.toBuffer(extraData), ethereumjs_util_1.toBuffer(mixHash), ethereumjs_util_1.toBuffer(nonce), opts, baseFeePerGas !== undefined ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(baseFeePerGas)) : undefined);\n };\n /**\n * Alias for Header.fromHeaderData() with initWithGenesisHeader set to true.\n */\n BlockHeader.genesis = function (headerData, opts) {\n if (headerData === void 0) { headerData = {}; }\n opts = __assign(__assign({}, opts), { initWithGenesisHeader: true });\n return BlockHeader.fromHeaderData(headerData, opts);\n };\n /**\n * Validates correct buffer lengths, throws if invalid.\n */\n BlockHeader.prototype._validateHeaderFields = function () {\n var _a = this, parentHash = _a.parentHash, stateRoot = _a.stateRoot, transactionsTrie = _a.transactionsTrie, receiptTrie = _a.receiptTrie, mixHash = _a.mixHash, nonce = _a.nonce;\n if (parentHash.length !== 32) {\n throw new Error(\"parentHash must be 32 bytes, received \" + parentHash.length + \" bytes\");\n }\n if (stateRoot.length !== 32) {\n throw new Error(\"stateRoot must be 32 bytes, received \" + stateRoot.length + \" bytes\");\n }\n if (transactionsTrie.length !== 32) {\n throw new Error(\"transactionsTrie must be 32 bytes, received \" + transactionsTrie.length + \" bytes\");\n }\n if (receiptTrie.length !== 32) {\n throw new Error(\"receiptTrie must be 32 bytes, received \" + receiptTrie.length + \" bytes\");\n }\n if (mixHash.length !== 32) {\n throw new Error(\"mixHash must be 32 bytes, received \" + mixHash.length + \" bytes\");\n }\n if (nonce.length !== 8) {\n throw new Error(\"nonce must be 8 bytes, received \" + nonce.length + \" bytes\");\n }\n };\n /**\n * Returns the canonical difficulty for this block.\n *\n * @param parentBlockHeader - the header from the parent `Block` of this header\n */\n BlockHeader.prototype.canonicalDifficulty = function (parentBlockHeader) {\n if (this._common.consensusType() !== 'pow') {\n throw new Error('difficulty calculation is only supported on PoW chains');\n }\n if (this._common.consensusAlgorithm() !== 'ethash') {\n throw new Error('difficulty calculation currently only supports the ethash algorithm');\n }\n var hardfork = this._getHardfork();\n var blockTs = this.timestamp;\n var parentTs = parentBlockHeader.timestamp, parentDif = parentBlockHeader.difficulty;\n var minimumDifficulty = new ethereumjs_util_1.BN(this._common.paramByHardfork('pow', 'minimumDifficulty', hardfork));\n var offset = parentDif.div(new ethereumjs_util_1.BN(this._common.paramByHardfork('pow', 'difficultyBoundDivisor', hardfork)));\n var num = this.number.clone();\n // We use a ! here as TS cannot follow this hardfork-dependent logic, but it always gets assigned\n var dif;\n if (this._common.hardforkGteHardfork(hardfork, 'byzantium')) {\n // max((2 if len(parent.uncles) else 1) - ((timestamp - parent.timestamp) // 9), -99) (EIP100)\n var uncleAddend = parentBlockHeader.uncleHash.equals(ethereumjs_util_1.KECCAK256_RLP_ARRAY) ? 1 : 2;\n var a = blockTs.sub(parentTs).idivn(9).ineg().iaddn(uncleAddend);\n var cutoff = new ethereumjs_util_1.BN(-99);\n // MAX(cutoff, a)\n if (cutoff.gt(a)) {\n a = cutoff;\n }\n dif = parentDif.add(offset.mul(a));\n }\n if (this._common.hardforkGteHardfork(hardfork, 'byzantium')) {\n // Get delay as parameter from common\n num.isubn(this._common.param('pow', 'difficultyBombDelay'));\n if (num.ltn(0)) {\n num = new ethereumjs_util_1.BN(0);\n }\n }\n else if (this._common.hardforkGteHardfork(hardfork, 'homestead')) {\n // 1 - (block_timestamp - parent_timestamp) // 10\n var a = blockTs.sub(parentTs).idivn(10).ineg().iaddn(1);\n var cutoff = new ethereumjs_util_1.BN(-99);\n // MAX(cutoff, a)\n if (cutoff.gt(a)) {\n a = cutoff;\n }\n dif = parentDif.add(offset.mul(a));\n }\n else {\n // pre-homestead\n if (parentTs.addn(this._common.paramByHardfork('pow', 'durationLimit', hardfork)).gt(blockTs)) {\n dif = offset.add(parentDif);\n }\n else {\n dif = parentDif.sub(offset);\n }\n }\n var exp = num.divn(100000).isubn(2);\n if (!exp.isNeg()) {\n dif.iadd(new ethereumjs_util_1.BN(2).pow(exp));\n }\n if (dif.lt(minimumDifficulty)) {\n dif = minimumDifficulty;\n }\n return dif;\n };\n /**\n * Checks that the block's `difficulty` matches the canonical difficulty.\n *\n * @param parentBlockHeader - the header from the parent `Block` of this header\n */\n BlockHeader.prototype.validateDifficulty = function (parentBlockHeader) {\n return this.canonicalDifficulty(parentBlockHeader).eq(this.difficulty);\n };\n /**\n * For poa, validates `difficulty` is correctly identified as INTURN or NOTURN.\n * Returns false if invalid.\n */\n BlockHeader.prototype.validateCliqueDifficulty = function (blockchain) {\n var _this = this;\n this._requireClique('validateCliqueDifficulty');\n if (!this.difficulty.eq(clique_1.CLIQUE_DIFF_INTURN) && !this.difficulty.eq(clique_1.CLIQUE_DIFF_NOTURN)) {\n throw new Error(\"difficulty for clique block must be INTURN (2) or NOTURN (1), received: \" + this.difficulty.toString());\n }\n if ('cliqueActiveSigners' in blockchain === false) {\n throw new Error('PoA blockchain requires method blockchain.cliqueActiveSigners() to validate clique difficulty');\n }\n var signers = blockchain.cliqueActiveSigners();\n if (signers.length === 0) {\n // abort if signers are unavailable\n return true;\n }\n var signerIndex = signers.findIndex(function (address) { return address.equals(_this.cliqueSigner()); });\n var inTurn = this.number.modn(signers.length) === signerIndex;\n if ((inTurn && this.difficulty.eq(clique_1.CLIQUE_DIFF_INTURN)) ||\n (!inTurn && this.difficulty.eq(clique_1.CLIQUE_DIFF_NOTURN))) {\n return true;\n }\n return false;\n };\n /**\n * Validates if the block gasLimit remains in the\n * boundaries set by the protocol.\n *\n * @param parentBlockHeader - the header from the parent `Block` of this header\n */\n BlockHeader.prototype.validateGasLimit = function (parentBlockHeader) {\n var parentGasLimit = parentBlockHeader.gasLimit;\n // EIP-1559: assume double the parent gas limit on fork block\n // to adopt to the new gas target centered logic\n if (this.number.eq(this._common.hardforkBlockBN('london'))) {\n var elasticity = new ethereumjs_util_1.BN(this._common.param('gasConfig', 'elasticityMultiplier'));\n parentGasLimit = parentGasLimit.mul(elasticity);\n }\n var gasLimit = this.gasLimit;\n var hardfork = this._getHardfork();\n var a = parentGasLimit.div(new ethereumjs_util_1.BN(this._common.paramByHardfork('gasConfig', 'gasLimitBoundDivisor', hardfork)));\n var maxGasLimit = parentGasLimit.add(a);\n var minGasLimit = parentGasLimit.sub(a);\n var result = gasLimit.lt(maxGasLimit) &&\n gasLimit.gt(minGasLimit) &&\n gasLimit.gte(this._common.paramByHardfork('gasConfig', 'minGasLimit', hardfork));\n return result;\n };\n /**\n * Validates the block header, throwing if invalid. It is being validated against the reported `parentHash`.\n * It verifies the current block against the `parentHash`:\n * - The `parentHash` is part of the blockchain (it is a valid header)\n * - Current block number is parent block number + 1\n * - Current block has a strictly higher timestamp\n * - Additional PoW checks ->\n * - Current block has valid difficulty and gas limit\n * - In case that the header is an uncle header, it should not be too old or young in the chain.\n * - Additional PoA clique checks ->\n * - Various extraData checks\n * - Checks on coinbase and mixHash\n * - Current block has a timestamp diff greater or equal to PERIOD\n * - Current block has difficulty correctly marked as INTURN or NOTURN\n * @param blockchain - validate against an @ethereumjs/blockchain\n * @param height - If this is an uncle header, this is the height of the block that is including it\n */\n BlockHeader.prototype.validate = function (blockchain, height) {\n return __awaiter(this, void 0, void 0, function () {\n var hardfork, msg, minLength, msg, signerLength, msg, msg, msg, msg, parentHeader, number, period, dif, isInitialEIP1559Block, initialBaseFee, expectedBaseFee;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isGenesis()) {\n return [2 /*return*/];\n }\n hardfork = this._getHardfork();\n // Consensus type dependent checks\n if (this._common.consensusAlgorithm() !== 'clique') {\n // PoW/Ethash\n if (this.extraData.length > this._common.paramByHardfork('vm', 'maxExtraDataSize', hardfork)) {\n msg = 'invalid amount of extra data';\n throw this._error(msg);\n }\n }\n else {\n minLength = clique_1.CLIQUE_EXTRA_VANITY + clique_1.CLIQUE_EXTRA_SEAL;\n if (!this.cliqueIsEpochTransition()) {\n // ExtraData length on epoch transition\n if (this.extraData.length !== minLength) {\n msg = \"extraData must be \" + minLength + \" bytes on non-epoch transition blocks, received \" + this.extraData.length + \" bytes\";\n throw this._error(msg);\n }\n }\n else {\n signerLength = this.extraData.length - minLength;\n if (signerLength % 20 !== 0) {\n msg = \"invalid signer list length in extraData, received signer length of \" + signerLength + \" (not divisible by 20)\";\n throw this._error(msg);\n }\n // coinbase (beneficiary) on epoch transition\n if (!this.coinbase.isZero()) {\n msg = \"coinbase must be filled with zeros on epoch transition blocks, received \" + this.coinbase.toString();\n throw this._error(msg);\n }\n }\n // MixHash format\n if (!this.mixHash.equals(Buffer.alloc(32))) {\n msg = \"mixHash must be filled with zeros, received \" + this.mixHash;\n throw this._error(msg);\n }\n if (!this.validateCliqueDifficulty(blockchain)) {\n msg = \"invalid clique difficulty\";\n throw this._error(msg);\n }\n }\n return [4 /*yield*/, this._getHeaderByHash(blockchain, this.parentHash)];\n case 1:\n parentHeader = _a.sent();\n if (!parentHeader) {\n throw new Error('could not find parent header');\n }\n number = this.number;\n if (!number.eq(parentHeader.number.addn(1))) {\n throw new Error('invalid number');\n }\n if (this.timestamp.lte(parentHeader.timestamp)) {\n throw new Error('invalid timestamp');\n }\n if (this._common.consensusAlgorithm() === 'clique') {\n period = this._common.consensusConfig().period;\n // Timestamp diff between blocks is lower than PERIOD (clique)\n if (parentHeader.timestamp.addn(period).gt(this.timestamp)) {\n throw new Error('invalid timestamp diff (lower than period)');\n }\n }\n if (this._common.consensusType() === 'pow') {\n if (!this.validateDifficulty(parentHeader)) {\n throw new Error('invalid difficulty');\n }\n }\n if (!this.validateGasLimit(parentHeader)) {\n throw new Error('invalid gas limit');\n }\n if (height) {\n dif = height.sub(parentHeader.number);\n if (!(dif.ltn(8) && dif.gtn(1))) {\n throw new Error('uncle block has a parent that is too old or too young');\n }\n }\n // check if the block used too much gas\n if (this.gasUsed.gt(this.gasLimit)) {\n throw new Error('Invalid block: too much gas used');\n }\n if (this._common.isActivatedEIP(1559)) {\n if (!this.baseFeePerGas) {\n throw new Error('EIP1559 block has no base fee field');\n }\n isInitialEIP1559Block = this.number.eq(this._common.hardforkBlockBN('london'));\n if (isInitialEIP1559Block) {\n initialBaseFee = new ethereumjs_util_1.BN(this._common.param('gasConfig', 'initialBaseFee'));\n if (!this.baseFeePerGas.eq(initialBaseFee)) {\n throw new Error('Initial EIP1559 block does not have initial base fee');\n }\n }\n else {\n expectedBaseFee = parentHeader.calcNextBaseFee();\n if (!this.baseFeePerGas.eq(expectedBaseFee)) {\n throw new Error('Invalid block: base fee not correct');\n }\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Calculates the base fee for a potential next block\n */\n BlockHeader.prototype.calcNextBaseFee = function () {\n if (!this._common.isActivatedEIP(1559)) {\n throw new Error('calcNextBaseFee() can only be called with EIP1559 being activated');\n }\n var nextBaseFee;\n var elasticity = new ethereumjs_util_1.BN(this._common.param('gasConfig', 'elasticityMultiplier'));\n var parentGasTarget = this.gasLimit.div(elasticity);\n if (parentGasTarget.eq(this.gasUsed)) {\n nextBaseFee = this.baseFeePerGas;\n }\n else if (this.gasUsed.gt(parentGasTarget)) {\n var gasUsedDelta = this.gasUsed.sub(parentGasTarget);\n var baseFeeMaxChangeDenominator = new ethereumjs_util_1.BN(this._common.param('gasConfig', 'baseFeeMaxChangeDenominator'));\n var calculatedDelta = this.baseFeePerGas.mul(gasUsedDelta)\n .div(parentGasTarget)\n .div(baseFeeMaxChangeDenominator);\n nextBaseFee = ethereumjs_util_1.BN.max(calculatedDelta, new ethereumjs_util_1.BN(1)).add(this.baseFeePerGas);\n }\n else {\n var gasUsedDelta = parentGasTarget.sub(this.gasUsed);\n var baseFeeMaxChangeDenominator = new ethereumjs_util_1.BN(this._common.param('gasConfig', 'baseFeeMaxChangeDenominator'));\n var calculatedDelta = this.baseFeePerGas.mul(gasUsedDelta)\n .div(parentGasTarget)\n .div(baseFeeMaxChangeDenominator);\n nextBaseFee = ethereumjs_util_1.BN.max(this.baseFeePerGas.sub(calculatedDelta), new ethereumjs_util_1.BN(0));\n }\n return nextBaseFee;\n };\n /**\n * Returns a Buffer Array of the raw Buffers in this header, in order.\n */\n BlockHeader.prototype.raw = function () {\n var rawItems = [\n this.parentHash,\n this.uncleHash,\n this.coinbase.buf,\n this.stateRoot,\n this.transactionsTrie,\n this.receiptTrie,\n this.bloom,\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.difficulty)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.number)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.gasLimit)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.gasUsed)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.timestamp)),\n this.extraData,\n this.mixHash,\n this.nonce,\n ];\n if (this._common.isActivatedEIP(1559)) {\n rawItems.push(ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.baseFeePerGas)));\n }\n return rawItems;\n };\n /**\n * Returns the hash of the block header.\n */\n BlockHeader.prototype.hash = function () {\n return ethereumjs_util_1.rlphash(this.raw());\n };\n /**\n * Checks if the block header is a genesis header.\n */\n BlockHeader.prototype.isGenesis = function () {\n return this.number.isZero();\n };\n BlockHeader.prototype._requireClique = function (name) {\n if (this._common.consensusAlgorithm() !== 'clique') {\n throw new Error(\"BlockHeader.\" + name + \"() call only supported for clique PoA networks\");\n }\n };\n /**\n * PoA clique signature hash without the seal.\n */\n BlockHeader.prototype.cliqueSigHash = function () {\n this._requireClique('cliqueSigHash');\n var raw = this.raw();\n raw[12] = this.extraData.slice(0, this.extraData.length - clique_1.CLIQUE_EXTRA_SEAL);\n return ethereumjs_util_1.rlphash(raw);\n };\n /**\n * Checks if the block header is an epoch transition\n * header (only clique PoA, throws otherwise)\n */\n BlockHeader.prototype.cliqueIsEpochTransition = function () {\n this._requireClique('cliqueIsEpochTransition');\n var epoch = new ethereumjs_util_1.BN(this._common.consensusConfig().epoch);\n // Epoch transition block if the block number has no\n // remainder on the division by the epoch length\n return this.number.mod(epoch).isZero();\n };\n /**\n * Returns extra vanity data\n * (only clique PoA, throws otherwise)\n */\n BlockHeader.prototype.cliqueExtraVanity = function () {\n this._requireClique('cliqueExtraVanity');\n return this.extraData.slice(0, clique_1.CLIQUE_EXTRA_VANITY);\n };\n /**\n * Returns extra seal data\n * (only clique PoA, throws otherwise)\n */\n BlockHeader.prototype.cliqueExtraSeal = function () {\n this._requireClique('cliqueExtraSeal');\n return this.extraData.slice(-clique_1.CLIQUE_EXTRA_SEAL);\n };\n /**\n * Seal block with the provided signer.\n * Returns the final extraData field to be assigned to `this.extraData`.\n * @hidden\n */\n BlockHeader.prototype.cliqueSealBlock = function (privateKey) {\n this._requireClique('cliqueSealBlock');\n var signature = ethereumjs_util_1.ecsign(this.cliqueSigHash(), privateKey);\n var signatureB = Buffer.concat([signature.r, signature.s, ethereumjs_util_1.intToBuffer(signature.v - 27)]);\n var extraDataWithoutSeal = this.extraData.slice(0, this.extraData.length - clique_1.CLIQUE_EXTRA_SEAL);\n var extraData = Buffer.concat([extraDataWithoutSeal, signatureB]);\n return extraData;\n };\n /**\n * Returns a list of signers\n * (only clique PoA, throws otherwise)\n *\n * This function throws if not called on an epoch\n * transition block and should therefore be used\n * in conjunction with `cliqueIsEpochTransition()`\n */\n BlockHeader.prototype.cliqueEpochTransitionSigners = function () {\n this._requireClique('cliqueEpochTransitionSigners');\n if (!this.cliqueIsEpochTransition()) {\n throw new Error('Signers are only included in epoch transition blocks (clique)');\n }\n var start = clique_1.CLIQUE_EXTRA_VANITY;\n var end = this.extraData.length - clique_1.CLIQUE_EXTRA_SEAL;\n var signerBuffer = this.extraData.slice(start, end);\n var signerList = [];\n var signerLength = 20;\n for (var start_1 = 0; start_1 <= signerBuffer.length - signerLength; start_1 += signerLength) {\n signerList.push(signerBuffer.slice(start_1, start_1 + signerLength));\n }\n return signerList.map(function (buf) { return new ethereumjs_util_1.Address(buf); });\n };\n /**\n * Verifies the signature of the block (last 65 bytes of extraData field)\n * (only clique PoA, throws otherwise)\n *\n * Method throws if signature is invalid\n */\n BlockHeader.prototype.cliqueVerifySignature = function (signerList) {\n this._requireClique('cliqueVerifySignature');\n var signerAddress = this.cliqueSigner();\n var signerFound = signerList.find(function (signer) {\n return signer.equals(signerAddress);\n });\n return !!signerFound;\n };\n /**\n * Returns the signer address\n */\n BlockHeader.prototype.cliqueSigner = function () {\n this._requireClique('cliqueSigner');\n var extraSeal = this.cliqueExtraSeal();\n // Reasonable default for default blocks\n if (extraSeal.length === 0) {\n return ethereumjs_util_1.Address.zero();\n }\n var r = extraSeal.slice(0, 32);\n var s = extraSeal.slice(32, 64);\n var v = new ethereumjs_util_1.BN(extraSeal.slice(64, 65)).addn(27);\n var pubKey = ethereumjs_util_1.ecrecover(this.cliqueSigHash(), v, r, s);\n return ethereumjs_util_1.Address.fromPublicKey(pubKey);\n };\n /**\n * Returns the rlp encoding of the block header.\n */\n BlockHeader.prototype.serialize = function () {\n return ethereumjs_util_1.rlp.encode(this.raw());\n };\n /**\n * Returns the block header in JSON format.\n */\n BlockHeader.prototype.toJSON = function () {\n var jsonDict = {\n parentHash: '0x' + this.parentHash.toString('hex'),\n uncleHash: '0x' + this.uncleHash.toString('hex'),\n coinbase: this.coinbase.toString(),\n stateRoot: '0x' + this.stateRoot.toString('hex'),\n transactionsTrie: '0x' + this.transactionsTrie.toString('hex'),\n receiptTrie: '0x' + this.receiptTrie.toString('hex'),\n bloom: '0x' + this.bloom.toString('hex'),\n difficulty: ethereumjs_util_1.bnToHex(this.difficulty),\n number: ethereumjs_util_1.bnToHex(this.number),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n gasUsed: ethereumjs_util_1.bnToHex(this.gasUsed),\n timestamp: ethereumjs_util_1.bnToHex(this.timestamp),\n extraData: '0x' + this.extraData.toString('hex'),\n mixHash: '0x' + this.mixHash.toString('hex'),\n nonce: '0x' + this.nonce.toString('hex'),\n };\n if (this._common.isActivatedEIP(1559)) {\n jsonDict['baseFee'] = '0x' + this.baseFeePerGas.toString('hex');\n }\n return jsonDict;\n };\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n BlockHeader.prototype._error = function (msg) {\n msg += \" (\" + this._errorPostfix + \")\";\n var e = new Error(msg);\n return e;\n };\n BlockHeader.prototype._getHardfork = function () {\n return this._common.hardfork() || this._common.activeHardfork(this.number.toNumber());\n };\n BlockHeader.prototype._getHeaderByHash = function (blockchain, hash) {\n return __awaiter(this, void 0, void 0, function () {\n var header, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, blockchain.getBlock(hash)];\n case 1:\n header = (_a.sent()).header;\n return [2 /*return*/, header];\n case 2:\n error_1 = _a.sent();\n if (error_1.type === 'NotFoundError') {\n return [2 /*return*/, undefined];\n }\n else {\n throw error_1;\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Force extra data be DAO_ExtraData for DAO_ForceExtraDataRange blocks after DAO\n * activation block (see: https://blog.slock.it/hard-fork-specification-24b889e70703)\n */\n BlockHeader.prototype._checkDAOExtraData = function () {\n var DAO_ExtraData = Buffer.from('64616f2d686172642d666f726b', 'hex');\n var DAO_ForceExtraDataRange = new ethereumjs_util_1.BN(9);\n if (this._common.hardforkIsActiveOnChain('dao')) {\n // verify the extraData field.\n var blockNumber = this.number;\n var DAOActivationBlock = this._common.hardforkBlockBN('dao');\n if (blockNumber.gte(DAOActivationBlock)) {\n var drift = blockNumber.sub(DAOActivationBlock);\n if (drift.lte(DAO_ForceExtraDataRange)) {\n if (!this.extraData.equals(DAO_ExtraData)) {\n throw new Error(\"extraData should be 'dao-hard-fork'\");\n }\n }\n }\n }\n };\n return BlockHeader;\n}());\nexports.BlockHeader = BlockHeader;\n//# sourceMappingURL=header.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufReverse = exports.fnvBuffer = exports.fnv = exports.getSeed = exports.getEpoc = exports.getFullSize = exports.getCacheSize = exports.params = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar MR = require('miller-rabin');\nexports.params = {\n DATASET_BYTES_INIT: 1073741824,\n DATASET_BYTES_GROWTH: 8388608,\n CACHE_BYTES_INIT: 16777216,\n CACHE_BYTES_GROWTH: 131072,\n CACHE_MULTIPLIER: 1024,\n EPOCH_LENGTH: 30000,\n MIX_BYTES: 128,\n HASH_BYTES: 64,\n DATASET_PARENTS: 256,\n CACHE_ROUNDS: 3,\n ACCESSES: 64,\n WORD_BYTES: 4,\n};\nfunction getCacheSize(epoc) {\n var mr = new MR();\n var sz = exports.params.CACHE_BYTES_INIT +\n exports.params.CACHE_BYTES_GROWTH * epoc;\n sz -= exports.params.HASH_BYTES;\n while (!mr.test(new ethereumjs_util_1.BN(sz / exports.params.HASH_BYTES))) {\n sz -= 2 * exports.params.HASH_BYTES;\n }\n return sz;\n}\nexports.getCacheSize = getCacheSize;\nfunction getFullSize(epoc) {\n var mr = new MR();\n var sz = exports.params.DATASET_BYTES_INIT +\n exports.params.DATASET_BYTES_GROWTH * epoc;\n sz -= exports.params.MIX_BYTES;\n while (!mr.test(new ethereumjs_util_1.BN(sz / exports.params.MIX_BYTES))) {\n sz -= 2 * exports.params.MIX_BYTES;\n }\n return sz;\n}\nexports.getFullSize = getFullSize;\nfunction getEpoc(blockNumber) {\n return Math.floor(blockNumber / exports.params.EPOCH_LENGTH);\n}\nexports.getEpoc = getEpoc;\n/**\n * Generates a seed give the end epoc and optional the begining epoc and the\n * begining epoc seed\n * @method getSeed\n * @param seed Buffer\n * @param begin Number\n * @param end Number\n */\nfunction getSeed(seed, begin, end) {\n for (var i = begin; i < end; i++) {\n seed = ethereumjs_util_1.keccak256(seed);\n }\n return seed;\n}\nexports.getSeed = getSeed;\nfunction fnv(x, y) {\n return ((((x * 0x01000000) | 0) + ((x * 0x193) | 0)) ^ y) >>> 0;\n}\nexports.fnv = fnv;\nfunction fnvBuffer(a, b) {\n var r = Buffer.alloc(a.length);\n for (var i = 0; i < a.length; i = i + 4) {\n r.writeUInt32LE(fnv(a.readUInt32LE(i), b.readUInt32LE(i)), i);\n }\n return r;\n}\nexports.fnvBuffer = fnvBuffer;\nfunction bufReverse(a) {\n var length = a.length;\n var b = Buffer.alloc(length);\n for (var i = 0; i < length; i++) {\n b[i] = a[length - i - 1];\n }\n return b;\n}\nexports.bufReverse = bufReverse;\n//# sourceMappingURL=util.js.map","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockHeader = void 0;\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar clique_1 = require(\"./clique\");\nvar DEFAULT_GAS_LIMIT = new ethereumjs_util_1.BN(Buffer.from('ffffffffffffff', 'hex'));\n/**\n * An object that represents the block header.\n */\nvar BlockHeader = /** @class */ (function () {\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n * Use the public static factory methods to assist in creating a Header object from\n * varying data types.\n * For a default empty header, use `BlockHeader.fromHeaderData()`.\n */\n function BlockHeader(parentHash, uncleHash, coinbase, stateRoot, transactionsTrie, receiptTrie, bloom, difficulty, number, gasLimit, gasUsed, timestamp, extraData, mixHash, nonce, options) {\n if (options === void 0) { options = {}; }\n var _a;\n this._errorPostfix = '';\n if (options.common) {\n this._common = Object.assign(Object.create(Object.getPrototypeOf(options.common)), options.common);\n }\n else {\n var chain = 'mainnet'; // default\n if (options.initWithGenesisHeader) {\n this._common = new common_1.default({ chain: chain, hardfork: 'chainstart' });\n }\n else {\n // This initializes on the Common default hardfork\n this._common = new common_1.default({ chain: chain });\n }\n }\n if (options.hardforkByBlockNumber) {\n this._common.setHardforkByBlockNumber(number.toNumber());\n }\n if (options.initWithGenesisHeader) {\n number = new ethereumjs_util_1.BN(0);\n if (gasLimit.eq(DEFAULT_GAS_LIMIT)) {\n gasLimit = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(this._common.genesis().gasLimit));\n }\n if (timestamp.isZero()) {\n timestamp = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(this._common.genesis().timestamp));\n }\n if (difficulty.isZero()) {\n difficulty = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(this._common.genesis().difficulty));\n }\n if (extraData.length === 0) {\n extraData = ethereumjs_util_1.toBuffer(this._common.genesis().extraData);\n }\n if (nonce.equals(ethereumjs_util_1.zeros(8))) {\n nonce = ethereumjs_util_1.toBuffer(this._common.genesis().nonce);\n }\n if (stateRoot.equals(ethereumjs_util_1.zeros(32))) {\n stateRoot = ethereumjs_util_1.toBuffer(this._common.genesis().stateRoot);\n }\n }\n this.parentHash = parentHash;\n this.uncleHash = uncleHash;\n this.coinbase = coinbase;\n this.stateRoot = stateRoot;\n this.transactionsTrie = transactionsTrie;\n this.receiptTrie = receiptTrie;\n this.bloom = bloom;\n this.difficulty = difficulty;\n this.number = number;\n this.gasLimit = gasLimit;\n this.gasUsed = gasUsed;\n this.timestamp = timestamp;\n this.extraData = extraData;\n this.mixHash = mixHash;\n this.nonce = nonce;\n this._validateHeaderFields();\n this._checkDAOExtraData();\n // Now we have set all the values of this Header, we possibly have set a dummy\n // `difficulty` value (defaults to 0). If we have a `calcDifficultyFromHeader`\n // block option parameter, we instead set difficulty to this value.\n if (options.calcDifficultyFromHeader) {\n this.difficulty = this.canonicalDifficulty(options.calcDifficultyFromHeader);\n }\n // If cliqueSigner is provided, seal block with provided privateKey.\n if (options.cliqueSigner) {\n this.extraData = this.cliqueSealBlock(options.cliqueSigner);\n }\n this._errorPostfix = \"block number=\" + this.number.toNumber() + \" hash=\" + this.hash().toString('hex');\n var freeze = (_a = options === null || options === void 0 ? void 0 : options.freeze) !== null && _a !== void 0 ? _a : true;\n if (freeze) {\n Object.freeze(this);\n }\n }\n /**\n * Static constructor to create a block header from a header data dictionary\n *\n * @param headerData\n * @param opts\n */\n BlockHeader.fromHeaderData = function (headerData, opts) {\n if (headerData === void 0) { headerData = {}; }\n var parentHash = headerData.parentHash, uncleHash = headerData.uncleHash, coinbase = headerData.coinbase, stateRoot = headerData.stateRoot, transactionsTrie = headerData.transactionsTrie, receiptTrie = headerData.receiptTrie, bloom = headerData.bloom, difficulty = headerData.difficulty, number = headerData.number, gasLimit = headerData.gasLimit, gasUsed = headerData.gasUsed, timestamp = headerData.timestamp, extraData = headerData.extraData, mixHash = headerData.mixHash, nonce = headerData.nonce;\n return new BlockHeader(parentHash ? ethereumjs_util_1.toBuffer(parentHash) : ethereumjs_util_1.zeros(32), uncleHash ? ethereumjs_util_1.toBuffer(uncleHash) : ethereumjs_util_1.KECCAK256_RLP_ARRAY, coinbase ? new ethereumjs_util_1.Address(ethereumjs_util_1.toBuffer(coinbase)) : ethereumjs_util_1.Address.zero(), stateRoot ? ethereumjs_util_1.toBuffer(stateRoot) : ethereumjs_util_1.zeros(32), transactionsTrie ? ethereumjs_util_1.toBuffer(transactionsTrie) : ethereumjs_util_1.KECCAK256_RLP, receiptTrie ? ethereumjs_util_1.toBuffer(receiptTrie) : ethereumjs_util_1.KECCAK256_RLP, bloom ? ethereumjs_util_1.toBuffer(bloom) : ethereumjs_util_1.zeros(256), difficulty ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(difficulty)) : new ethereumjs_util_1.BN(0), number ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(number)) : new ethereumjs_util_1.BN(0), gasLimit ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasLimit)) : DEFAULT_GAS_LIMIT, gasUsed ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasUsed)) : new ethereumjs_util_1.BN(0), timestamp ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(timestamp)) : new ethereumjs_util_1.BN(0), extraData ? ethereumjs_util_1.toBuffer(extraData) : Buffer.from([]), mixHash ? ethereumjs_util_1.toBuffer(mixHash) : ethereumjs_util_1.zeros(32), nonce ? ethereumjs_util_1.toBuffer(nonce) : ethereumjs_util_1.zeros(8), opts);\n };\n /**\n * Static constructor to create a block header from a RLP-serialized header\n *\n * @param headerData\n * @param opts\n */\n BlockHeader.fromRLPSerializedHeader = function (serialized, opts) {\n var values = ethereumjs_util_1.rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized header input. Must be array');\n }\n return BlockHeader.fromValuesArray(values, opts);\n };\n /**\n * Static constructor to create a block header from an array of Buffer values\n *\n * @param headerData\n * @param opts\n */\n BlockHeader.fromValuesArray = function (values, opts) {\n if (values.length > 15) {\n throw new Error('invalid header. More values than expected were received');\n }\n var _a = __read(values, 15), parentHash = _a[0], uncleHash = _a[1], coinbase = _a[2], stateRoot = _a[3], transactionsTrie = _a[4], receiptTrie = _a[5], bloom = _a[6], difficulty = _a[7], number = _a[8], gasLimit = _a[9], gasUsed = _a[10], timestamp = _a[11], extraData = _a[12], mixHash = _a[13], nonce = _a[14];\n return new BlockHeader(ethereumjs_util_1.toBuffer(parentHash), ethereumjs_util_1.toBuffer(uncleHash), new ethereumjs_util_1.Address(ethereumjs_util_1.toBuffer(coinbase)), ethereumjs_util_1.toBuffer(stateRoot), ethereumjs_util_1.toBuffer(transactionsTrie), ethereumjs_util_1.toBuffer(receiptTrie), ethereumjs_util_1.toBuffer(bloom), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(difficulty)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(number)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasLimit)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasUsed)), new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(timestamp)), ethereumjs_util_1.toBuffer(extraData), ethereumjs_util_1.toBuffer(mixHash), ethereumjs_util_1.toBuffer(nonce), opts);\n };\n /**\n * Alias for Header.fromHeaderData() with initWithGenesisHeader set to true.\n */\n BlockHeader.genesis = function (headerData, opts) {\n if (headerData === void 0) { headerData = {}; }\n opts = __assign(__assign({}, opts), { initWithGenesisHeader: true });\n return BlockHeader.fromHeaderData(headerData, opts);\n };\n /**\n * Validates correct buffer lengths, throws if invalid.\n */\n BlockHeader.prototype._validateHeaderFields = function () {\n var _a = this, parentHash = _a.parentHash, stateRoot = _a.stateRoot, transactionsTrie = _a.transactionsTrie, receiptTrie = _a.receiptTrie, mixHash = _a.mixHash, nonce = _a.nonce;\n if (parentHash.length !== 32) {\n throw new Error(\"parentHash must be 32 bytes, received \" + parentHash.length + \" bytes\");\n }\n if (stateRoot.length !== 32) {\n throw new Error(\"stateRoot must be 32 bytes, received \" + stateRoot.length + \" bytes\");\n }\n if (transactionsTrie.length !== 32) {\n throw new Error(\"transactionsTrie must be 32 bytes, received \" + transactionsTrie.length + \" bytes\");\n }\n if (receiptTrie.length !== 32) {\n throw new Error(\"receiptTrie must be 32 bytes, received \" + receiptTrie.length + \" bytes\");\n }\n if (mixHash.length !== 32) {\n throw new Error(\"mixHash must be 32 bytes, received \" + mixHash.length + \" bytes\");\n }\n if (nonce.length !== 8) {\n throw new Error(\"nonce must be 8 bytes, received \" + nonce.length + \" bytes\");\n }\n };\n /**\n * Returns the canonical difficulty for this block.\n *\n * @param parentBlockHeader - the header from the parent `Block` of this header\n */\n BlockHeader.prototype.canonicalDifficulty = function (parentBlockHeader) {\n if (this._common.consensusType() !== 'pow') {\n throw new Error('difficulty calculation is only supported on PoW chains');\n }\n if (this._common.consensusAlgorithm() !== 'ethash') {\n throw new Error('difficulty calculation currently only supports the ethash algorithm');\n }\n var hardfork = this._getHardfork();\n var blockTs = this.timestamp;\n var parentTs = parentBlockHeader.timestamp, parentDif = parentBlockHeader.difficulty;\n var minimumDifficulty = new ethereumjs_util_1.BN(this._common.paramByHardfork('pow', 'minimumDifficulty', hardfork));\n var offset = parentDif.div(new ethereumjs_util_1.BN(this._common.paramByHardfork('pow', 'difficultyBoundDivisor', hardfork)));\n var num = this.number.clone();\n // We use a ! here as TS cannot follow this hardfork-dependent logic, but it always gets assigned\n var dif;\n if (this._common.hardforkGteHardfork(hardfork, 'byzantium')) {\n // max((2 if len(parent.uncles) else 1) - ((timestamp - parent.timestamp) // 9), -99) (EIP100)\n var uncleAddend = parentBlockHeader.uncleHash.equals(ethereumjs_util_1.KECCAK256_RLP_ARRAY) ? 1 : 2;\n var a = blockTs.sub(parentTs).idivn(9).ineg().iaddn(uncleAddend);\n var cutoff = new ethereumjs_util_1.BN(-99);\n // MAX(cutoff, a)\n if (cutoff.gt(a)) {\n a = cutoff;\n }\n dif = parentDif.add(offset.mul(a));\n }\n if (this._common.hardforkGteHardfork(hardfork, 'muirGlacier')) {\n // Istanbul/Berlin difficulty bomb delay (EIP2384)\n num.isubn(9000000);\n if (num.ltn(0)) {\n num = new ethereumjs_util_1.BN(0);\n }\n }\n else if (this._common.hardforkGteHardfork(hardfork, 'constantinople')) {\n // Constantinople difficulty bomb delay (EIP1234)\n num.isubn(5000000);\n if (num.ltn(0)) {\n num = new ethereumjs_util_1.BN(0);\n }\n }\n else if (this._common.hardforkGteHardfork(hardfork, 'byzantium')) {\n // Byzantium difficulty bomb delay (EIP649)\n num.isubn(3000000);\n if (num.ltn(0)) {\n num = new ethereumjs_util_1.BN(0);\n }\n }\n else if (this._common.hardforkGteHardfork(hardfork, 'homestead')) {\n // 1 - (block_timestamp - parent_timestamp) // 10\n var a = blockTs.sub(parentTs).idivn(10).ineg().iaddn(1);\n var cutoff = new ethereumjs_util_1.BN(-99);\n // MAX(cutoff, a)\n if (cutoff.gt(a)) {\n a = cutoff;\n }\n dif = parentDif.add(offset.mul(a));\n }\n else {\n // pre-homestead\n if (parentTs.addn(this._common.paramByHardfork('pow', 'durationLimit', hardfork)).gt(blockTs)) {\n dif = offset.add(parentDif);\n }\n else {\n dif = parentDif.sub(offset);\n }\n }\n var exp = num.divn(100000).isubn(2);\n if (!exp.isNeg()) {\n dif.iadd(new ethereumjs_util_1.BN(2).pow(exp));\n }\n if (dif.lt(minimumDifficulty)) {\n dif = minimumDifficulty;\n }\n return dif;\n };\n /**\n * Checks that the block's `difficulty` matches the canonical difficulty.\n *\n * @param parentBlockHeader - the header from the parent `Block` of this header\n */\n BlockHeader.prototype.validateDifficulty = function (parentBlockHeader) {\n return this.canonicalDifficulty(parentBlockHeader).eq(this.difficulty);\n };\n /**\n * For poa, validates `difficulty` is correctly identified as INTURN or NOTURN.\n * Returns false if invalid.\n */\n BlockHeader.prototype.validateCliqueDifficulty = function (blockchain) {\n var _this = this;\n this._requireClique('validateCliqueDifficulty');\n if (!this.difficulty.eq(clique_1.CLIQUE_DIFF_INTURN) && !this.difficulty.eq(clique_1.CLIQUE_DIFF_NOTURN)) {\n throw new Error(\"difficulty for clique block must be INTURN (2) or NOTURN (1), received: \" + this.difficulty.toString());\n }\n if ('cliqueActiveSigners' in blockchain === false) {\n throw new Error('PoA blockchain requires method blockchain.cliqueActiveSigners() to validate clique difficulty');\n }\n var signers = blockchain.cliqueActiveSigners();\n if (signers.length === 0) {\n // abort if signers are unavailable\n return true;\n }\n var signerIndex = signers.findIndex(function (address) { return address.equals(_this.cliqueSigner()); });\n var inTurn = this.number.modn(signers.length) === signerIndex;\n if ((inTurn && this.difficulty.eq(clique_1.CLIQUE_DIFF_INTURN)) ||\n (!inTurn && this.difficulty.eq(clique_1.CLIQUE_DIFF_NOTURN))) {\n return true;\n }\n return false;\n };\n /**\n * Validates if the block gasLimit remains in the\n * boundaries set by the protocol.\n *\n * @param parentBlockHeader - the header from the parent `Block` of this header\n */\n BlockHeader.prototype.validateGasLimit = function (parentBlockHeader) {\n var parentGasLimit = parentBlockHeader.gasLimit;\n var gasLimit = this.gasLimit;\n var hardfork = this._getHardfork();\n var a = parentGasLimit.div(new ethereumjs_util_1.BN(this._common.paramByHardfork('gasConfig', 'gasLimitBoundDivisor', hardfork)));\n var maxGasLimit = parentGasLimit.add(a);\n var minGasLimit = parentGasLimit.sub(a);\n return (gasLimit.lt(maxGasLimit) &&\n gasLimit.gt(minGasLimit) &&\n gasLimit.gte(this._common.paramByHardfork('gasConfig', 'minGasLimit', hardfork)));\n };\n /**\n * Validates the block header, throwing if invalid. It is being validated against the reported `parentHash`.\n * It verifies the current block against the `parentHash`:\n * - The `parentHash` is part of the blockchain (it is a valid header)\n * - Current block number is parent block number + 1\n * - Current block has a strictly higher timestamp\n * - Additional PoW checks ->\n * - Current block has valid difficulty and gas limit\n * - In case that the header is an uncle header, it should not be too old or young in the chain.\n * - Additional PoA clique checks ->\n * - Various extraData checks\n * - Checks on coinbase and mixHash\n * - Current block has a timestamp diff greater or equal to PERIOD\n * - Current block has difficulty correctly marked as INTURN or NOTURN\n * @param blockchain - validate against an @ethereumjs/blockchain\n * @param height - If this is an uncle header, this is the height of the block that is including it\n */\n BlockHeader.prototype.validate = function (blockchain, height) {\n return __awaiter(this, void 0, void 0, function () {\n var hardfork, msg, minLength, msg, signerLength, msg, msg, msg, msg, parentHeader, number, period, dif;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isGenesis()) {\n return [2 /*return*/];\n }\n hardfork = this._getHardfork();\n if (this._common.consensusAlgorithm() !== 'clique') {\n if (this.extraData.length > this._common.paramByHardfork('vm', 'maxExtraDataSize', hardfork)) {\n msg = 'invalid amount of extra data';\n throw this._error(msg);\n }\n }\n else {\n minLength = clique_1.CLIQUE_EXTRA_VANITY + clique_1.CLIQUE_EXTRA_SEAL;\n if (!this.cliqueIsEpochTransition()) {\n // ExtraData length on epoch transition\n if (this.extraData.length !== minLength) {\n msg = \"extraData must be \" + minLength + \" bytes on non-epoch transition blocks, received \" + this.extraData.length + \" bytes\";\n throw this._error(msg);\n }\n }\n else {\n signerLength = this.extraData.length - minLength;\n if (signerLength % 20 !== 0) {\n msg = \"invalid signer list length in extraData, received signer length of \" + signerLength + \" (not divisible by 20)\";\n throw this._error(msg);\n }\n // coinbase (beneficiary) on epoch transition\n if (!this.coinbase.isZero()) {\n msg = \"coinbase must be filled with zeros on epoch transition blocks, received \" + this.coinbase.toString();\n throw this._error(msg);\n }\n }\n // MixHash format\n if (!this.mixHash.equals(Buffer.alloc(32))) {\n msg = \"mixHash must be filled with zeros, received \" + this.mixHash;\n throw this._error(msg);\n }\n if (!this.validateCliqueDifficulty(blockchain)) {\n msg = \"invalid clique difficulty\";\n throw this._error(msg);\n }\n }\n return [4 /*yield*/, this._getHeaderByHash(blockchain, this.parentHash)];\n case 1:\n parentHeader = _a.sent();\n if (!parentHeader) {\n throw new Error('could not find parent header');\n }\n number = this.number;\n if (!number.eq(parentHeader.number.addn(1))) {\n throw new Error('invalid number');\n }\n if (this.timestamp.lte(parentHeader.timestamp)) {\n throw new Error('invalid timestamp');\n }\n if (this._common.consensusAlgorithm() === 'clique') {\n period = this._common.consensusConfig().period;\n // Timestamp diff between blocks is lower than PERIOD (clique)\n if (parentHeader.timestamp.addn(period).gt(this.timestamp)) {\n throw new Error('invalid timestamp diff (lower than period)');\n }\n }\n if (this._common.consensusType() === 'pow') {\n if (!this.validateDifficulty(parentHeader)) {\n throw new Error('invalid difficulty');\n }\n }\n if (!this.validateGasLimit(parentHeader)) {\n throw new Error('invalid gas limit');\n }\n if (height) {\n dif = height.sub(parentHeader.number);\n if (!(dif.ltn(8) && dif.gtn(1))) {\n throw new Error('uncle block has a parent that is too old or too young');\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns a Buffer Array of the raw Buffers in this header, in order.\n */\n BlockHeader.prototype.raw = function () {\n return [\n this.parentHash,\n this.uncleHash,\n this.coinbase.buf,\n this.stateRoot,\n this.transactionsTrie,\n this.receiptTrie,\n this.bloom,\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.difficulty)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.number)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.gasLimit)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.gasUsed)),\n ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(this.timestamp)),\n this.extraData,\n this.mixHash,\n this.nonce,\n ];\n };\n /**\n * Returns the hash of the block header.\n */\n BlockHeader.prototype.hash = function () {\n return ethereumjs_util_1.rlphash(this.raw());\n };\n /**\n * Checks if the block header is a genesis header.\n */\n BlockHeader.prototype.isGenesis = function () {\n return this.number.isZero();\n };\n BlockHeader.prototype._requireClique = function (name) {\n if (this._common.consensusAlgorithm() !== 'clique') {\n throw new Error(\"BlockHeader.\" + name + \"() call only supported for clique PoA networks\");\n }\n };\n /**\n * PoA clique signature hash without the seal.\n */\n BlockHeader.prototype.cliqueSigHash = function () {\n this._requireClique('cliqueSigHash');\n var raw = this.raw();\n raw[12] = this.extraData.slice(0, this.extraData.length - clique_1.CLIQUE_EXTRA_SEAL);\n return ethereumjs_util_1.rlphash(raw);\n };\n /**\n * Checks if the block header is an epoch transition\n * header (only clique PoA, throws otherwise)\n */\n BlockHeader.prototype.cliqueIsEpochTransition = function () {\n this._requireClique('cliqueIsEpochTransition');\n var epoch = new ethereumjs_util_1.BN(this._common.consensusConfig().epoch);\n // Epoch transition block if the block number has no\n // remainder on the division by the epoch length\n return this.number.mod(epoch).isZero();\n };\n /**\n * Returns extra vanity data\n * (only clique PoA, throws otherwise)\n */\n BlockHeader.prototype.cliqueExtraVanity = function () {\n this._requireClique('cliqueExtraVanity');\n return this.extraData.slice(0, clique_1.CLIQUE_EXTRA_VANITY);\n };\n /**\n * Returns extra seal data\n * (only clique PoA, throws otherwise)\n */\n BlockHeader.prototype.cliqueExtraSeal = function () {\n this._requireClique('cliqueExtraSeal');\n return this.extraData.slice(-clique_1.CLIQUE_EXTRA_SEAL);\n };\n /**\n * Seal block with the provided signer.\n * Returns the final extraData field to be assigned to `this.extraData`.\n * @hidden\n */\n BlockHeader.prototype.cliqueSealBlock = function (privateKey) {\n this._requireClique('cliqueSealBlock');\n var signature = ethereumjs_util_1.ecsign(this.cliqueSigHash(), privateKey);\n var signatureB = Buffer.concat([signature.r, signature.s, ethereumjs_util_1.intToBuffer(signature.v - 27)]);\n var extraDataWithoutSeal = this.extraData.slice(0, this.extraData.length - clique_1.CLIQUE_EXTRA_SEAL);\n // ensure extraDataWithoutSeal is at least 32 bytes (CLIQUE_EXTRA_VANITY)\n if (extraDataWithoutSeal.length < clique_1.CLIQUE_EXTRA_VANITY) {\n var remainingLength = Buffer.alloc(clique_1.CLIQUE_EXTRA_VANITY - extraDataWithoutSeal.length);\n extraDataWithoutSeal = Buffer.concat([extraDataWithoutSeal, remainingLength]);\n }\n var extraData = Buffer.concat([extraDataWithoutSeal, signatureB]);\n return extraData;\n };\n /**\n * Returns a list of signers\n * (only clique PoA, throws otherwise)\n *\n * This function throws if not called on an epoch\n * transition block and should therefore be used\n * in conjunction with `cliqueIsEpochTransition()`\n */\n BlockHeader.prototype.cliqueEpochTransitionSigners = function () {\n this._requireClique('cliqueEpochTransitionSigners');\n if (!this.cliqueIsEpochTransition()) {\n throw new Error('Signers are only included in epoch transition blocks (clique)');\n }\n var start = clique_1.CLIQUE_EXTRA_VANITY;\n var end = this.extraData.length - clique_1.CLIQUE_EXTRA_SEAL;\n var signerBuffer = this.extraData.slice(start, end);\n var signerList = [];\n var signerLength = 20;\n for (var start_1 = 0; start_1 <= signerBuffer.length - signerLength; start_1 += signerLength) {\n signerList.push(signerBuffer.slice(start_1, start_1 + signerLength));\n }\n return signerList.map(function (buf) { return new ethereumjs_util_1.Address(buf); });\n };\n /**\n * Verifies the signature of the block (last 65 bytes of extraData field)\n * (only clique PoA, throws otherwise)\n *\n * Method throws if signature is invalid\n */\n BlockHeader.prototype.cliqueVerifySignature = function (signerList) {\n this._requireClique('cliqueVerifySignature');\n var signerAddress = this.cliqueSigner();\n var signerFound = signerList.find(function (signer) {\n return signer.equals(signerAddress);\n });\n return !!signerFound;\n };\n /**\n * Returns the signer address\n */\n BlockHeader.prototype.cliqueSigner = function () {\n this._requireClique('cliqueSigner');\n var extraSeal = this.cliqueExtraSeal();\n // Reasonable default for default blocks\n if (extraSeal.length === 0) {\n return ethereumjs_util_1.Address.zero();\n }\n var r = extraSeal.slice(0, 32);\n var s = extraSeal.slice(32, 64);\n var v = new ethereumjs_util_1.BN(extraSeal.slice(64, 65)).addn(27);\n var pubKey = ethereumjs_util_1.ecrecover(this.cliqueSigHash(), v, r, s);\n return ethereumjs_util_1.Address.fromPublicKey(pubKey);\n };\n /**\n * Returns the rlp encoding of the block header.\n */\n BlockHeader.prototype.serialize = function () {\n return ethereumjs_util_1.rlp.encode(this.raw());\n };\n /**\n * Returns the block header in JSON format.\n */\n BlockHeader.prototype.toJSON = function () {\n return {\n parentHash: '0x' + this.parentHash.toString('hex'),\n uncleHash: '0x' + this.uncleHash.toString('hex'),\n coinbase: this.coinbase.toString(),\n stateRoot: '0x' + this.stateRoot.toString('hex'),\n transactionsTrie: '0x' + this.transactionsTrie.toString('hex'),\n receiptTrie: '0x' + this.receiptTrie.toString('hex'),\n bloom: '0x' + this.bloom.toString('hex'),\n difficulty: ethereumjs_util_1.bnToHex(this.difficulty),\n number: ethereumjs_util_1.bnToHex(this.number),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n gasUsed: ethereumjs_util_1.bnToHex(this.gasUsed),\n timestamp: ethereumjs_util_1.bnToHex(this.timestamp),\n extraData: '0x' + this.extraData.toString('hex'),\n mixHash: '0x' + this.mixHash.toString('hex'),\n nonce: '0x' + this.nonce.toString('hex'),\n };\n };\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n BlockHeader.prototype._error = function (msg) {\n msg += \" (\" + this._errorPostfix + \")\";\n var e = new Error(msg);\n return e;\n };\n BlockHeader.prototype._getHardfork = function () {\n return this._common.hardfork() || this._common.activeHardfork(this.number.toNumber());\n };\n BlockHeader.prototype._getHeaderByHash = function (blockchain, hash) {\n return __awaiter(this, void 0, void 0, function () {\n var header, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, blockchain.getBlock(hash)];\n case 1:\n header = (_a.sent()).header;\n return [2 /*return*/, header];\n case 2:\n error_1 = _a.sent();\n if (error_1.type === 'NotFoundError') {\n return [2 /*return*/, undefined];\n }\n else {\n throw error_1;\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Force extra data be DAO_ExtraData for DAO_ForceExtraDataRange blocks after DAO\n * activation block (see: https://blog.slock.it/hard-fork-specification-24b889e70703)\n */\n BlockHeader.prototype._checkDAOExtraData = function () {\n var DAO_ExtraData = Buffer.from('64616f2d686172642d666f726b', 'hex');\n var DAO_ForceExtraDataRange = new ethereumjs_util_1.BN(9);\n if (this._common.hardforkIsActiveOnChain('dao')) {\n // verify the extraData field.\n var blockNumber = this.number;\n var DAOActivationBlock = this._common.hardforkBlockBN('dao');\n if (blockNumber.gte(DAOActivationBlock)) {\n var drift = blockNumber.sub(DAOActivationBlock);\n if (drift.lte(DAO_ForceExtraDataRange)) {\n if (!this.extraData.equals(DAO_ExtraData)) {\n throw new Error(\"extraData should be 'dao-hard-fork'\");\n }\n }\n }\n }\n };\n return BlockHeader;\n}());\nexports.BlockHeader = BlockHeader;\n//# sourceMappingURL=header.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetConnector = exports.DefaultOptionsByName = exports.DefaultFlavor = exports.FilecoinFlavorName = exports.EthereumFlavorName = void 0;\nconst ethereum_1 = require(\"@ganache/ethereum\");\nconst ethereum_options_1 = require(\"@ganache/ethereum-options\");\nconst filecoin_options_1 = require(\"@ganache/filecoin-options\");\nconst colors_1 = require(\"@ganache/colors\");\nconst chalk_1 = __importDefault(require(\"chalk\"));\n// we need \"@ganache/options\" in order for TS to properly infer types for `DefaultOptionsByName`\nrequire(\"@ganache/options\");\nconst NEED_HELP = \"Need help? Reach out to the Truffle community at\";\nconst COMMUNITY_LINK = \"https://trfl.co/support\";\nexports.EthereumFlavorName = \"ethereum\";\nexports.FilecoinFlavorName = \"filecoin\";\nexports.DefaultFlavor = exports.EthereumFlavorName;\nexports.DefaultOptionsByName = {\n [exports.EthereumFlavorName]: ethereum_options_1.EthereumDefaults,\n [exports.FilecoinFlavorName]: filecoin_options_1.FilecoinDefaults\n};\nfunction GetConnector(flavor, providerOptions, executor) {\n if (flavor === exports.DefaultFlavor) {\n return new ethereum_1.Connector(providerOptions, executor);\n }\n try {\n switch (flavor) {\n case exports.FilecoinFlavorName: {\n flavor = \"@ganache/filecoin\";\n // TODO: remove the `typeof f.default != \"undefined\" ? ` check once the\n // published filecoin plugin is updated to\n const f = eval(\"require\")(flavor);\n const Connector = typeof f.default != \"undefined\" ? f.default.Connector : f.Connector;\n // @ts-ignore\n return new Connector(providerOptions, executor);\n }\n default: {\n // for future plugin compat\n const { Connector } = require(flavor);\n return new Connector(providerOptions, executor);\n }\n }\n }\n catch (e) {\n if (e.message.includes(`Cannot find module '${flavor}'`)) {\n // we print and exit rather than throw to prevent webpack output from being\n // spat out for the line number\n console.warn(chalk_1.default `\\n\\n{red.bold ERROR:} Could not find Ganache flavor \"{bold filecoin}\" (${flavor}); ` +\n `it probably\\nneeds to be installed.\\n` +\n ` ▸ if you're using Ganache as a library run: \\n` +\n chalk_1.default ` {blue.bold $ npm install ${flavor}}\\n` +\n ` ▸ if you're using Ganache as a CLI run: \\n` +\n chalk_1.default ` {blue.bold $ npm install --global ${flavor}}\\n\\n` +\n chalk_1.default `{hex(\"${colors_1.TruffleColors.porsche}\").bold ${NEED_HELP}}\\n` +\n chalk_1.default `{hex(\"${colors_1.TruffleColors.turquoise}\") ${COMMUNITY_LINK}}\\n\\n`);\n process.exit(1);\n }\n else {\n throw e;\n }\n }\n}\nexports.GetConnector = GetConnector;\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/block\"), exports);\n__exportStar(require(\"./src/runtime-block\"), exports);\n__exportStar(require(\"./src/snapshots\"), exports);\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecureTrie = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar checkpointTrie_1 = require(\"./checkpointTrie\");\n/**\n * You can create a secure Trie where the keys are automatically hashed\n * using **keccak256** by using `import { SecureTrie as Trie } from 'merkle-patricia-tree'`.\n * It has the same methods and constructor as `Trie`.\n * @class SecureTrie\n * @extends Trie\n * @public\n */\nvar SecureTrie = /** @class */ (function (_super) {\n __extends(SecureTrie, _super);\n function SecureTrie() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _super.apply(this, __spread(args)) || this;\n }\n /**\n * Gets a value given a `key`\n * @param key - the key to search for\n * @returns A Promise that resolves to `Buffer` if a value was found or `null` if no value was found.\n */\n SecureTrie.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var hash, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n hash = ethereumjs_util_1.keccak256(key);\n return [4 /*yield*/, _super.prototype.get.call(this, hash)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Stores a given `value` at the given `key`.\n * For a falsey value, use the original key to avoid double hashing the key.\n * @param key\n * @param value\n */\n SecureTrie.prototype.put = function (key, val) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!val || val.toString() === '')) return [3 /*break*/, 2];\n return [4 /*yield*/, this.del(key)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n hash = ethereumjs_util_1.keccak256(key);\n return [4 /*yield*/, _super.prototype.put.call(this, hash, val)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a value given a `key`.\n * @param key\n */\n SecureTrie.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n hash = ethereumjs_util_1.keccak256(key);\n return [4 /*yield*/, _super.prototype.del.call(this, hash)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * prove has been renamed to [[SecureTrie.createProof]].\n * @deprecated\n * @param trie\n * @param key\n */\n SecureTrie.prove = function (trie, key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.createProof(trie, key)];\n });\n });\n };\n /**\n * Creates a proof that can be verified using [[SecureTrie.verifyProof]].\n * @param trie\n * @param key\n */\n SecureTrie.createProof = function (trie, key) {\n var hash = ethereumjs_util_1.keccak256(key);\n return _super.createProof.call(this, trie, hash);\n };\n /**\n * Verifies a proof.\n * @param rootHash\n * @param key\n * @param proof\n * @throws If proof is found to be invalid.\n * @returns The value from the key.\n */\n SecureTrie.verifyProof = function (rootHash, key, proof) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n hash = ethereumjs_util_1.keccak256(key);\n return [2 /*return*/, _super.verifyProof.call(this, rootHash, hash, proof)];\n });\n });\n };\n /**\n * Returns a copy of the underlying trie with the interface of SecureTrie.\n * @param includeCheckpoints - If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.\n */\n SecureTrie.prototype.copy = function (includeCheckpoints) {\n if (includeCheckpoints === void 0) { includeCheckpoints = true; }\n var db = this.db.copy();\n var secureTrie = new SecureTrie(db._leveldb, this.root);\n if (includeCheckpoints && this.isCheckpoint) {\n secureTrie.db.checkpoints = __spread(this.db.checkpoints);\n }\n return secureTrie;\n };\n return SecureTrie;\n}(checkpointTrie_1.CheckpointTrie));\nexports.SecureTrie = SecureTrie;\n//# sourceMappingURL=secure.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar blockchain_1 = __importDefault(require(\"@ethereumjs/blockchain\"));\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar index_1 = require(\"./state/index\");\nvar runCode_1 = __importDefault(require(\"./runCode\"));\nvar runCall_1 = __importDefault(require(\"./runCall\"));\nvar runTx_1 = __importDefault(require(\"./runTx\"));\nvar runBlock_1 = __importDefault(require(\"./runBlock\"));\nvar opcodes_1 = require(\"./evm/opcodes\");\nvar precompiles_1 = require(\"./evm/precompiles\");\nvar runBlockchain_1 = __importDefault(require(\"./runBlockchain\"));\nvar AsyncEventEmitter = require('async-eventemitter');\nvar promisify = require('util.promisify');\n// very ugly way to detect if we are running in a browser\nvar isBrowser = new Function('try {return this===window;}catch(e){ return false;}');\nvar mcl;\nvar mclInitPromise;\nif (!isBrowser()) {\n mcl = require('mcl-wasm');\n mclInitPromise = mcl.init(mcl.BLS12_381);\n}\n/**\n * Execution engine which can be used to run a blockchain, individual\n * blocks, individual transactions, or snippets of EVM bytecode.\n *\n * This class is an AsyncEventEmitter, please consult the README to learn how to use it.\n */\nvar VM = /** @class */ (function (_super) {\n __extends(VM, _super);\n /**\n * Instantiates a new [[VM]] Object.\n * @param opts\n */\n function VM(opts) {\n var e_1, _a;\n if (opts === void 0) { opts = {}; }\n var _b;\n var _this = _super.call(this) || this;\n _this._isInitialized = false;\n _this._opts = opts;\n // Throw on chain or hardfork options removed in latest major release\n // to prevent implicit chain setup on a wrong chain\n if ('chain' in opts || 'hardfork' in opts) {\n throw new Error('Chain/hardfork options are not allowed any more on initialization');\n }\n if (opts.common) {\n //EIPs\n var supportedEIPs = [2315, 2537, 2565, 2718, 2929, 2930];\n try {\n for (var _c = __values(opts.common.eips()), _d = _c.next(); !_d.done; _d = _c.next()) {\n var eip = _d.value;\n if (!supportedEIPs.includes(eip)) {\n throw new Error(eip + \" is not supported by the VM\");\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n _this._common = opts.common;\n }\n else {\n var DEFAULT_CHAIN = 'mainnet';\n var supportedHardforks = [\n 'chainstart',\n 'homestead',\n 'dao',\n 'tangerineWhistle',\n 'spuriousDragon',\n 'byzantium',\n 'constantinople',\n 'petersburg',\n 'istanbul',\n 'muirGlacier',\n 'berlin',\n ];\n _this._common = new common_1.default({\n chain: DEFAULT_CHAIN,\n supportedHardforks: supportedHardforks,\n });\n }\n _this._common.on('hardforkChanged', function () {\n _this._opcodes = opcodes_1.getOpcodesForHF(_this._common);\n });\n // Set list of opcodes based on HF\n // TODO: make this EIP-friendly\n _this._opcodes = opcodes_1.getOpcodesForHF(_this._common);\n if (opts.stateManager) {\n _this.stateManager = opts.stateManager;\n }\n else {\n var trie = opts.state || new merkle_patricia_tree_1.SecureTrie();\n _this.stateManager = new index_1.DefaultStateManager({\n trie: trie,\n common: _this._common,\n });\n }\n _this.blockchain = opts.blockchain || new blockchain_1.default({ common: _this._common });\n _this._allowUnlimitedContractSize = opts.allowUnlimitedContractSize || false;\n _this._hardforkByBlockNumber = (_b = opts.hardforkByBlockNumber) !== null && _b !== void 0 ? _b : false;\n if (_this._common.isActivatedEIP(2537)) {\n if (isBrowser()) {\n throw new Error('EIP-2537 is currently not supported in browsers');\n }\n else {\n _this._mcl = mcl;\n }\n }\n // We cache this promisified function as it's called from the main execution loop, and\n // promisifying each time has a huge performance impact.\n _this._emit = promisify(_this.emit.bind(_this));\n return _this;\n }\n /**\n * VM async constructor. Creates engine instance and initializes it.\n *\n * @param opts VM engine constructor options\n */\n VM.create = function (opts) {\n if (opts === void 0) { opts = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var vm;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n vm = new this(opts);\n return [4 /*yield*/, vm.init()];\n case 1:\n _a.sent();\n return [2 /*return*/, vm];\n }\n });\n });\n };\n VM.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var mcl_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this._isInitialized) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.blockchain.initPromise];\n case 1:\n _a.sent();\n if (!(this._opts.activatePrecompiles && !this._opts.stateManager)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.stateManager.checkpoint()\n // put 1 wei in each of the precompiles in order to make the accounts non-empty and thus not have them deduct `callNewAccount` gas.\n ];\n case 2:\n _a.sent();\n // put 1 wei in each of the precompiles in order to make the accounts non-empty and thus not have them deduct `callNewAccount` gas.\n return [4 /*yield*/, Promise.all(Object.keys(precompiles_1.precompiles)\n .map(function (k) { return new ethereumjs_util_1.Address(Buffer.from(k, 'hex')); })\n .map(function (address) { return __awaiter(_this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n account = ethereumjs_util_1.Account.fromAccountData({ balance: 1 });\n return [4 /*yield*/, this.stateManager.putAccount(address, account)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); }))];\n case 3:\n // put 1 wei in each of the precompiles in order to make the accounts non-empty and thus not have them deduct `callNewAccount` gas.\n _a.sent();\n return [4 /*yield*/, this.stateManager.commit()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5:\n if (!this._common.isActivatedEIP(2537)) return [3 /*break*/, 8];\n if (!isBrowser()) return [3 /*break*/, 6];\n throw new Error('EIP-2537 is currently not supported in browsers');\n case 6:\n mcl_1 = this._mcl;\n return [4 /*yield*/, mclInitPromise]; // ensure that mcl is initialized.\n case 7:\n _a.sent(); // ensure that mcl is initialized.\n mcl_1.setMapToMode(mcl_1.IRTF); // set the right map mode; otherwise mapToG2 will return wrong values.\n mcl_1.verifyOrderG1(1); // subgroup checks for G1\n mcl_1.verifyOrderG2(1); // subgroup checks for G2\n _a.label = 8;\n case 8:\n this._isInitialized = true;\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Processes blocks and adds them to the blockchain.\n *\n * This method modifies the state.\n *\n * @param blockchain - An [@ethereumjs/blockchain](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/blockchain) object to process\n */\n VM.prototype.runBlockchain = function (blockchain, maxBlocks) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.init()];\n case 1:\n _a.sent();\n return [2 /*return*/, runBlockchain_1.default.bind(this)(blockchain, maxBlocks)];\n }\n });\n });\n };\n /**\n * Processes the `block` running all of the transactions it contains and updating the miner's account\n *\n * This method modifies the state. If `generate` is `true`, the state modifications will be\n * reverted if an exception is raised. If it's `false`, it won't revert if the block's header is\n * invalid. If an error is thrown from an event handler, the state may or may not be reverted.\n *\n * @param {RunBlockOpts} opts - Default values for options:\n * - `generate`: false\n */\n VM.prototype.runBlock = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.init()];\n case 1:\n _a.sent();\n return [2 /*return*/, runBlock_1.default.bind(this)(opts)];\n }\n });\n });\n };\n /**\n * Process a transaction. Run the vm. Transfers eth. Checks balances.\n *\n * This method modifies the state. If an error is thrown, the modifications are reverted, except\n * when the error is thrown from an event handler. In the latter case the state may or may not be\n * reverted.\n *\n * @param {RunTxOpts} opts\n */\n VM.prototype.runTx = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.init()];\n case 1:\n _a.sent();\n return [2 /*return*/, runTx_1.default.bind(this)(opts)];\n }\n });\n });\n };\n /**\n * runs a call (or create) operation.\n *\n * This method modifies the state.\n *\n * @param {RunCallOpts} opts\n */\n VM.prototype.runCall = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.init()];\n case 1:\n _a.sent();\n return [2 /*return*/, runCall_1.default.bind(this)(opts)];\n }\n });\n });\n };\n /**\n * Runs EVM code.\n *\n * This method modifies the state.\n *\n * @param {RunCodeOpts} opts\n */\n VM.prototype.runCode = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.init()];\n case 1:\n _a.sent();\n return [2 /*return*/, runCode_1.default.bind(this)(opts)];\n }\n });\n });\n };\n /**\n * Returns a list with the currently activated opcodes\n * available for VM execution\n */\n VM.prototype.getActiveOpcodes = function () {\n return opcodes_1.getOpcodesForHF(this._common);\n };\n /**\n * Returns a copy of the [[VM]] instance.\n */\n VM.prototype.copy = function () {\n return new VM({\n stateManager: this.stateManager.copy(),\n blockchain: this.blockchain,\n common: this._common,\n });\n };\n return VM;\n}(AsyncEventEmitter));\nexports.default = VM;\n//# sourceMappingURL=index.js.map","\"use strict\";\n/* eslint-disable no-dupe-class-members */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Block = void 0;\nvar merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar tx_1 = require(\"@ethereumjs/tx\");\nvar header_1 = require(\"./header\");\n/**\n * An object that represents the block.\n */\nvar Block = /** @class */ (function () {\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n * Use the static factory methods to assist in creating a Block object from varying data types and options.\n */\n function Block(header, transactions, uncleHeaders, opts) {\n if (transactions === void 0) { transactions = []; }\n if (uncleHeaders === void 0) { uncleHeaders = []; }\n if (opts === void 0) { opts = {}; }\n var _a;\n this.transactions = [];\n this.uncleHeaders = [];\n this.txTrie = new merkle_patricia_tree_1.BaseTrie();\n this.header = header || header_1.BlockHeader.fromHeaderData({}, opts);\n this.transactions = transactions;\n this.uncleHeaders = uncleHeaders;\n this._common = this.header._common;\n if (this._common.consensusType() === 'poa' && uncleHeaders.length > 0) {\n throw new Error('Block initialization with uncleHeaders on a PoA network is not allowed');\n }\n var freeze = (_a = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _a !== void 0 ? _a : true;\n if (freeze) {\n Object.freeze(this);\n }\n }\n /**\n * Static constructor to create a block from a block data dictionary\n *\n * @param blockData\n * @param opts\n */\n Block.fromBlockData = function (blockData, opts) {\n var e_1, _a, e_2, _b;\n if (blockData === void 0) { blockData = {}; }\n var headerData = blockData.header, txsData = blockData.transactions, uhsData = blockData.uncleHeaders;\n var header = header_1.BlockHeader.fromHeaderData(headerData, opts);\n // parse transactions\n var transactions = [];\n try {\n for (var _c = __values(txsData || []), _d = _c.next(); !_d.done; _d = _c.next()) {\n var txData = _d.value;\n var tx = tx_1.TransactionFactory.fromTxData(txData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common }));\n transactions.push(tx);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // parse uncle headers\n var uncleHeaders = [];\n try {\n for (var _e = __values(uhsData || []), _f = _e.next(); !_f.done; _f = _e.next()) {\n var uhData = _f.value;\n var uh = header_1.BlockHeader.fromHeaderData(uhData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common, \n // Disable this option here (all other options carried over), since this overwrites\n // the provided Difficulty to an incorrect value\n calcDifficultyFromHeader: undefined }));\n uncleHeaders.push(uh);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return new Block(header, transactions, uncleHeaders, opts);\n };\n /**\n * Static constructor to create a block from a RLP-serialized block\n *\n * @param serialized\n * @param opts\n */\n Block.fromRLPSerializedBlock = function (serialized, opts) {\n var values = ethereumjs_util_1.rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized block input. Must be array');\n }\n return Block.fromValuesArray(values, opts);\n };\n /**\n * Static constructor to create a block from an array of Buffer values\n *\n * @param values\n * @param opts\n */\n Block.fromValuesArray = function (values, opts) {\n var e_3, _a, e_4, _b;\n if (values.length > 3) {\n throw new Error('invalid block. More values than expected were received');\n }\n var _c = __read(values, 3), headerData = _c[0], txsData = _c[1], uhsData = _c[2];\n var header = header_1.BlockHeader.fromValuesArray(headerData, opts);\n // parse transactions\n var transactions = [];\n try {\n for (var _d = __values(txsData || []), _e = _d.next(); !_e.done; _e = _d.next()) {\n var txData = _e.value;\n transactions.push(tx_1.TransactionFactory.fromBlockBodyData(txData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common })));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_3) throw e_3.error; }\n }\n // parse uncle headers\n var uncleHeaders = [];\n try {\n for (var _f = __values(uhsData || []), _g = _f.next(); !_g.done; _g = _f.next()) {\n var uncleHeaderData = _g.value;\n uncleHeaders.push(header_1.BlockHeader.fromValuesArray(uncleHeaderData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common, \n // Disable this option here (all other options carried over), since this overwrites the provided Difficulty to an incorrect value\n calcDifficultyFromHeader: undefined })));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return new Block(header, transactions, uncleHeaders, opts);\n };\n /**\n * Alias for Block.fromBlockData() with initWithGenesisHeader set to true.\n */\n Block.genesis = function (blockData, opts) {\n if (blockData === void 0) { blockData = {}; }\n opts = __assign(__assign({}, opts), { initWithGenesisHeader: true });\n return Block.fromBlockData(blockData, opts);\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this block, in order.\n */\n Block.prototype.raw = function () {\n return [\n this.header.raw(),\n this.transactions.map(function (tx) {\n return 'transactionType' in tx && tx.transactionType > 0 ? tx.serialize() : tx.raw();\n }),\n this.uncleHeaders.map(function (uh) { return uh.raw(); }),\n ];\n };\n /**\n * Produces a hash the RLP of the block.\n */\n Block.prototype.hash = function () {\n return this.header.hash();\n };\n /**\n * Determines if this block is the genesis block.\n */\n Block.prototype.isGenesis = function () {\n return this.header.isGenesis();\n };\n /**\n * Returns the rlp encoding of the block.\n */\n Block.prototype.serialize = function () {\n return ethereumjs_util_1.rlp.encode(this.raw());\n };\n /**\n * Generates transaction trie for validation.\n */\n Block.prototype.genTxTrie = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, transactions, txTrie, i, tx, key, value;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this, transactions = _a.transactions, txTrie = _a.txTrie;\n i = 0;\n _b.label = 1;\n case 1:\n if (!(i < transactions.length)) return [3 /*break*/, 4];\n tx = transactions[i];\n key = ethereumjs_util_1.rlp.encode(i);\n value = tx.serialize();\n return [4 /*yield*/, txTrie.put(key, value)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Validates the transaction trie by generating a trie\n * and do a check on the root hash.\n */\n Block.prototype.validateTransactionsTrie = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.transactions.length === 0) {\n result = this.header.transactionsTrie.equals(ethereumjs_util_1.KECCAK256_RLP);\n return [2 /*return*/, result];\n }\n if (!this.txTrie.root.equals(ethereumjs_util_1.KECCAK256_RLP)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.genTxTrie()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n result = this.txTrie.root.equals(this.header.transactionsTrie);\n return [2 /*return*/, result];\n }\n });\n });\n };\n Block.prototype.validateTransactions = function (stringError) {\n var _this = this;\n if (stringError === void 0) { stringError = false; }\n var errors = [];\n this.transactions.forEach(function (tx, i) {\n var errs = tx.validate(true);\n if (_this._common.isActivatedEIP(1559)) {\n if (tx.transactionType === 2) {\n tx = tx;\n if (tx.maxFeePerGas.lt(_this.header.baseFeePerGas)) {\n errs.push('tx unable to pay base fee (EIP-1559 tx)');\n }\n }\n else {\n tx = tx;\n if (tx.gasPrice.lt(_this.header.baseFeePerGas)) {\n errs.push('tx unable to pay base fee (non EIP-1559 tx)');\n }\n }\n }\n if (errs.length > 0) {\n errors.push(\"errors at tx \" + i + \": \" + errs.join(', '));\n }\n });\n return stringError ? errors : errors.length === 0;\n };\n /**\n * Performs the following consistency checks on the block:\n *\n * - Value checks on the header fields\n * - Signature and gasLimit validation for included txs\n * - Validation of the tx trie\n * - Consistency checks and header validation of included uncles\n *\n * Throws if invalid.\n *\n * @param blockchain - validate against a @ethereumjs/blockchain\n */\n Block.prototype.validate = function (blockchain) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.header.validate(blockchain)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.validateUncles(blockchain)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.validateData()];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Validates the block data, throwing if invalid.\n * This can be checked on the Block itself without needing access to any parent block\n * It checks:\n * - All transactions are valid\n * - The transactions trie is valid\n * - The uncle hash is valid\n */\n Block.prototype.validateData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var txErrors, msg, validateTxTrie;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n txErrors = this.validateTransactions(true);\n if (txErrors.length > 0) {\n msg = \"invalid transactions: \" + txErrors.join(' ');\n throw this.header._error(msg);\n }\n return [4 /*yield*/, this.validateTransactionsTrie()];\n case 1:\n validateTxTrie = _a.sent();\n if (!validateTxTrie) {\n throw new Error('invalid transaction trie');\n }\n if (!this.validateUnclesHash()) {\n throw new Error('invalid uncle hash');\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Validates the uncle's hash.\n */\n Block.prototype.validateUnclesHash = function () {\n var raw = ethereumjs_util_1.rlp.encode(this.uncleHeaders.map(function (uh) { return uh.raw(); }));\n return ethereumjs_util_1.keccak256(raw).equals(this.header.uncleHash);\n };\n /**\n * Consistency checks and header validation for uncles included,\n * in the block, if any.\n *\n * Throws if invalid.\n *\n * The rules of uncles are the following:\n * Uncle Header is a valid header.\n * Uncle Header is an orphan, i.e. it is not one of the headers of the canonical chain.\n * Uncle Header has a parentHash which points to the canonical chain. This parentHash is within the last 7 blocks.\n * Uncle Header is not already included as uncle in another block.\n * Header has at most 2 uncles.\n * Header does not count an uncle twice.\n *\n * @param blockchain - additionally validate against an @ethereumjs/blockchain instance\n */\n Block.prototype.validateUncles = function (blockchain) {\n return __awaiter(this, void 0, void 0, function () {\n var uncleHashes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isGenesis()) {\n return [2 /*return*/];\n }\n // Header has at most 2 uncles\n if (this.uncleHeaders.length > 2) {\n throw new Error('too many uncle headers');\n }\n uncleHashes = this.uncleHeaders.map(function (header) { return header.hash().toString('hex'); });\n if (!(new Set(uncleHashes).size === uncleHashes.length)) {\n throw new Error('duplicate uncles');\n }\n return [4 /*yield*/, this._validateUncleHeaders(this.uncleHeaders, blockchain)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns the canonical difficulty for this block.\n *\n * @param parentBlock - the parent of this `Block`\n */\n Block.prototype.canonicalDifficulty = function (parentBlock) {\n return this.header.canonicalDifficulty(parentBlock.header);\n };\n /**\n * Checks that the block's `difficulty` matches the canonical difficulty.\n *\n * @param parentBlock - the parent of this `Block`\n */\n Block.prototype.validateDifficulty = function (parentBlock) {\n return this.header.validateDifficulty(parentBlock.header);\n };\n /**\n * Validates if the block gasLimit remains in the\n * boundaries set by the protocol.\n *\n * @param parentBlock - the parent of this `Block`\n */\n Block.prototype.validateGasLimit = function (parentBlock) {\n return this.header.validateGasLimit(parentBlock.header);\n };\n /**\n * Returns the block in JSON format.\n */\n Block.prototype.toJSON = function () {\n return {\n header: this.header.toJSON(),\n transactions: this.transactions.map(function (tx) { return tx.toJSON(); }),\n uncleHeaders: this.uncleHeaders.map(function (uh) { return uh.toJSON(); }),\n };\n };\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n Block.prototype._error = function (msg) {\n return this.header._error(msg);\n };\n /**\n * The following rules are checked in this method:\n * Uncle Header is a valid header.\n * Uncle Header is an orphan, i.e. it is not one of the headers of the canonical chain.\n * Uncle Header has a parentHash which points to the canonical chain. This parentHash is within the last 7 blocks.\n * Uncle Header is not already included as uncle in another block.\n * @param uncleHeaders - list of uncleHeaders\n * @param blockchain - pointer to the blockchain\n */\n Block.prototype._validateUncleHeaders = function (uncleHeaders, blockchain) {\n return __awaiter(this, void 0, void 0, function () {\n var canonicalBlockMap, lowestUncleNumber, canonicalChainHashes, includedUncles, getBlocks, parentHash, i, parentBlock;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (uncleHeaders.length == 0) {\n return [2 /*return*/];\n }\n // Each Uncle Header is a valid header\n return [4 /*yield*/, Promise.all(uncleHeaders.map(function (uh) { return uh.validate(blockchain, _this.header.number); }))\n // Check how many blocks we should get in order to validate the uncle.\n // In the worst case, we get 8 blocks, in the best case, we only get 1 block.\n ];\n case 1:\n // Each Uncle Header is a valid header\n _a.sent();\n canonicalBlockMap = [];\n lowestUncleNumber = this.header.number.clone();\n uncleHeaders.map(function (header) {\n if (header.number.lt(lowestUncleNumber)) {\n lowestUncleNumber = header.number.clone();\n }\n });\n canonicalChainHashes = {};\n includedUncles = {};\n getBlocks = this.header.number.clone().sub(lowestUncleNumber).addn(1).toNumber();\n parentHash = this.header.parentHash;\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < getBlocks)) return [3 /*break*/, 5];\n return [4 /*yield*/, this._getBlockByHash(blockchain, parentHash)];\n case 3:\n parentBlock = _a.sent();\n if (!parentBlock) {\n throw new Error('could not find parent block');\n }\n canonicalBlockMap.push(parentBlock);\n // mark block hash as part of the canonical chain\n canonicalChainHashes[parentBlock.hash().toString('hex')] = true;\n // for each of the uncles, mark the uncle as included\n parentBlock.uncleHeaders.map(function (uh) {\n includedUncles[uh.hash().toString('hex')] = true;\n });\n parentHash = parentBlock.header.parentHash;\n _a.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5:\n // Here we check:\n // Uncle Header is an orphan, i.e. it is not one of the headers of the canonical chain.\n // Uncle Header is not already included as uncle in another block.\n // Uncle Header has a parentHash which points to the canonical chain.\n uncleHeaders.map(function (uh) {\n var uncleHash = uh.hash().toString('hex');\n var parentHash = uh.parentHash.toString('hex');\n if (!canonicalChainHashes[parentHash]) {\n throw new Error('The parent hash of the uncle header is not part of the canonical chain');\n }\n if (includedUncles[uncleHash]) {\n throw new Error('The uncle is already included in the canonical chain');\n }\n if (canonicalChainHashes[uncleHash]) {\n throw new Error('The uncle is a canonical block');\n }\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Block.prototype._getBlockByHash = function (blockchain, hash) {\n return __awaiter(this, void 0, void 0, function () {\n var block, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, blockchain.getBlock(hash)];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block];\n case 2:\n error_1 = _a.sent();\n if (error_1.type === 'NotFoundError') {\n return [2 /*return*/, undefined];\n }\n else {\n throw error_1;\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n return Block;\n}());\nexports.Block = Block;\n//# sourceMappingURL=block.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecureTrie = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar checkpointTrie_1 = require(\"./checkpointTrie\");\n/**\n * You can create a secure Trie where the keys are automatically hashed\n * using **keccak256** by using `import { SecureTrie as Trie } from 'merkle-patricia-tree'`.\n * It has the same methods and constructor as `Trie`.\n * @class SecureTrie\n * @extends Trie\n * @public\n */\nvar SecureTrie = /** @class */ (function (_super) {\n __extends(SecureTrie, _super);\n function SecureTrie() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _super.apply(this, __spread(args)) || this;\n }\n /**\n * Gets a value given a `key`\n * @param key - the key to search for\n * @returns A Promise that resolves to `Buffer` if a value was found or `null` if no value was found.\n */\n SecureTrie.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var hash, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n hash = ethereumjs_util_1.keccak256(key);\n return [4 /*yield*/, _super.prototype.get.call(this, hash)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Stores a given `value` at the given `key`.\n * For a falsey value, use the original key to avoid double hashing the key.\n * @param key\n * @param value\n */\n SecureTrie.prototype.put = function (key, val) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!val || val.toString() === '')) return [3 /*break*/, 2];\n return [4 /*yield*/, this.del(key)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n hash = ethereumjs_util_1.keccak256(key);\n return [4 /*yield*/, _super.prototype.put.call(this, hash, val)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a value given a `key`.\n * @param key\n */\n SecureTrie.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n hash = ethereumjs_util_1.keccak256(key);\n return [4 /*yield*/, _super.prototype.del.call(this, hash)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * prove has been renamed to [[SecureTrie.createProof]].\n * @deprecated\n * @param trie\n * @param key\n */\n SecureTrie.prove = function (trie, key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.createProof(trie, key)];\n });\n });\n };\n /**\n * Creates a proof that can be verified using [[SecureTrie.verifyProof]].\n * @param trie\n * @param key\n */\n SecureTrie.createProof = function (trie, key) {\n var hash = ethereumjs_util_1.keccak256(key);\n return _super.createProof.call(this, trie, hash);\n };\n /**\n * Verifies a proof.\n * @param rootHash\n * @param key\n * @param proof\n * @throws If proof is found to be invalid.\n * @returns The value from the key.\n */\n SecureTrie.verifyProof = function (rootHash, key, proof) {\n return __awaiter(this, void 0, void 0, function () {\n var hash;\n return __generator(this, function (_a) {\n hash = ethereumjs_util_1.keccak256(key);\n return [2 /*return*/, _super.verifyProof.call(this, rootHash, hash, proof)];\n });\n });\n };\n /**\n * Returns a copy of the underlying trie with the interface of SecureTrie.\n * @param includeCheckpoints - If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.\n */\n SecureTrie.prototype.copy = function (includeCheckpoints) {\n if (includeCheckpoints === void 0) { includeCheckpoints = true; }\n var db = this.db.copy();\n var secureTrie = new SecureTrie(db._leveldb, this.root);\n if (includeCheckpoints && this.isCheckpoint) {\n secureTrie.db.checkpoints = __spread(this.db.checkpoints);\n }\n return secureTrie;\n };\n return SecureTrie;\n}(checkpointTrie_1.CheckpointTrie));\nexports.SecureTrie = SecureTrie;\n//# sourceMappingURL=secure.js.map","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar block_1 = require(\"./block\");\nObject.defineProperty(exports, \"Block\", { enumerable: true, get: function () { return block_1.Block; } });\nvar header_1 = require(\"./header\");\nObject.defineProperty(exports, \"BlockHeader\", { enumerable: true, get: function () { return header_1.BlockHeader; } });\n__exportStar(require(\"./types\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/* eslint-disable no-dupe-class-members */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Block = void 0;\nvar merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar tx_1 = require(\"@ethereumjs/tx\");\nvar header_1 = require(\"./header\");\n/**\n * An object that represents the block.\n */\nvar Block = /** @class */ (function () {\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n * Use the static factory methods to assist in creating a Block object from varying data types and options.\n */\n function Block(header, transactions, uncleHeaders, opts) {\n if (transactions === void 0) { transactions = []; }\n if (uncleHeaders === void 0) { uncleHeaders = []; }\n if (opts === void 0) { opts = {}; }\n var _a;\n this.transactions = [];\n this.uncleHeaders = [];\n this.txTrie = new merkle_patricia_tree_1.BaseTrie();\n this.header = header || header_1.BlockHeader.fromHeaderData({}, opts);\n this.transactions = transactions;\n this.uncleHeaders = uncleHeaders;\n this._common = this.header._common;\n if (this._common.consensusType() === 'poa' && uncleHeaders.length > 0) {\n throw new Error('Block initialization with uncleHeaders on a PoA network is not allowed');\n }\n var freeze = (_a = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _a !== void 0 ? _a : true;\n if (freeze) {\n Object.freeze(this);\n }\n }\n /**\n * Static constructor to create a block from a block data dictionary\n *\n * @param blockData\n * @param opts\n */\n Block.fromBlockData = function (blockData, opts) {\n var e_1, _a, e_2, _b;\n if (blockData === void 0) { blockData = {}; }\n var headerData = blockData.header, txsData = blockData.transactions, uhsData = blockData.uncleHeaders;\n var header = header_1.BlockHeader.fromHeaderData(headerData, opts);\n // parse transactions\n var transactions = [];\n try {\n for (var _c = __values(txsData || []), _d = _c.next(); !_d.done; _d = _c.next()) {\n var txData = _d.value;\n var tx = tx_1.TransactionFactory.fromTxData(txData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common }));\n transactions.push(tx);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // parse uncle headers\n var uncleHeaders = [];\n try {\n for (var _e = __values(uhsData || []), _f = _e.next(); !_f.done; _f = _e.next()) {\n var uhData = _f.value;\n var uh = header_1.BlockHeader.fromHeaderData(uhData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common, \n // Disable this option here (all other options carried over), since this overwrites\n // the provided Difficulty to an incorrect value\n calcDifficultyFromHeader: undefined }));\n uncleHeaders.push(uh);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return new Block(header, transactions, uncleHeaders, opts);\n };\n /**\n * Static constructor to create a block from a RLP-serialized block\n *\n * @param serialized\n * @param opts\n */\n Block.fromRLPSerializedBlock = function (serialized, opts) {\n var values = ethereumjs_util_1.rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized block input. Must be array');\n }\n return Block.fromValuesArray(values, opts);\n };\n /**\n * Static constructor to create a block from an array of Buffer values\n *\n * @param values\n * @param opts\n */\n Block.fromValuesArray = function (values, opts) {\n var e_3, _a, e_4, _b;\n if (values.length > 3) {\n throw new Error('invalid block. More values than expected were received');\n }\n var _c = __read(values, 3), headerData = _c[0], txsData = _c[1], uhsData = _c[2];\n var header = header_1.BlockHeader.fromValuesArray(headerData, opts);\n // parse transactions\n var transactions = [];\n try {\n for (var _d = __values(txsData || []), _e = _d.next(); !_e.done; _e = _d.next()) {\n var txData = _e.value;\n transactions.push(tx_1.TransactionFactory.fromBlockBodyData(txData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common })));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_3) throw e_3.error; }\n }\n // parse uncle headers\n var uncleHeaders = [];\n try {\n for (var _f = __values(uhsData || []), _g = _f.next(); !_g.done; _g = _f.next()) {\n var uncleHeaderData = _g.value;\n uncleHeaders.push(header_1.BlockHeader.fromValuesArray(uncleHeaderData, __assign(__assign({}, opts), { \n // Use header common in case of hardforkByBlockNumber being activated\n common: header._common, \n // Disable this option here (all other options carried over), since this overwrites the provided Difficulty to an incorrect value\n calcDifficultyFromHeader: undefined })));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return new Block(header, transactions, uncleHeaders, opts);\n };\n /**\n * Alias for Block.fromBlockData() with initWithGenesisHeader set to true.\n */\n Block.genesis = function (blockData, opts) {\n if (blockData === void 0) { blockData = {}; }\n opts = __assign(__assign({}, opts), { initWithGenesisHeader: true });\n return Block.fromBlockData(blockData, opts);\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this block, in order.\n */\n Block.prototype.raw = function () {\n return [\n this.header.raw(),\n this.transactions.map(function (tx) {\n return 'transactionType' in tx && tx.transactionType > 0 ? tx.serialize() : tx.raw();\n }),\n this.uncleHeaders.map(function (uh) { return uh.raw(); }),\n ];\n };\n /**\n * Produces a hash the RLP of the block.\n */\n Block.prototype.hash = function () {\n return this.header.hash();\n };\n /**\n * Determines if this block is the genesis block.\n */\n Block.prototype.isGenesis = function () {\n return this.header.isGenesis();\n };\n /**\n * Returns the rlp encoding of the block.\n */\n Block.prototype.serialize = function () {\n return ethereumjs_util_1.rlp.encode(this.raw());\n };\n /**\n * Generates transaction trie for validation.\n */\n Block.prototype.genTxTrie = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, transactions, txTrie, i, tx, key, value;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this, transactions = _a.transactions, txTrie = _a.txTrie;\n i = 0;\n _b.label = 1;\n case 1:\n if (!(i < transactions.length)) return [3 /*break*/, 4];\n tx = transactions[i];\n key = ethereumjs_util_1.rlp.encode(i);\n value = tx.serialize();\n return [4 /*yield*/, txTrie.put(key, value)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Validates the transaction trie by generating a trie\n * and do a check on the root hash.\n */\n Block.prototype.validateTransactionsTrie = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.transactions.length === 0) {\n result = this.header.transactionsTrie.equals(ethereumjs_util_1.KECCAK256_RLP);\n return [2 /*return*/, result];\n }\n if (!this.txTrie.root.equals(ethereumjs_util_1.KECCAK256_RLP)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.genTxTrie()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n result = this.txTrie.root.equals(this.header.transactionsTrie);\n return [2 /*return*/, result];\n }\n });\n });\n };\n Block.prototype.validateTransactions = function (stringError) {\n if (stringError === void 0) { stringError = false; }\n var errors = [];\n this.transactions.forEach(function (tx, i) {\n var errs = tx.validate(true);\n if (errs.length > 0) {\n errors.push(\"errors at tx \" + i + \": \" + errs.join(', '));\n }\n });\n return stringError ? errors : errors.length === 0;\n };\n /**\n * Performs the following consistency checks on the block:\n *\n * - Value checks on the header fields\n * - Signature and gasLimit validation for included txs\n * - Validation of the tx trie\n * - Consistency checks and header validation of included uncles\n *\n * Throws if invalid.\n *\n * @param blockchain - validate against a @ethereumjs/blockchain\n */\n Block.prototype.validate = function (blockchain) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.header.validate(blockchain)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.validateUncles(blockchain)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.validateData()];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Validates the block data, throwing if invalid.\n * This can be checked on the Block itself without needing access to any parent block\n * It checks:\n * - All transactions are valid\n * - The transactions trie is valid\n * - The uncle hash is valid\n */\n Block.prototype.validateData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var txErrors, msg, validateTxTrie;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n txErrors = this.validateTransactions(true);\n if (txErrors.length > 0) {\n msg = \"invalid transactions: \" + txErrors.join(' ');\n throw this.header._error(msg);\n }\n return [4 /*yield*/, this.validateTransactionsTrie()];\n case 1:\n validateTxTrie = _a.sent();\n if (!validateTxTrie) {\n throw new Error('invalid transaction trie');\n }\n if (!this.validateUnclesHash()) {\n throw new Error('invalid uncle hash');\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Validates the uncle's hash.\n */\n Block.prototype.validateUnclesHash = function () {\n var raw = ethereumjs_util_1.rlp.encode(this.uncleHeaders.map(function (uh) { return uh.raw(); }));\n return ethereumjs_util_1.keccak256(raw).equals(this.header.uncleHash);\n };\n /**\n * Consistency checks and header validation for uncles included,\n * in the block, if any.\n *\n * Throws if invalid.\n *\n * The rules of uncles are the following:\n * Uncle Header is a valid header.\n * Uncle Header is an orphan, i.e. it is not one of the headers of the canonical chain.\n * Uncle Header has a parentHash which points to the canonical chain. This parentHash is within the last 7 blocks.\n * Uncle Header is not already included as uncle in another block.\n * Header has at most 2 uncles.\n * Header does not count an uncle twice.\n *\n * @param blockchain - additionally validate against an @ethereumjs/blockchain instance\n */\n Block.prototype.validateUncles = function (blockchain) {\n return __awaiter(this, void 0, void 0, function () {\n var uncleHashes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isGenesis()) {\n return [2 /*return*/];\n }\n // Header has at most 2 uncles\n if (this.uncleHeaders.length > 2) {\n throw new Error('too many uncle headers');\n }\n uncleHashes = this.uncleHeaders.map(function (header) { return header.hash().toString('hex'); });\n if (!(new Set(uncleHashes).size === uncleHashes.length)) {\n throw new Error('duplicate uncles');\n }\n return [4 /*yield*/, this._validateUncleHeaders(this.uncleHeaders, blockchain)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns the canonical difficulty for this block.\n *\n * @param parentBlock - the parent of this `Block`\n */\n Block.prototype.canonicalDifficulty = function (parentBlock) {\n return this.header.canonicalDifficulty(parentBlock.header);\n };\n /**\n * Checks that the block's `difficulty` matches the canonical difficulty.\n *\n * @param parentBlock - the parent of this `Block`\n */\n Block.prototype.validateDifficulty = function (parentBlock) {\n return this.header.validateDifficulty(parentBlock.header);\n };\n /**\n * Validates if the block gasLimit remains in the\n * boundaries set by the protocol.\n *\n * @param parentBlock - the parent of this `Block`\n */\n Block.prototype.validateGasLimit = function (parentBlock) {\n return this.header.validateGasLimit(parentBlock.header);\n };\n /**\n * Returns the block in JSON format.\n */\n Block.prototype.toJSON = function () {\n return {\n header: this.header.toJSON(),\n transactions: this.transactions.map(function (tx) { return tx.toJSON(); }),\n uncleHeaders: this.uncleHeaders.map(function (uh) { return uh.toJSON(); }),\n };\n };\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n Block.prototype._error = function (msg) {\n return this.header._error(msg);\n };\n /**\n * The following rules are checked in this method:\n * Uncle Header is a valid header.\n * Uncle Header is an orphan, i.e. it is not one of the headers of the canonical chain.\n * Uncle Header has a parentHash which points to the canonical chain. This parentHash is within the last 7 blocks.\n * Uncle Header is not already included as uncle in another block.\n * @param uncleHeaders - list of uncleHeaders\n * @param blockchain - pointer to the blockchain\n */\n Block.prototype._validateUncleHeaders = function (uncleHeaders, blockchain) {\n return __awaiter(this, void 0, void 0, function () {\n var canonicalBlockMap, lowestUncleNumber, canonicalChainHashes, includedUncles, getBlocks, parentHash, i, parentBlock;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (uncleHeaders.length == 0) {\n return [2 /*return*/];\n }\n // Each Uncle Header is a valid header\n return [4 /*yield*/, Promise.all(uncleHeaders.map(function (uh) { return uh.validate(blockchain, _this.header.number); }))\n // Check how many blocks we should get in order to validate the uncle.\n // In the worst case, we get 8 blocks, in the best case, we only get 1 block.\n ];\n case 1:\n // Each Uncle Header is a valid header\n _a.sent();\n canonicalBlockMap = [];\n lowestUncleNumber = this.header.number.clone();\n uncleHeaders.map(function (header) {\n if (header.number.lt(lowestUncleNumber)) {\n lowestUncleNumber = header.number.clone();\n }\n });\n canonicalChainHashes = {};\n includedUncles = {};\n getBlocks = this.header.number.clone().sub(lowestUncleNumber).addn(1).toNumber();\n parentHash = this.header.parentHash;\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < getBlocks)) return [3 /*break*/, 5];\n return [4 /*yield*/, this._getBlockByHash(blockchain, parentHash)];\n case 3:\n parentBlock = _a.sent();\n if (!parentBlock) {\n throw new Error('could not find parent block');\n }\n canonicalBlockMap.push(parentBlock);\n // mark block hash as part of the canonical chain\n canonicalChainHashes[parentBlock.hash().toString('hex')] = true;\n // for each of the uncles, mark the uncle as included\n parentBlock.uncleHeaders.map(function (uh) {\n includedUncles[uh.hash().toString('hex')] = true;\n });\n parentHash = parentBlock.header.parentHash;\n _a.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5:\n // Here we check:\n // Uncle Header is an orphan, i.e. it is not one of the headers of the canonical chain.\n // Uncle Header is not already included as uncle in another block.\n // Uncle Header has a parentHash which points to the canonical chain.\n uncleHeaders.map(function (uh) {\n var uncleHash = uh.hash().toString('hex');\n var parentHash = uh.parentHash.toString('hex');\n if (!canonicalChainHashes[parentHash]) {\n throw new Error('The parent hash of the uncle header is not part of the canonical chain');\n }\n if (includedUncles[uncleHash]) {\n throw new Error('The uncle is already included in the canonical chain');\n }\n if (canonicalChainHashes[uncleHash]) {\n throw new Error('The uncle is a canonical block');\n }\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Block.prototype._getBlockByHash = function (blockchain, hash) {\n return __awaiter(this, void 0, void 0, function () {\n var block, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, blockchain.getBlock(hash)];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block];\n case 2:\n error_1 = _a.sent();\n if (error_1.type === 'NotFoundError') {\n return [2 /*return*/, undefined];\n }\n else {\n throw error_1;\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n return Block;\n}());\nexports.Block = Block;\n//# sourceMappingURL=block.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./codes\"), exports);\n__exportStar(require(\"./functions\"), exports);\n__exportStar(require(\"./util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar debug_1 = require(\"debug\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar bloom_1 = __importDefault(require(\"./bloom\"));\nvar evm_1 = __importDefault(require(\"./evm/evm\"));\nvar util_1 = require(\"./evm/opcodes/util\");\nvar message_1 = __importDefault(require(\"./evm/message\"));\nvar txContext_1 = __importDefault(require(\"./evm/txContext\"));\nvar precompiles_1 = require(\"./evm/precompiles\");\nvar debug = debug_1.debug('vm:tx');\nvar debugGas = debug_1.debug('vm:tx:gas');\n/**\n * @ignore\n */\nfunction runTx(opts) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var state, castedTx, result, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // tx is required\n if (!opts.tx) {\n throw new Error('invalid input, tx is required');\n }\n // create a reasonable default if no block is given\n opts.block = (_a = opts.block) !== null && _a !== void 0 ? _a : block_1.Block.fromBlockData({}, { common: opts.tx.common });\n if (opts.skipBlockGasLimitValidation !== true &&\n opts.block.header.gasLimit.lt(opts.tx.gasLimit)) {\n throw new Error('tx has a higher gas limit than the block');\n }\n state = this.stateManager;\n // Ensure we start with a clear warmed accounts Map\n if (this._common.isActivatedEIP(2929)) {\n state.clearWarmedAccounts();\n }\n return [4 /*yield*/, state.checkpoint()];\n case 1:\n _b.sent();\n debug('-'.repeat(100));\n debug(\"tx checkpoint\");\n // Is it an Access List transaction?\n if ('transactionType' in opts.tx &&\n opts.tx.transactionType === 1 &&\n this._common.isActivatedEIP(2929)) {\n if (!this._common.isActivatedEIP(2930)) {\n throw new Error('Cannot run transaction: EIP 2930 is not activated.');\n }\n castedTx = opts.tx;\n castedTx.AccessListJSON.forEach(function (accessListItem) {\n var address = Buffer.from(accessListItem.address.slice(2), 'hex');\n state.addWarmedAddress(address);\n accessListItem.storageKeys.forEach(function (storageKey) {\n state.addWarmedStorage(address, Buffer.from(storageKey.slice(2), 'hex'));\n });\n });\n }\n _b.label = 2;\n case 2:\n _b.trys.push([2, 5, 7, 8]);\n return [4 /*yield*/, _runTx.bind(this)(opts)];\n case 3:\n result = _b.sent();\n return [4 /*yield*/, state.commit()];\n case 4:\n _b.sent();\n debug(\"tx checkpoint committed\");\n return [2 /*return*/, result];\n case 5:\n e_1 = _b.sent();\n return [4 /*yield*/, state.revert()];\n case 6:\n _b.sent();\n debug(\"tx checkpoint reverted\");\n throw e_1;\n case 7:\n if (this._common.isActivatedEIP(2929)) {\n state.clearWarmedAccounts();\n }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n}\nexports.default = runTx;\nfunction _runTx(opts) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var state, tx, block, caller, basefee, gasLimit, fromAccount, nonce, balance, cost, txCost, txContext, value, data, to, message, evm, results, gasRefund, actualTxCost, txCostDiff, miner, minerAccount, keys, keys_1, keys_1_1, k, address, e_2_1, event;\n var e_2, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n state = this.stateManager;\n tx = opts.tx, block = opts.block;\n if (!block) {\n throw new Error('block required');\n }\n /**\n * The `beforeTx` event\n *\n * @event Event: beforeTx\n * @type {Object}\n * @property {Transaction} tx emits the Transaction that is about to be processed\n */\n return [4 /*yield*/, this._emit('beforeTx', tx)];\n case 1:\n /**\n * The `beforeTx` event\n *\n * @event Event: beforeTx\n * @type {Object}\n * @property {Transaction} tx emits the Transaction that is about to be processed\n */\n _c.sent();\n caller = tx.getSenderAddress();\n debug(\"New tx run hash=\" + opts.tx.hash().toString('hex') + \" sender=\" + caller.toString());\n if (this._common.isActivatedEIP(2929)) {\n // Add origin and precompiles to warm addresses\n precompiles_1.getActivePrecompiles(this._common).forEach(function (address) {\n return state.addWarmedAddress(address.buf);\n });\n state.addWarmedAddress(caller.buf);\n if (tx.to) {\n // Note: in case we create a contract, we do this in EVMs `_executeCreate` (this is also correct in inner calls, per the EIP)\n state.addWarmedAddress(tx.to.buf);\n }\n }\n basefee = tx.getBaseFee();\n gasLimit = tx.gasLimit.clone();\n if (gasLimit.lt(basefee)) {\n throw new Error('base fee exceeds gas limit');\n }\n gasLimit.isub(basefee);\n debugGas(\"Subtracting base fee (\" + basefee + \") from gasLimit (-> \" + gasLimit + \")\");\n return [4 /*yield*/, state.getAccount(caller)];\n case 2:\n fromAccount = _c.sent();\n nonce = fromAccount.nonce, balance = fromAccount.balance;\n if (!opts.skipBalance) {\n cost = tx.getUpfrontCost();\n if (balance.lt(cost)) {\n throw new Error(\"sender doesn't have enough funds to send tx. The upfront cost is: \" + cost + \" and the sender's account only has: \" + balance);\n }\n }\n else if (!opts.skipNonce) {\n if (!nonce.eq(tx.nonce)) {\n throw new Error(\"the tx doesn't have the correct nonce. account has nonce of: \" + nonce + \" tx has nonce of: \" + tx.nonce);\n }\n }\n // Update from account's nonce and balance\n fromAccount.nonce.iaddn(1);\n txCost = tx.gasLimit.mul(tx.gasPrice);\n fromAccount.balance.isub(txCost);\n return [4 /*yield*/, state.putAccount(caller, fromAccount)];\n case 3:\n _c.sent();\n debug(\"Update fromAccount (caller) nonce (-> \" + fromAccount.nonce + \") and balance(-> \" + fromAccount.balance + \")\");\n txContext = new txContext_1.default(tx.gasPrice, caller);\n value = tx.value, data = tx.data, to = tx.to;\n message = new message_1.default({\n caller: caller,\n gasLimit: gasLimit,\n to: to,\n value: value,\n data: data,\n });\n evm = new evm_1.default(this, txContext, block);\n debug(\"Running tx=0x\" + tx\n .hash()\n .toString('hex') + \" with caller=\" + caller.toString() + \" gasLimit=\" + gasLimit + \" to=\" + (to ? to.toString() : '') + \" value=\" + value + \" data=0x\" + util_1.short(data));\n return [4 /*yield*/, evm.executeMessage(message)];\n case 4:\n results = (_c.sent());\n debug('-'.repeat(100));\n debug(\"Received tx results gasUsed=\" + results.gasUsed + \" execResult: [ gasUsed=\" + results.gasUsed + \" exceptionError=\" + (results.execResult.exceptionError ? results.execResult.exceptionError.error : '') + \" returnValue=\" + util_1.short(results.execResult.returnValue) + \" gasRefund=\" + results.execResult.gasRefund + \" ]\");\n /*\n * Parse results\n */\n // Generate the bloom for the tx\n results.bloom = txLogsBloom(results.execResult.logs);\n debug(\"Generated tx bloom with logs=\" + ((_a = results.execResult.logs) === null || _a === void 0 ? void 0 : _a.length));\n // Caculate the total gas used\n results.gasUsed.iadd(basefee);\n debugGas(\"tx add baseFee \" + basefee + \" to gasUsed (-> \" + results.gasUsed + \")\");\n gasRefund = evm._refund;\n if (gasRefund.gtn(0)) {\n if (!gasRefund.lt(results.gasUsed.divn(2))) {\n gasRefund = results.gasUsed.divn(2);\n }\n results.gasUsed.isub(gasRefund);\n debug(\"Subtract tx gasRefund (\" + gasRefund + \") from gasUsed (-> \" + results.gasUsed + \")\");\n }\n else {\n debug(\"No tx gasRefund\");\n }\n results.amountSpent = results.gasUsed.mul(tx.gasPrice);\n return [4 /*yield*/, state.getAccount(caller)];\n case 5:\n // Update sender's balance\n fromAccount = _c.sent();\n actualTxCost = results.gasUsed.mul(tx.gasPrice);\n txCostDiff = txCost.sub(actualTxCost);\n fromAccount.balance.iadd(txCostDiff);\n return [4 /*yield*/, state.putAccount(caller, fromAccount)];\n case 6:\n _c.sent();\n debug(\"Refunded txCostDiff (\" + txCostDiff + \") to fromAccount (caller) balance (-> \" + fromAccount.balance + \")\");\n if (this._common.consensusType() === 'pow') {\n miner = block.header.coinbase;\n }\n else {\n // Backwards-compatibilty check\n // TODO: can be removed along VM v5 release\n if ('cliqueSigner' in block.header) {\n miner = block.header.cliqueSigner();\n }\n else {\n miner = ethereumjs_util_1.Address.zero();\n }\n }\n return [4 /*yield*/, state.getAccount(miner)\n // add the amount spent on gas to the miner's account\n ];\n case 7:\n minerAccount = _c.sent();\n // add the amount spent on gas to the miner's account\n minerAccount.balance.iadd(results.amountSpent);\n // Put the miner account into the state. If the balance of the miner account remains zero, note that\n // the state.putAccount function puts this into the \"touched\" accounts. This will thus be removed when\n // we clean the touched accounts below in case we are in a fork >= SpuriousDragon\n return [4 /*yield*/, state.putAccount(miner, minerAccount)];\n case 8:\n // Put the miner account into the state. If the balance of the miner account remains zero, note that\n // the state.putAccount function puts this into the \"touched\" accounts. This will thus be removed when\n // we clean the touched accounts below in case we are in a fork >= SpuriousDragon\n _c.sent();\n debug(\"tx update miner account (\" + miner.toString() + \") balance (-> \" + minerAccount.balance + \")\");\n if (!results.execResult.selfdestruct) return [3 /*break*/, 16];\n keys = Object.keys(results.execResult.selfdestruct);\n _c.label = 9;\n case 9:\n _c.trys.push([9, 14, 15, 16]);\n keys_1 = __values(keys), keys_1_1 = keys_1.next();\n _c.label = 10;\n case 10:\n if (!!keys_1_1.done) return [3 /*break*/, 13];\n k = keys_1_1.value;\n address = new ethereumjs_util_1.Address(Buffer.from(k, 'hex'));\n return [4 /*yield*/, state.deleteAccount(address)];\n case 11:\n _c.sent();\n debug(\"tx selfdestruct on address=\" + address.toString());\n _c.label = 12;\n case 12:\n keys_1_1 = keys_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _c.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (keys_1_1 && !keys_1_1.done && (_b = keys_1.return)) _b.call(keys_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16: return [4 /*yield*/, state.cleanupTouchedAccounts()];\n case 17:\n _c.sent();\n state.clearOriginalStorageCache();\n event = __assign({ transaction: tx }, results);\n return [4 /*yield*/, this._emit('afterTx', event)];\n case 18:\n _c.sent();\n debug(\"tx run finished hash=\" + opts.tx.hash().toString('hex') + \" sender=\" + caller.toString());\n return [2 /*return*/, results];\n }\n });\n });\n}\n/**\n * @method txLogsBloom\n * @private\n */\nfunction txLogsBloom(logs) {\n var bloom = new bloom_1.default();\n if (logs) {\n for (var i = 0; i < logs.length; i++) {\n var log = logs[i];\n // add the address\n bloom.add(log[0]);\n // add the topics\n var topics = log[1];\n for (var q = 0; q < topics.length; q++) {\n bloom.add(topics[q]);\n }\n }\n }\n return bloom;\n}\n//# sourceMappingURL=runTx.js.map","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar 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 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 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 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\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Trie = void 0;\nvar semaphore_async_await_1 = __importDefault(require(\"semaphore-async-await\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar db_1 = require(\"./db\");\nvar readStream_1 = require(\"./readStream\");\nvar nibbles_1 = require(\"./util/nibbles\");\nvar walkController_1 = require(\"./util/walkController\");\nvar trieNode_1 = require(\"./trieNode\");\nvar assert = require('assert');\n/**\n * The basic trie interface, use with `import { BaseTrie as Trie } from 'merkle-patricia-tree'`.\n * In Ethereum applications stick with the {@link SecureTrie} overlay.\n * The API for the base and the secure interface are about the same.\n */\nvar Trie = /** @class */ (function () {\n /**\n * test\n * @param db - A [levelup](https://github.com/Level/levelup) instance. By default (if the db is `null` or\n * left undefined) creates an in-memory [memdown](https://github.com/Level/memdown) instance.\n * @param root - A `Buffer` for the root of a previously stored trie\n * @param deleteFromDB - Delete nodes from DB on delete operations (disallows switching to an older state root) (default: `false`)\n */\n function Trie(db, root, deleteFromDB) {\n if (deleteFromDB === void 0) { deleteFromDB = false; }\n this.EMPTY_TRIE_ROOT = ethereumjs_util_1.KECCAK256_RLP;\n this.lock = new semaphore_async_await_1.default(1);\n this.db = db ? new db_1.DB(db) : new db_1.DB();\n this._root = this.EMPTY_TRIE_ROOT;\n this._deleteFromDB = deleteFromDB;\n if (root) {\n this.setRoot(root);\n }\n }\n Object.defineProperty(Trie.prototype, \"root\", {\n /** Gets the current root of the `trie` */\n get: function () {\n return this._root;\n },\n /** Sets the current root of the `trie` */\n set: function (value) {\n this.setRoot(value);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * This method is deprecated.\n * Please use `Trie.root(value)` instead.\n *\n * @param value\n * @deprecated\n */\n Trie.prototype.setRoot = function (value) {\n if (!value) {\n value = this.EMPTY_TRIE_ROOT;\n }\n assert(value.length === 32, 'Invalid root length. Roots are 32 bytes');\n this._root = value;\n };\n /**\n * Checks if a given root exists.\n */\n Trie.prototype.checkRoot = function (root) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._lookupNode(root)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, !!value];\n }\n });\n });\n };\n Object.defineProperty(Trie.prototype, \"isCheckpoint\", {\n /**\n * BaseTrie has no checkpointing so return false\n */\n get: function () {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Gets a value given a `key`\n * @param key - the key to search for\n * @returns A Promise that resolves to `Buffer` if a value was found or `null` if no value was found.\n */\n Trie.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, node, remaining, value;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.findPath(key)];\n case 1:\n _a = _b.sent(), node = _a.node, remaining = _a.remaining;\n value = null;\n if (node && remaining.length === 0) {\n value = node.value;\n }\n return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Stores a given `value` at the given `key` or do a delete if `value` is empty\n * (delete operations are only executed on DB with `deleteFromDB` set to `true`)\n * @param key\n * @param value\n * @returns A Promise that resolves once value is stored.\n */\n Trie.prototype.put = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, remaining, stack;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(!value || value.toString() === '')) return [3 /*break*/, 2];\n return [4 /*yield*/, this.del(key)];\n case 1: return [2 /*return*/, _b.sent()];\n case 2: return [4 /*yield*/, this.lock.wait()];\n case 3:\n _b.sent();\n if (!this.root.equals(ethereumjs_util_1.KECCAK256_RLP)) return [3 /*break*/, 5];\n // If no root, initialize this trie\n return [4 /*yield*/, this._createInitialNode(key, value)];\n case 4:\n // If no root, initialize this trie\n _b.sent();\n return [3 /*break*/, 8];\n case 5: return [4 /*yield*/, this.findPath(key)\n // then update\n ];\n case 6:\n _a = _b.sent(), remaining = _a.remaining, stack = _a.stack;\n // then update\n return [4 /*yield*/, this._updateNode(key, value, remaining, stack)];\n case 7:\n // then update\n _b.sent();\n _b.label = 8;\n case 8:\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a value given a `key` from the trie\n * (delete operations are only executed on DB with `deleteFromDB` set to `true`)\n * @param key\n * @returns A Promise that resolves once value is deleted.\n */\n Trie.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, node, stack;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.lock.wait()];\n case 1:\n _b.sent();\n return [4 /*yield*/, this.findPath(key)];\n case 2:\n _a = _b.sent(), node = _a.node, stack = _a.stack;\n if (!node) return [3 /*break*/, 4];\n return [4 /*yield*/, this._deleteNode(key, stack)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Tries to find a path to the node for the given key.\n * It returns a `stack` of nodes to the closest node.\n * @param key - the search key\n */\n Trie.prototype.findPath = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n // eslint-disable-next-line no-async-promise-executor\n return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {\n var stack, targetKey, onFound;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n stack = [];\n targetKey = nibbles_1.bufferToNibbles(key);\n onFound = function (nodeRef, node, keyProgress, walkController) { return __awaiter(_this, void 0, void 0, function () {\n var keyRemainder, branchIndex, branchNode, matchingLen;\n return __generator(this, function (_a) {\n if (node === null) {\n return [2 /*return*/];\n }\n keyRemainder = targetKey.slice(nibbles_1.matchingNibbleLength(keyProgress, targetKey));\n stack.push(node);\n if (node instanceof trieNode_1.BranchNode) {\n if (keyRemainder.length === 0) {\n // we exhausted the key without finding a node\n resolve({ node: node, remaining: [], stack: stack });\n }\n else {\n branchIndex = keyRemainder[0];\n branchNode = node.getBranch(branchIndex);\n if (!branchNode) {\n // there are no more nodes to find and we didn't find the key\n resolve({ node: null, remaining: keyRemainder, stack: stack });\n }\n else {\n // node found, continuing search\n // this can be optimized as this calls getBranch again.\n walkController.onlyBranchIndex(node, keyProgress, branchIndex);\n }\n }\n }\n else if (node instanceof trieNode_1.LeafNode) {\n if (nibbles_1.doKeysMatch(keyRemainder, node.key)) {\n // keys match, return node with empty key\n resolve({ node: node, remaining: [], stack: stack });\n }\n else {\n // reached leaf but keys dont match\n resolve({ node: null, remaining: keyRemainder, stack: stack });\n }\n }\n else if (node instanceof trieNode_1.ExtensionNode) {\n matchingLen = nibbles_1.matchingNibbleLength(keyRemainder, node.key);\n if (matchingLen !== node.key.length) {\n // keys don't match, fail\n resolve({ node: null, remaining: keyRemainder, stack: stack });\n }\n else {\n // keys match, continue search\n walkController.allChildren(node, keyProgress);\n }\n }\n return [2 /*return*/];\n });\n }); };\n // walk trie and process nodes\n return [4 /*yield*/, this.walkTrie(this.root, onFound)\n // Resolve if _walkTrie finishes without finding any nodes\n ];\n case 1:\n // walk trie and process nodes\n _a.sent();\n // Resolve if _walkTrie finishes without finding any nodes\n resolve({ node: null, remaining: [], stack: stack });\n return [2 /*return*/];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Walks a trie until finished.\n * @param root\n * @param onFound - callback to call when a node is found. This schedules new tasks. If no tasks are available, the Promise resolves.\n * @returns Resolves when finished walking trie.\n */\n Trie.prototype.walkTrie = function (root, onFound) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, walkController_1.WalkController.newWalk(onFound, this, root)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @hidden\n * Backwards compatibility\n * @param root -\n * @param onFound -\n */\n Trie.prototype._walkTrie = function (root, onFound) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.walkTrie(root, onFound)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates the initial node from an empty tree.\n * @private\n */\n Trie.prototype._createInitialNode = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var newNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n newNode = new trieNode_1.LeafNode(nibbles_1.bufferToNibbles(key), value);\n this.root = newNode.hash();\n return [4 /*yield*/, this.db.put(this.root, newNode.serialize())];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Retrieves a node from db by hash.\n */\n Trie.prototype.lookupNode = function (node) {\n return __awaiter(this, void 0, void 0, function () {\n var value, foundNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (trieNode_1.isRawNode(node)) {\n return [2 /*return*/, trieNode_1.decodeRawNode(node)];\n }\n value = null;\n foundNode = null;\n return [4 /*yield*/, this.db.get(node)];\n case 1:\n value = _a.sent();\n if (value) {\n foundNode = trieNode_1.decodeNode(value);\n }\n return [2 /*return*/, foundNode];\n }\n });\n });\n };\n /**\n * @hidden\n * Backwards compatibility\n * @param node The node hash to lookup from the DB\n */\n Trie.prototype._lookupNode = function (node) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.lookupNode(node)];\n });\n });\n };\n /**\n * Updates a node.\n * @private\n * @param key\n * @param value\n * @param keyRemainder\n * @param stack\n */\n Trie.prototype._updateNode = function (k, value, keyRemainder, stack) {\n return __awaiter(this, void 0, void 0, function () {\n var toSave, lastNode, key, matchLeaf, l, i, n, newLeaf, lastKey, matchingLength, newBranchNode, newKey, newExtNode, branchKey, formattedNode, newLeafNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n toSave = [];\n lastNode = stack.pop();\n if (!lastNode) {\n throw new Error('Stack underflow');\n }\n key = nibbles_1.bufferToNibbles(k);\n matchLeaf = false;\n if (lastNode instanceof trieNode_1.LeafNode) {\n l = 0;\n for (i = 0; i < stack.length; i++) {\n n = stack[i];\n if (n instanceof trieNode_1.BranchNode) {\n l++;\n }\n else {\n l += n.key.length;\n }\n }\n if (nibbles_1.matchingNibbleLength(lastNode.key, key.slice(l)) === lastNode.key.length &&\n keyRemainder.length === 0) {\n matchLeaf = true;\n }\n }\n if (matchLeaf) {\n // just updating a found value\n lastNode.value = value;\n stack.push(lastNode);\n }\n else if (lastNode instanceof trieNode_1.BranchNode) {\n stack.push(lastNode);\n if (keyRemainder.length !== 0) {\n // add an extension to a branch node\n keyRemainder.shift();\n newLeaf = new trieNode_1.LeafNode(keyRemainder, value);\n stack.push(newLeaf);\n }\n else {\n lastNode.value = value;\n }\n }\n else {\n lastKey = lastNode.key;\n matchingLength = nibbles_1.matchingNibbleLength(lastKey, keyRemainder);\n newBranchNode = new trieNode_1.BranchNode();\n // create a new extension node\n if (matchingLength !== 0) {\n newKey = lastNode.key.slice(0, matchingLength);\n newExtNode = new trieNode_1.ExtensionNode(newKey, value);\n stack.push(newExtNode);\n lastKey.splice(0, matchingLength);\n keyRemainder.splice(0, matchingLength);\n }\n stack.push(newBranchNode);\n if (lastKey.length !== 0) {\n branchKey = lastKey.shift();\n if (lastKey.length !== 0 || lastNode instanceof trieNode_1.LeafNode) {\n // shrinking extension or leaf\n lastNode.key = lastKey;\n formattedNode = this._formatNode(lastNode, false, toSave);\n newBranchNode.setBranch(branchKey, formattedNode);\n }\n else {\n // remove extension or attaching\n this._formatNode(lastNode, false, toSave, true);\n newBranchNode.setBranch(branchKey, lastNode.value);\n }\n }\n else {\n newBranchNode.value = lastNode.value;\n }\n if (keyRemainder.length !== 0) {\n keyRemainder.shift();\n newLeafNode = new trieNode_1.LeafNode(keyRemainder, value);\n stack.push(newLeafNode);\n }\n else {\n newBranchNode.value = value;\n }\n }\n return [4 /*yield*/, this._saveStack(key, stack, toSave)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a node from the trie.\n * @private\n */\n Trie.prototype._deleteNode = function (k, stack) {\n return __awaiter(this, void 0, void 0, function () {\n var processBranchNode, lastNode, parentNode, opStack, key, lastNodeKey, branchNodes, branchNode, branchNodeKey, foundNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n processBranchNode = function (key, branchKey, branchNode, parentNode, stack) {\n // branchNode is the node ON the branch node not THE branch node\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!parentNode || parentNode instanceof trieNode_1.BranchNode) {\n // branch->?\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (parentNode) {\n stack.push(parentNode);\n }\n if (branchNode instanceof trieNode_1.BranchNode) {\n // create an extension node\n // branch->extension->branch\n // @ts-ignore\n var extensionNode = new trieNode_1.ExtensionNode([branchKey], null);\n stack.push(extensionNode);\n key.push(branchKey);\n }\n else {\n var branchNodeKey = branchNode.key;\n // branch key is an extension or a leaf\n // branch->(leaf or extension)\n branchNodeKey.unshift(branchKey);\n branchNode.key = branchNodeKey.slice(0);\n key = key.concat(branchNodeKey);\n }\n stack.push(branchNode);\n }\n else {\n // parent is an extension\n var parentKey = parentNode.key;\n if (branchNode instanceof trieNode_1.BranchNode) {\n // ext->branch\n parentKey.push(branchKey);\n key.push(branchKey);\n parentNode.key = parentKey;\n stack.push(parentNode);\n }\n else {\n var branchNodeKey = branchNode.key;\n // branch node is an leaf or extension and parent node is an exstention\n // add two keys together\n // dont push the parent node\n branchNodeKey.unshift(branchKey);\n key = key.concat(branchNodeKey);\n parentKey = parentKey.concat(branchNodeKey);\n branchNode.key = parentKey;\n }\n stack.push(branchNode);\n }\n return key;\n };\n lastNode = stack.pop();\n assert(lastNode);\n parentNode = stack.pop();\n opStack = [];\n key = nibbles_1.bufferToNibbles(k);\n if (!parentNode) {\n // the root here has to be a leaf.\n this.root = this.EMPTY_TRIE_ROOT;\n return [2 /*return*/];\n }\n if (lastNode instanceof trieNode_1.BranchNode) {\n lastNode.value = null;\n }\n else {\n // the lastNode has to be a leaf if it's not a branch.\n // And a leaf's parent, if it has one, must be a branch.\n if (!(parentNode instanceof trieNode_1.BranchNode)) {\n throw new Error('Expected branch node');\n }\n lastNodeKey = lastNode.key;\n key.splice(key.length - lastNodeKey.length);\n // delete the value\n this._formatNode(lastNode, false, opStack, true);\n parentNode.setBranch(key.pop(), null);\n lastNode = parentNode;\n parentNode = stack.pop();\n }\n branchNodes = lastNode.getChildren();\n if (!(branchNodes.length === 1)) return [3 /*break*/, 4];\n branchNode = branchNodes[0][1];\n branchNodeKey = branchNodes[0][0];\n return [4 /*yield*/, this._lookupNode(branchNode)];\n case 1:\n foundNode = _a.sent();\n if (!foundNode) return [3 /*break*/, 3];\n key = processBranchNode(key, branchNodeKey, foundNode, parentNode, stack);\n return [4 /*yield*/, this._saveStack(key, stack, opStack)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [3 /*break*/, 6];\n case 4:\n // simple removing a leaf and recaluclation the stack\n if (parentNode) {\n stack.push(parentNode);\n }\n stack.push(lastNode);\n return [4 /*yield*/, this._saveStack(key, stack, opStack)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saves a stack of nodes to the database.\n * @private\n * @param key - the key. Should follow the stack\n * @param stack - a stack of nodes to the value given by the key\n * @param opStack - a stack of levelup operations to commit at the end of this funciton\n */\n Trie.prototype._saveStack = function (key, stack, opStack) {\n return __awaiter(this, void 0, void 0, function () {\n var lastRoot, node, branchKey;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // update nodes\n while (stack.length) {\n node = stack.pop();\n if (node instanceof trieNode_1.LeafNode) {\n key.splice(key.length - node.key.length);\n }\n else if (node instanceof trieNode_1.ExtensionNode) {\n key.splice(key.length - node.key.length);\n if (lastRoot) {\n node.value = lastRoot;\n }\n }\n else if (node instanceof trieNode_1.BranchNode) {\n if (lastRoot) {\n branchKey = key.pop();\n node.setBranch(branchKey, lastRoot);\n }\n }\n lastRoot = this._formatNode(node, stack.length === 0, opStack);\n }\n if (lastRoot) {\n this.root = lastRoot;\n }\n return [4 /*yield*/, this.db.batch(opStack)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Formats node to be saved by `levelup.batch`.\n * @private\n * @param node - the node to format.\n * @param topLevel - if the node is at the top level.\n * @param opStack - the opStack to push the node's data.\n * @param remove - whether to remove the node (only used for CheckpointTrie).\n * @returns The node's hash used as the key or the rawNode.\n */\n Trie.prototype._formatNode = function (node, topLevel, opStack, remove) {\n if (remove === void 0) { remove = false; }\n var rlpNode = node.serialize();\n if (rlpNode.length >= 32 || topLevel) {\n // Do not use TrieNode.hash() here otherwise serialize()\n // is applied twice (performance)\n var hashRoot = ethereumjs_util_1.keccak(rlpNode);\n if (remove) {\n if (this._deleteFromDB) {\n opStack.push({\n type: 'del',\n key: hashRoot,\n });\n }\n }\n else {\n opStack.push({\n type: 'put',\n key: hashRoot,\n value: rlpNode,\n });\n }\n return hashRoot;\n }\n return node.raw();\n };\n /**\n * The given hash of operations (key additions or deletions) are executed on the trie\n * (delete operations are only executed on DB with `deleteFromDB` set to `true`)\n * @example\n * const ops = [\n * { type: 'del', key: Buffer.from('father') }\n * , { type: 'put', key: Buffer.from('name'), value: Buffer.from('Yuri Irsenovich Kim') }\n * , { type: 'put', key: Buffer.from('dob'), value: Buffer.from('16 February 1941') }\n * , { type: 'put', key: Buffer.from('spouse'), value: Buffer.from('Kim Young-sook') }\n * , { type: 'put', key: Buffer.from('occupation'), value: Buffer.from('Clown') }\n * ]\n * await trie.batch(ops)\n * @param ops\n */\n Trie.prototype.batch = function (ops) {\n return __awaiter(this, void 0, void 0, function () {\n var ops_1, ops_1_1, op, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 7, 8, 9]);\n ops_1 = __values(ops), ops_1_1 = ops_1.next();\n _b.label = 1;\n case 1:\n if (!!ops_1_1.done) return [3 /*break*/, 6];\n op = ops_1_1.value;\n if (!(op.type === 'put')) return [3 /*break*/, 3];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!op.value) {\n throw new Error('Invalid batch db operation');\n }\n return [4 /*yield*/, this.put(op.key, op.value)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ];\n case 2:\n _b.sent();\n return [3 /*break*/, 5];\n case 3:\n if (!(op.type === 'del')) return [3 /*break*/, 5];\n return [4 /*yield*/, this.del(op.key)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n ops_1_1 = ops_1.next();\n return [3 /*break*/, 1];\n case 6: return [3 /*break*/, 9];\n case 7:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 9];\n case 8:\n try {\n if (ops_1_1 && !ops_1_1.done && (_a = ops_1.return)) _a.call(ops_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saves the nodes from a proof into the trie. If no trie is provided a new one wil be instantiated.\n * @param proof\n * @param trie\n */\n Trie.fromProof = function (proof, trie) {\n return __awaiter(this, void 0, void 0, function () {\n var opStack;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n opStack = proof.map(function (nodeValue) {\n return {\n type: 'put',\n key: ethereumjs_util_1.keccak(nodeValue),\n value: nodeValue,\n };\n });\n if (!trie) {\n trie = new Trie();\n if (opStack[0]) {\n trie.root = opStack[0].key;\n }\n }\n return [4 /*yield*/, trie.db.batch(opStack)];\n case 1:\n _a.sent();\n return [2 /*return*/, trie];\n }\n });\n });\n };\n /**\n * prove has been renamed to [[Trie.createProof]].\n * @deprecated\n * @param trie\n * @param key\n */\n Trie.prove = function (trie, key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.createProof(trie, key)];\n });\n });\n };\n /**\n * Creates a proof from a trie and key that can be verified using [[Trie.verifyProof]].\n * @param trie\n * @param key\n */\n Trie.createProof = function (trie, key) {\n return __awaiter(this, void 0, void 0, function () {\n var stack, p;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, trie.findPath(key)];\n case 1:\n stack = (_a.sent()).stack;\n p = stack.map(function (stackElem) {\n return stackElem.serialize();\n });\n return [2 /*return*/, p];\n }\n });\n });\n };\n /**\n * Verifies a proof.\n * @param rootHash\n * @param key\n * @param proof\n * @throws If proof is found to be invalid.\n * @returns The value from the key.\n */\n Trie.verifyProof = function (rootHash, key, proof) {\n return __awaiter(this, void 0, void 0, function () {\n var proofTrie, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n proofTrie = new Trie(null, rootHash);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Trie.fromProof(proof, proofTrie)];\n case 2:\n proofTrie = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n throw new Error('Invalid proof nodes given');\n case 4: return [2 /*return*/, proofTrie.get(key)];\n }\n });\n });\n };\n /**\n * The `data` event is given an `Object` that has two properties; the `key` and the `value`. Both should be Buffers.\n * @return Returns a [stream](https://nodejs.org/dist/latest-v12.x/docs/api/stream.html#stream_class_stream_readable) of the contents of the `trie`\n */\n Trie.prototype.createReadStream = function () {\n return new readStream_1.TrieReadStream(this);\n };\n /**\n * Creates a new trie backed by the same db.\n */\n Trie.prototype.copy = function () {\n var db = this.db.copy();\n return new Trie(db._leveldb, this.root);\n };\n /**\n * Finds all nodes that are stored directly in the db\n * (some nodes are stored raw inside other nodes)\n * called by {@link ScratchReadStream}\n * @private\n */\n Trie.prototype._findDbNodes = function (onFound) {\n return __awaiter(this, void 0, void 0, function () {\n var outerOnFound;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n outerOnFound = function (nodeRef, node, key, walkController) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (trieNode_1.isRawNode(nodeRef)) {\n if (node !== null) {\n walkController.allChildren(node, key);\n }\n }\n else {\n onFound(nodeRef, node, key, walkController);\n }\n return [2 /*return*/];\n });\n }); };\n return [4 /*yield*/, this.walkTrie(this.root, outerOnFound)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Finds all nodes that store k,v values\n * called by {@link TrieReadStream}\n * @private\n */\n Trie.prototype._findValueNodes = function (onFound) {\n return __awaiter(this, void 0, void 0, function () {\n var outerOnFound;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n outerOnFound = function (nodeRef, node, key, walkController) { return __awaiter(_this, void 0, void 0, function () {\n var fullKey;\n return __generator(this, function (_a) {\n fullKey = key;\n if (node instanceof trieNode_1.LeafNode) {\n fullKey = key.concat(node.key);\n // found leaf node!\n onFound(nodeRef, node, fullKey, walkController);\n }\n else if (node instanceof trieNode_1.BranchNode && node.value) {\n // found branch with value\n onFound(nodeRef, node, fullKey, walkController);\n }\n else {\n // keep looking for value nodes\n if (node !== null) {\n walkController.allChildren(node, key);\n }\n }\n return [2 /*return*/];\n });\n }); };\n return [4 /*yield*/, this.walkTrie(this.root, outerOnFound)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Trie;\n}());\nexports.Trie = Trie;\n//# sourceMappingURL=baseTrie.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB = exports.ENCODING_OPTS = void 0;\nvar level = require('level-mem');\nexports.ENCODING_OPTS = { keyEncoding: 'binary', valueEncoding: 'binary' };\n/**\n * DB is a thin wrapper around the underlying levelup db,\n * which validates inputs and sets encoding type.\n */\nvar DB = /** @class */ (function () {\n /**\n * Initialize a DB instance. If `leveldb` is not provided, DB\n * defaults to an [in-memory store](https://github.com/Level/memdown).\n * @param leveldb - An abstract-leveldown compliant store\n */\n function DB(leveldb) {\n this._leveldb = leveldb || level();\n }\n /**\n * Retrieves a raw value from leveldb.\n * @param key\n * @returns A Promise that resolves to `Buffer` if a value is found or `null` if no value is found.\n */\n DB.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n value = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._leveldb.get(key, exports.ENCODING_OPTS)];\n case 2:\n value = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _a.sent();\n if (error_1.notFound) {\n // not found, returning null\n }\n else {\n throw error_1;\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Writes a value directly to leveldb.\n * @param key The key as a `Buffer`\n * @param value The value to be stored\n */\n DB.prototype.put = function (key, val) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._leveldb.put(key, val, exports.ENCODING_OPTS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes a raw value in the underlying leveldb.\n * @param keys\n */\n DB.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._leveldb.del(key, exports.ENCODING_OPTS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Performs a batch operation on db.\n * @param opStack A stack of levelup operations\n */\n DB.prototype.batch = function (opStack) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._leveldb.batch(opStack, exports.ENCODING_OPTS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns a copy of the DB instance, with a reference\n * to the **same** underlying leveldb instance.\n */\n DB.prototype.copy = function () {\n return new DB(this._leveldb);\n };\n return DB;\n}());\nexports.DB = DB;\n//# sourceMappingURL=db.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Trie = void 0;\nvar semaphore_async_await_1 = __importDefault(require(\"semaphore-async-await\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar db_1 = require(\"./db\");\nvar readStream_1 = require(\"./readStream\");\nvar nibbles_1 = require(\"./util/nibbles\");\nvar walkController_1 = require(\"./util/walkController\");\nvar trieNode_1 = require(\"./trieNode\");\nvar assert = require('assert');\n/**\n * The basic trie interface, use with `import { BaseTrie as Trie } from 'merkle-patricia-tree'`.\n * In Ethereum applications stick with the {@link SecureTrie} overlay.\n * The API for the base and the secure interface are about the same.\n */\nvar Trie = /** @class */ (function () {\n /**\n * test\n * @param db - A [levelup](https://github.com/Level/levelup) instance. By default (if the db is `null` or\n * left undefined) creates an in-memory [memdown](https://github.com/Level/memdown) instance.\n * @param root - A `Buffer` for the root of a previously stored trie\n * @param deleteFromDB - Delete nodes from DB on delete operations (disallows switching to an older state root) (default: `false`)\n */\n function Trie(db, root, deleteFromDB) {\n if (deleteFromDB === void 0) { deleteFromDB = false; }\n this.EMPTY_TRIE_ROOT = ethereumjs_util_1.KECCAK256_RLP;\n this.lock = new semaphore_async_await_1.default(1);\n this.db = db ? new db_1.DB(db) : new db_1.DB();\n this._root = this.EMPTY_TRIE_ROOT;\n this._deleteFromDB = deleteFromDB;\n if (root) {\n this.setRoot(root);\n }\n }\n Object.defineProperty(Trie.prototype, \"root\", {\n /** Gets the current root of the `trie` */\n get: function () {\n return this._root;\n },\n /** Sets the current root of the `trie` */\n set: function (value) {\n this.setRoot(value);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * This method is deprecated.\n * Please use `Trie.root(value)` instead.\n *\n * @param value\n * @deprecated\n */\n Trie.prototype.setRoot = function (value) {\n if (!value) {\n value = this.EMPTY_TRIE_ROOT;\n }\n assert(value.length === 32, 'Invalid root length. Roots are 32 bytes');\n this._root = value;\n };\n /**\n * Checks if a given root exists.\n */\n Trie.prototype.checkRoot = function (root) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._lookupNode(root)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, !!value];\n }\n });\n });\n };\n Object.defineProperty(Trie.prototype, \"isCheckpoint\", {\n /**\n * BaseTrie has no checkpointing so return false\n */\n get: function () {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Gets a value given a `key`\n * @param key - the key to search for\n * @returns A Promise that resolves to `Buffer` if a value was found or `null` if no value was found.\n */\n Trie.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, node, remaining, value;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.findPath(key)];\n case 1:\n _a = _b.sent(), node = _a.node, remaining = _a.remaining;\n value = null;\n if (node && remaining.length === 0) {\n value = node.value;\n }\n return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Stores a given `value` at the given `key` or do a delete if `value` is empty\n * (delete operations are only executed on DB with `deleteFromDB` set to `true`)\n * @param key\n * @param value\n * @returns A Promise that resolves once value is stored.\n */\n Trie.prototype.put = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, remaining, stack;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(!value || value.toString() === '')) return [3 /*break*/, 2];\n return [4 /*yield*/, this.del(key)];\n case 1: return [2 /*return*/, _b.sent()];\n case 2: return [4 /*yield*/, this.lock.wait()];\n case 3:\n _b.sent();\n if (!this.root.equals(ethereumjs_util_1.KECCAK256_RLP)) return [3 /*break*/, 5];\n // If no root, initialize this trie\n return [4 /*yield*/, this._createInitialNode(key, value)];\n case 4:\n // If no root, initialize this trie\n _b.sent();\n return [3 /*break*/, 8];\n case 5: return [4 /*yield*/, this.findPath(key)\n // then update\n ];\n case 6:\n _a = _b.sent(), remaining = _a.remaining, stack = _a.stack;\n // then update\n return [4 /*yield*/, this._updateNode(key, value, remaining, stack)];\n case 7:\n // then update\n _b.sent();\n _b.label = 8;\n case 8:\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a value given a `key` from the trie\n * (delete operations are only executed on DB with `deleteFromDB` set to `true`)\n * @param key\n * @returns A Promise that resolves once value is deleted.\n */\n Trie.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, node, stack;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.lock.wait()];\n case 1:\n _b.sent();\n return [4 /*yield*/, this.findPath(key)];\n case 2:\n _a = _b.sent(), node = _a.node, stack = _a.stack;\n if (!node) return [3 /*break*/, 4];\n return [4 /*yield*/, this._deleteNode(key, stack)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n this.lock.signal();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Tries to find a path to the node for the given key.\n * It returns a `stack` of nodes to the closest node.\n * @param key - the search key\n */\n Trie.prototype.findPath = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n // eslint-disable-next-line no-async-promise-executor\n return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {\n var stack, targetKey, onFound;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n stack = [];\n targetKey = nibbles_1.bufferToNibbles(key);\n onFound = function (nodeRef, node, keyProgress, walkController) { return __awaiter(_this, void 0, void 0, function () {\n var keyRemainder, branchIndex, branchNode, matchingLen;\n return __generator(this, function (_a) {\n if (node === null) {\n return [2 /*return*/];\n }\n keyRemainder = targetKey.slice(nibbles_1.matchingNibbleLength(keyProgress, targetKey));\n stack.push(node);\n if (node instanceof trieNode_1.BranchNode) {\n if (keyRemainder.length === 0) {\n // we exhausted the key without finding a node\n resolve({ node: node, remaining: [], stack: stack });\n }\n else {\n branchIndex = keyRemainder[0];\n branchNode = node.getBranch(branchIndex);\n if (!branchNode) {\n // there are no more nodes to find and we didn't find the key\n resolve({ node: null, remaining: keyRemainder, stack: stack });\n }\n else {\n // node found, continuing search\n // this can be optimized as this calls getBranch again.\n walkController.onlyBranchIndex(node, keyProgress, branchIndex);\n }\n }\n }\n else if (node instanceof trieNode_1.LeafNode) {\n if (nibbles_1.doKeysMatch(keyRemainder, node.key)) {\n // keys match, return node with empty key\n resolve({ node: node, remaining: [], stack: stack });\n }\n else {\n // reached leaf but keys dont match\n resolve({ node: null, remaining: keyRemainder, stack: stack });\n }\n }\n else if (node instanceof trieNode_1.ExtensionNode) {\n matchingLen = nibbles_1.matchingNibbleLength(keyRemainder, node.key);\n if (matchingLen !== node.key.length) {\n // keys don't match, fail\n resolve({ node: null, remaining: keyRemainder, stack: stack });\n }\n else {\n // keys match, continue search\n walkController.allChildren(node, keyProgress);\n }\n }\n return [2 /*return*/];\n });\n }); };\n // walk trie and process nodes\n return [4 /*yield*/, this.walkTrie(this.root, onFound)\n // Resolve if _walkTrie finishes without finding any nodes\n ];\n case 1:\n // walk trie and process nodes\n _a.sent();\n // Resolve if _walkTrie finishes without finding any nodes\n resolve({ node: null, remaining: [], stack: stack });\n return [2 /*return*/];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Walks a trie until finished.\n * @param root\n * @param onFound - callback to call when a node is found. This schedules new tasks. If no tasks are available, the Promise resolves.\n * @returns Resolves when finished walking trie.\n */\n Trie.prototype.walkTrie = function (root, onFound) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, walkController_1.WalkController.newWalk(onFound, this, root)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @hidden\n * Backwards compatibility\n * @param root -\n * @param onFound -\n */\n Trie.prototype._walkTrie = function (root, onFound) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.walkTrie(root, onFound)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates the initial node from an empty tree.\n * @private\n */\n Trie.prototype._createInitialNode = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var newNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n newNode = new trieNode_1.LeafNode(nibbles_1.bufferToNibbles(key), value);\n this.root = newNode.hash();\n return [4 /*yield*/, this.db.put(this.root, newNode.serialize())];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Retrieves a node from db by hash.\n */\n Trie.prototype.lookupNode = function (node) {\n return __awaiter(this, void 0, void 0, function () {\n var value, foundNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (trieNode_1.isRawNode(node)) {\n return [2 /*return*/, trieNode_1.decodeRawNode(node)];\n }\n value = null;\n foundNode = null;\n return [4 /*yield*/, this.db.get(node)];\n case 1:\n value = _a.sent();\n if (value) {\n foundNode = trieNode_1.decodeNode(value);\n }\n return [2 /*return*/, foundNode];\n }\n });\n });\n };\n /**\n * @hidden\n * Backwards compatibility\n * @param node The node hash to lookup from the DB\n */\n Trie.prototype._lookupNode = function (node) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.lookupNode(node)];\n });\n });\n };\n /**\n * Updates a node.\n * @private\n * @param key\n * @param value\n * @param keyRemainder\n * @param stack\n */\n Trie.prototype._updateNode = function (k, value, keyRemainder, stack) {\n return __awaiter(this, void 0, void 0, function () {\n var toSave, lastNode, key, matchLeaf, l, i, n, newLeaf, lastKey, matchingLength, newBranchNode, newKey, newExtNode, branchKey, formattedNode, newLeafNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n toSave = [];\n lastNode = stack.pop();\n if (!lastNode) {\n throw new Error('Stack underflow');\n }\n key = nibbles_1.bufferToNibbles(k);\n matchLeaf = false;\n if (lastNode instanceof trieNode_1.LeafNode) {\n l = 0;\n for (i = 0; i < stack.length; i++) {\n n = stack[i];\n if (n instanceof trieNode_1.BranchNode) {\n l++;\n }\n else {\n l += n.key.length;\n }\n }\n if (nibbles_1.matchingNibbleLength(lastNode.key, key.slice(l)) === lastNode.key.length &&\n keyRemainder.length === 0) {\n matchLeaf = true;\n }\n }\n if (matchLeaf) {\n // just updating a found value\n lastNode.value = value;\n stack.push(lastNode);\n }\n else if (lastNode instanceof trieNode_1.BranchNode) {\n stack.push(lastNode);\n if (keyRemainder.length !== 0) {\n // add an extension to a branch node\n keyRemainder.shift();\n newLeaf = new trieNode_1.LeafNode(keyRemainder, value);\n stack.push(newLeaf);\n }\n else {\n lastNode.value = value;\n }\n }\n else {\n lastKey = lastNode.key;\n matchingLength = nibbles_1.matchingNibbleLength(lastKey, keyRemainder);\n newBranchNode = new trieNode_1.BranchNode();\n // create a new extension node\n if (matchingLength !== 0) {\n newKey = lastNode.key.slice(0, matchingLength);\n newExtNode = new trieNode_1.ExtensionNode(newKey, value);\n stack.push(newExtNode);\n lastKey.splice(0, matchingLength);\n keyRemainder.splice(0, matchingLength);\n }\n stack.push(newBranchNode);\n if (lastKey.length !== 0) {\n branchKey = lastKey.shift();\n if (lastKey.length !== 0 || lastNode instanceof trieNode_1.LeafNode) {\n // shrinking extension or leaf\n lastNode.key = lastKey;\n formattedNode = this._formatNode(lastNode, false, toSave);\n newBranchNode.setBranch(branchKey, formattedNode);\n }\n else {\n // remove extension or attaching\n this._formatNode(lastNode, false, toSave, true);\n newBranchNode.setBranch(branchKey, lastNode.value);\n }\n }\n else {\n newBranchNode.value = lastNode.value;\n }\n if (keyRemainder.length !== 0) {\n keyRemainder.shift();\n newLeafNode = new trieNode_1.LeafNode(keyRemainder, value);\n stack.push(newLeafNode);\n }\n else {\n newBranchNode.value = value;\n }\n }\n return [4 /*yield*/, this._saveStack(key, stack, toSave)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a node from the trie.\n * @private\n */\n Trie.prototype._deleteNode = function (k, stack) {\n return __awaiter(this, void 0, void 0, function () {\n var processBranchNode, lastNode, parentNode, opStack, key, lastNodeKey, branchNodes, branchNode, branchNodeKey, foundNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n processBranchNode = function (key, branchKey, branchNode, parentNode, stack) {\n // branchNode is the node ON the branch node not THE branch node\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!parentNode || parentNode instanceof trieNode_1.BranchNode) {\n // branch->?\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (parentNode) {\n stack.push(parentNode);\n }\n if (branchNode instanceof trieNode_1.BranchNode) {\n // create an extension node\n // branch->extension->branch\n // @ts-ignore\n var extensionNode = new trieNode_1.ExtensionNode([branchKey], null);\n stack.push(extensionNode);\n key.push(branchKey);\n }\n else {\n var branchNodeKey = branchNode.key;\n // branch key is an extension or a leaf\n // branch->(leaf or extension)\n branchNodeKey.unshift(branchKey);\n branchNode.key = branchNodeKey.slice(0);\n key = key.concat(branchNodeKey);\n }\n stack.push(branchNode);\n }\n else {\n // parent is an extension\n var parentKey = parentNode.key;\n if (branchNode instanceof trieNode_1.BranchNode) {\n // ext->branch\n parentKey.push(branchKey);\n key.push(branchKey);\n parentNode.key = parentKey;\n stack.push(parentNode);\n }\n else {\n var branchNodeKey = branchNode.key;\n // branch node is an leaf or extension and parent node is an exstention\n // add two keys together\n // dont push the parent node\n branchNodeKey.unshift(branchKey);\n key = key.concat(branchNodeKey);\n parentKey = parentKey.concat(branchNodeKey);\n branchNode.key = parentKey;\n }\n stack.push(branchNode);\n }\n return key;\n };\n lastNode = stack.pop();\n assert(lastNode);\n parentNode = stack.pop();\n opStack = [];\n key = nibbles_1.bufferToNibbles(k);\n if (!parentNode) {\n // the root here has to be a leaf.\n this.root = this.EMPTY_TRIE_ROOT;\n return [2 /*return*/];\n }\n if (lastNode instanceof trieNode_1.BranchNode) {\n lastNode.value = null;\n }\n else {\n // the lastNode has to be a leaf if it's not a branch.\n // And a leaf's parent, if it has one, must be a branch.\n if (!(parentNode instanceof trieNode_1.BranchNode)) {\n throw new Error('Expected branch node');\n }\n lastNodeKey = lastNode.key;\n key.splice(key.length - lastNodeKey.length);\n // delete the value\n this._formatNode(lastNode, false, opStack, true);\n parentNode.setBranch(key.pop(), null);\n lastNode = parentNode;\n parentNode = stack.pop();\n }\n branchNodes = lastNode.getChildren();\n if (!(branchNodes.length === 1)) return [3 /*break*/, 4];\n branchNode = branchNodes[0][1];\n branchNodeKey = branchNodes[0][0];\n return [4 /*yield*/, this._lookupNode(branchNode)];\n case 1:\n foundNode = _a.sent();\n if (!foundNode) return [3 /*break*/, 3];\n key = processBranchNode(key, branchNodeKey, foundNode, parentNode, stack);\n return [4 /*yield*/, this._saveStack(key, stack, opStack)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [3 /*break*/, 6];\n case 4:\n // simple removing a leaf and recaluclation the stack\n if (parentNode) {\n stack.push(parentNode);\n }\n stack.push(lastNode);\n return [4 /*yield*/, this._saveStack(key, stack, opStack)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saves a stack of nodes to the database.\n * @private\n * @param key - the key. Should follow the stack\n * @param stack - a stack of nodes to the value given by the key\n * @param opStack - a stack of levelup operations to commit at the end of this funciton\n */\n Trie.prototype._saveStack = function (key, stack, opStack) {\n return __awaiter(this, void 0, void 0, function () {\n var lastRoot, node, branchKey;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // update nodes\n while (stack.length) {\n node = stack.pop();\n if (node instanceof trieNode_1.LeafNode) {\n key.splice(key.length - node.key.length);\n }\n else if (node instanceof trieNode_1.ExtensionNode) {\n key.splice(key.length - node.key.length);\n if (lastRoot) {\n node.value = lastRoot;\n }\n }\n else if (node instanceof trieNode_1.BranchNode) {\n if (lastRoot) {\n branchKey = key.pop();\n node.setBranch(branchKey, lastRoot);\n }\n }\n lastRoot = this._formatNode(node, stack.length === 0, opStack);\n }\n if (lastRoot) {\n this.root = lastRoot;\n }\n return [4 /*yield*/, this.db.batch(opStack)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Formats node to be saved by `levelup.batch`.\n * @private\n * @param node - the node to format.\n * @param topLevel - if the node is at the top level.\n * @param opStack - the opStack to push the node's data.\n * @param remove - whether to remove the node (only used for CheckpointTrie).\n * @returns The node's hash used as the key or the rawNode.\n */\n Trie.prototype._formatNode = function (node, topLevel, opStack, remove) {\n if (remove === void 0) { remove = false; }\n var rlpNode = node.serialize();\n if (rlpNode.length >= 32 || topLevel) {\n // Do not use TrieNode.hash() here otherwise serialize()\n // is applied twice (performance)\n var hashRoot = ethereumjs_util_1.keccak(rlpNode);\n if (remove) {\n if (this._deleteFromDB) {\n opStack.push({\n type: 'del',\n key: hashRoot,\n });\n }\n }\n else {\n opStack.push({\n type: 'put',\n key: hashRoot,\n value: rlpNode,\n });\n }\n return hashRoot;\n }\n return node.raw();\n };\n /**\n * The given hash of operations (key additions or deletions) are executed on the trie\n * (delete operations are only executed on DB with `deleteFromDB` set to `true`)\n * @example\n * const ops = [\n * { type: 'del', key: Buffer.from('father') }\n * , { type: 'put', key: Buffer.from('name'), value: Buffer.from('Yuri Irsenovich Kim') }\n * , { type: 'put', key: Buffer.from('dob'), value: Buffer.from('16 February 1941') }\n * , { type: 'put', key: Buffer.from('spouse'), value: Buffer.from('Kim Young-sook') }\n * , { type: 'put', key: Buffer.from('occupation'), value: Buffer.from('Clown') }\n * ]\n * await trie.batch(ops)\n * @param ops\n */\n Trie.prototype.batch = function (ops) {\n return __awaiter(this, void 0, void 0, function () {\n var ops_1, ops_1_1, op, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 7, 8, 9]);\n ops_1 = __values(ops), ops_1_1 = ops_1.next();\n _b.label = 1;\n case 1:\n if (!!ops_1_1.done) return [3 /*break*/, 6];\n op = ops_1_1.value;\n if (!(op.type === 'put')) return [3 /*break*/, 3];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!op.value) {\n throw new Error('Invalid batch db operation');\n }\n return [4 /*yield*/, this.put(op.key, op.value)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ];\n case 2:\n _b.sent();\n return [3 /*break*/, 5];\n case 3:\n if (!(op.type === 'del')) return [3 /*break*/, 5];\n return [4 /*yield*/, this.del(op.key)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n ops_1_1 = ops_1.next();\n return [3 /*break*/, 1];\n case 6: return [3 /*break*/, 9];\n case 7:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 9];\n case 8:\n try {\n if (ops_1_1 && !ops_1_1.done && (_a = ops_1.return)) _a.call(ops_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saves the nodes from a proof into the trie. If no trie is provided a new one wil be instantiated.\n * @param proof\n * @param trie\n */\n Trie.fromProof = function (proof, trie) {\n return __awaiter(this, void 0, void 0, function () {\n var opStack;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n opStack = proof.map(function (nodeValue) {\n return {\n type: 'put',\n key: ethereumjs_util_1.keccak(nodeValue),\n value: nodeValue,\n };\n });\n if (!trie) {\n trie = new Trie();\n if (opStack[0]) {\n trie.root = opStack[0].key;\n }\n }\n return [4 /*yield*/, trie.db.batch(opStack)];\n case 1:\n _a.sent();\n return [2 /*return*/, trie];\n }\n });\n });\n };\n /**\n * prove has been renamed to [[Trie.createProof]].\n * @deprecated\n * @param trie\n * @param key\n */\n Trie.prove = function (trie, key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.createProof(trie, key)];\n });\n });\n };\n /**\n * Creates a proof from a trie and key that can be verified using [[Trie.verifyProof]].\n * @param trie\n * @param key\n */\n Trie.createProof = function (trie, key) {\n return __awaiter(this, void 0, void 0, function () {\n var stack, p;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, trie.findPath(key)];\n case 1:\n stack = (_a.sent()).stack;\n p = stack.map(function (stackElem) {\n return stackElem.serialize();\n });\n return [2 /*return*/, p];\n }\n });\n });\n };\n /**\n * Verifies a proof.\n * @param rootHash\n * @param key\n * @param proof\n * @throws If proof is found to be invalid.\n * @returns The value from the key.\n */\n Trie.verifyProof = function (rootHash, key, proof) {\n return __awaiter(this, void 0, void 0, function () {\n var proofTrie, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n proofTrie = new Trie(null, rootHash);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Trie.fromProof(proof, proofTrie)];\n case 2:\n proofTrie = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n throw new Error('Invalid proof nodes given');\n case 4: return [2 /*return*/, proofTrie.get(key)];\n }\n });\n });\n };\n /**\n * The `data` event is given an `Object` that has two properties; the `key` and the `value`. Both should be Buffers.\n * @return Returns a [stream](https://nodejs.org/dist/latest-v12.x/docs/api/stream.html#stream_class_stream_readable) of the contents of the `trie`\n */\n Trie.prototype.createReadStream = function () {\n return new readStream_1.TrieReadStream(this);\n };\n /**\n * Creates a new trie backed by the same db.\n */\n Trie.prototype.copy = function () {\n var db = this.db.copy();\n return new Trie(db._leveldb, this.root);\n };\n /**\n * Finds all nodes that are stored directly in the db\n * (some nodes are stored raw inside other nodes)\n * called by {@link ScratchReadStream}\n * @private\n */\n Trie.prototype._findDbNodes = function (onFound) {\n return __awaiter(this, void 0, void 0, function () {\n var outerOnFound;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n outerOnFound = function (nodeRef, node, key, walkController) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (trieNode_1.isRawNode(nodeRef)) {\n if (node !== null) {\n walkController.allChildren(node, key);\n }\n }\n else {\n onFound(nodeRef, node, key, walkController);\n }\n return [2 /*return*/];\n });\n }); };\n return [4 /*yield*/, this.walkTrie(this.root, outerOnFound)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Finds all nodes that store k,v values\n * called by {@link TrieReadStream}\n * @private\n */\n Trie.prototype._findValueNodes = function (onFound) {\n return __awaiter(this, void 0, void 0, function () {\n var outerOnFound;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n outerOnFound = function (nodeRef, node, key, walkController) { return __awaiter(_this, void 0, void 0, function () {\n var fullKey;\n return __generator(this, function (_a) {\n fullKey = key;\n if (node instanceof trieNode_1.LeafNode) {\n fullKey = key.concat(node.key);\n // found leaf node!\n onFound(nodeRef, node, fullKey, walkController);\n }\n else if (node instanceof trieNode_1.BranchNode && node.value) {\n // found branch with value\n onFound(nodeRef, node, fullKey, walkController);\n }\n else {\n // keep looking for value nodes\n if (node !== null) {\n walkController.allChildren(node, key);\n }\n }\n return [2 /*return*/];\n });\n }); };\n return [4 /*yield*/, this.walkTrie(this.root, outerOnFound)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Trie;\n}());\nexports.Trie = Trie;\n//# sourceMappingURL=baseTrie.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB = exports.ENCODING_OPTS = void 0;\nvar level = require('level-mem');\nexports.ENCODING_OPTS = { keyEncoding: 'binary', valueEncoding: 'binary' };\n/**\n * DB is a thin wrapper around the underlying levelup db,\n * which validates inputs and sets encoding type.\n */\nvar DB = /** @class */ (function () {\n /**\n * Initialize a DB instance. If `leveldb` is not provided, DB\n * defaults to an [in-memory store](https://github.com/Level/memdown).\n * @param leveldb - An abstract-leveldown compliant store\n */\n function DB(leveldb) {\n this._leveldb = leveldb || level();\n }\n /**\n * Retrieves a raw value from leveldb.\n * @param key\n * @returns A Promise that resolves to `Buffer` if a value is found or `null` if no value is found.\n */\n DB.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n value = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._leveldb.get(key, exports.ENCODING_OPTS)];\n case 2:\n value = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _a.sent();\n if (error_1.notFound) {\n // not found, returning null\n }\n else {\n throw error_1;\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Writes a value directly to leveldb.\n * @param key The key as a `Buffer`\n * @param value The value to be stored\n */\n DB.prototype.put = function (key, val) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._leveldb.put(key, val, exports.ENCODING_OPTS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes a raw value in the underlying leveldb.\n * @param keys\n */\n DB.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._leveldb.del(key, exports.ENCODING_OPTS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Performs a batch operation on db.\n * @param opStack A stack of levelup operations\n */\n DB.prototype.batch = function (opStack) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._leveldb.batch(opStack, exports.ENCODING_OPTS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns a copy of the DB instance, with a reference\n * to the **same** underlying leveldb instance.\n */\n DB.prototype.copy = function () {\n return new DB(this._leveldb);\n };\n return DB;\n}());\nexports.DB = DB;\n//# sourceMappingURL=db.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar crc_32_1 = require(\"crc-32\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar chains_1 = require(\"./chains\");\nvar hardforks_1 = require(\"./hardforks\");\nvar eips_1 = require(\"./eips\");\n/**\n * Common class to access chain and hardfork parameters\n */\nvar Common = /** @class */ (function (_super) {\n __extends(Common, _super);\n /**\n * @constructor\n */\n function Common(opts) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this._supportedHardforks = [];\n _this._eips = [];\n _this._customChains = (_a = opts.customChains) !== null && _a !== void 0 ? _a : [];\n _this._chainParams = _this.setChain(opts.chain);\n _this.DEFAULT_HARDFORK = (_b = _this._chainParams.defaultHardfork) !== null && _b !== void 0 ? _b : 'istanbul';\n _this._hardfork = _this.DEFAULT_HARDFORK;\n if (opts.supportedHardforks) {\n _this._supportedHardforks = opts.supportedHardforks;\n }\n if (opts.hardfork) {\n _this.setHardfork(opts.hardfork);\n }\n if (opts.eips) {\n _this.setEIPs(opts.eips);\n }\n return _this;\n }\n /**\n * Creates a Common object for a custom chain, based on a standard one. It uses all the [[Chain]]\n * params from [[baseChain]] except the ones overridden in [[customChainParams]].\n *\n * @param baseChain The name (`mainnet`) or id (`1`) of a standard chain used to base the custom\n * chain params on.\n * @param customChainParams The custom parameters of the chain.\n * @param hardfork String identifier ('byzantium') for hardfork (optional)\n * @param supportedHardforks Limit parameter returns to the given hardforks (optional)\n */\n Common.forCustomChain = function (baseChain, customChainParams, hardfork, supportedHardforks) {\n var standardChainParams = Common._getChainParams(baseChain);\n return new Common({\n chain: __assign(__assign({}, standardChainParams), customChainParams),\n hardfork: hardfork,\n supportedHardforks: supportedHardforks,\n });\n };\n Common._getChainParams = function (chain, customChains) {\n var initializedChains = chains_1._getInitializedChains(customChains);\n if (typeof chain === 'number' || ethereumjs_util_1.BN.isBN(chain)) {\n chain = chain.toString();\n if (initializedChains['names'][chain]) {\n var name_1 = initializedChains['names'][chain];\n return initializedChains[name_1];\n }\n throw new Error(\"Chain with ID \" + chain + \" not supported\");\n }\n if (initializedChains[chain]) {\n return initializedChains[chain];\n }\n throw new Error(\"Chain with name \" + chain + \" not supported\");\n };\n /**\n * Sets the chain\n * @param chain String ('mainnet') or Number (1) chain\n * representation. Or, a Dictionary of chain parameters for a private network.\n * @returns The dictionary with parameters set as chain\n */\n Common.prototype.setChain = function (chain) {\n var e_1, _a;\n if (typeof chain === 'number' || typeof chain === 'string' || ethereumjs_util_1.BN.isBN(chain)) {\n this._chainParams = Common._getChainParams(chain, this._customChains);\n }\n else if (typeof chain === 'object') {\n if (this._customChains.length > 0) {\n throw new Error('Chain must be a string, number, or BN when initialized with customChains passed in');\n }\n var required = ['networkId', 'genesis', 'hardforks', 'bootstrapNodes'];\n try {\n for (var required_1 = __values(required), required_1_1 = required_1.next(); !required_1_1.done; required_1_1 = required_1.next()) {\n var param = required_1_1.value;\n if (chain[param] === undefined) {\n throw new Error(\"Missing required chain parameter: \" + param);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (required_1_1 && !required_1_1.done && (_a = required_1.return)) _a.call(required_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this._chainParams = chain;\n }\n else {\n throw new Error('Wrong input format');\n }\n return this._chainParams;\n };\n /**\n * Sets the hardfork to get params for\n * @param hardfork String identifier (e.g. 'byzantium')\n */\n Common.prototype.setHardfork = function (hardfork) {\n var e_2, _a;\n if (!this._isSupportedHardfork(hardfork)) {\n throw new Error(\"Hardfork \" + hardfork + \" not set as supported in supportedHardforks\");\n }\n var existing = false;\n try {\n for (var HARDFORK_CHANGES_1 = __values(hardforks_1.hardforks), HARDFORK_CHANGES_1_1 = HARDFORK_CHANGES_1.next(); !HARDFORK_CHANGES_1_1.done; HARDFORK_CHANGES_1_1 = HARDFORK_CHANGES_1.next()) {\n var hfChanges = HARDFORK_CHANGES_1_1.value;\n if (hfChanges[0] === hardfork) {\n if (this._hardfork !== hardfork) {\n this._hardfork = hardfork;\n this.emit('hardforkChanged', hardfork);\n }\n existing = true;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (HARDFORK_CHANGES_1_1 && !HARDFORK_CHANGES_1_1.done && (_a = HARDFORK_CHANGES_1.return)) _a.call(HARDFORK_CHANGES_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (!existing) {\n throw new Error(\"Hardfork with name \" + hardfork + \" not supported\");\n }\n };\n /**\n * Returns the hardfork based on the block number provided\n * @param blockNumber\n * @returns The name of the HF\n */\n Common.prototype.getHardforkByBlockNumber = function (blockNumber) {\n var e_3, _a;\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n var hardfork = 'chainstart';\n try {\n for (var _b = __values(this.hardforks()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var hf = _c.value;\n // Skip comparison for not applied HFs\n if (hf.block === null) {\n continue;\n }\n if (blockNumber.gte(new ethereumjs_util_1.BN(hf.block))) {\n hardfork = hf.name;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return hardfork;\n };\n /**\n * Sets a new hardfork based on the block number provided\n * @param blockNumber\n * @returns The name of the HF set\n */\n Common.prototype.setHardforkByBlockNumber = function (blockNumber) {\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n var hardfork = this.getHardforkByBlockNumber(blockNumber);\n this.setHardfork(hardfork);\n return hardfork;\n };\n /**\n * Internal helper function to choose between hardfork set and hardfork provided as param\n * @param hardfork Hardfork given to function as a parameter\n * @returns Hardfork chosen to be used\n */\n Common.prototype._chooseHardfork = function (hardfork, onlySupported) {\n if (onlySupported === void 0) { onlySupported = true; }\n if (!hardfork) {\n hardfork = this._hardfork;\n }\n else if (onlySupported && !this._isSupportedHardfork(hardfork)) {\n throw new Error(\"Hardfork \" + hardfork + \" not set as supported in supportedHardforks\");\n }\n return hardfork;\n };\n /**\n * Internal helper function, returns the params for the given hardfork for the chain set\n * @param hardfork Hardfork name\n * @returns Dictionary with hardfork params\n */\n Common.prototype._getHardfork = function (hardfork) {\n var e_4, _a;\n var hfs = this.hardforks();\n try {\n for (var hfs_1 = __values(hfs), hfs_1_1 = hfs_1.next(); !hfs_1_1.done; hfs_1_1 = hfs_1.next()) {\n var hf = hfs_1_1.value;\n if (hf['name'] === hardfork)\n return hf;\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (hfs_1_1 && !hfs_1_1.done && (_a = hfs_1.return)) _a.call(hfs_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n throw new Error(\"Hardfork \" + hardfork + \" not defined for chain \" + this.chainName());\n };\n /**\n * Internal helper function to check if a hardfork is set to be supported by the library\n * @param hardfork Hardfork name\n * @returns True if hardfork is supported\n */\n Common.prototype._isSupportedHardfork = function (hardfork) {\n var e_5, _a;\n if (this._supportedHardforks.length > 0) {\n try {\n for (var _b = __values(this._supportedHardforks), _c = _b.next(); !_c.done; _c = _b.next()) {\n var supportedHf = _c.value;\n if (hardfork === supportedHf)\n return true;\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n else {\n return true;\n }\n return false;\n };\n /**\n * Sets the active EIPs\n * @param eips\n */\n Common.prototype.setEIPs = function (eips) {\n var e_6, _a;\n var _this = this;\n if (eips === void 0) { eips = []; }\n var _loop_1 = function (eip) {\n if (!(eip in eips_1.EIPs)) {\n throw new Error(eip + \" not supported\");\n }\n var minHF = this_1.gteHardfork(eips_1.EIPs[eip]['minimumHardfork']);\n if (!minHF) {\n throw new Error(eip + \" cannot be activated on hardfork \" + this_1.hardfork() + \", minimumHardfork: \" + minHF);\n }\n if (eips_1.EIPs[eip].requiredEIPs) {\n // eslint-disable-next-line prettier/prettier\n eips_1.EIPs[eip].requiredEIPs.forEach(function (elem) {\n if (!(eips.includes(elem) || _this.isActivatedEIP(elem))) {\n throw new Error(eip + \" requires EIP \" + elem + \", but is not included in the EIP list\");\n }\n });\n }\n };\n var this_1 = this;\n try {\n for (var eips_2 = __values(eips), eips_2_1 = eips_2.next(); !eips_2_1.done; eips_2_1 = eips_2.next()) {\n var eip = eips_2_1.value;\n _loop_1(eip);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (eips_2_1 && !eips_2_1.done && (_a = eips_2.return)) _a.call(eips_2);\n }\n finally { if (e_6) throw e_6.error; }\n }\n this._eips = eips;\n };\n /**\n * Returns a parameter for the current chain setup\n *\n * If the parameter is present in an EIP, the EIP always takes precendence.\n * Otherwise the parameter if taken from the latest applied HF with\n * a change on the respective parameter.\n *\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @returns The value requested or `null` if not found\n */\n Common.prototype.param = function (topic, name) {\n var e_7, _a;\n // TODO: consider the case that different active EIPs\n // can change the same parameter\n var value = null;\n try {\n for (var _b = __values(this._eips), _c = _b.next(); !_c.done; _c = _b.next()) {\n var eip = _c.value;\n value = this.paramByEIP(topic, name, eip);\n if (value !== null) {\n return value;\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_7) throw e_7.error; }\n }\n return this.paramByHardfork(topic, name, this._hardfork);\n };\n /**\n * Returns the parameter corresponding to a hardfork\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param hardfork Hardfork name\n * @returns The value requested or `null` if not found\n */\n Common.prototype.paramByHardfork = function (topic, name, hardfork) {\n var e_8, _a, e_9, _b;\n hardfork = this._chooseHardfork(hardfork);\n var value = null;\n try {\n for (var HARDFORK_CHANGES_2 = __values(hardforks_1.hardforks), HARDFORK_CHANGES_2_1 = HARDFORK_CHANGES_2.next(); !HARDFORK_CHANGES_2_1.done; HARDFORK_CHANGES_2_1 = HARDFORK_CHANGES_2.next()) {\n var hfChanges = HARDFORK_CHANGES_2_1.value;\n // EIP-referencing HF file (e.g. berlin.json)\n if (hfChanges[1].hasOwnProperty('eips')) { // eslint-disable-line\n var hfEIPs = hfChanges[1]['eips'];\n try {\n for (var hfEIPs_1 = (e_9 = void 0, __values(hfEIPs)), hfEIPs_1_1 = hfEIPs_1.next(); !hfEIPs_1_1.done; hfEIPs_1_1 = hfEIPs_1.next()) {\n var eip = hfEIPs_1_1.value;\n var valueEIP = this.paramByEIP(topic, name, eip);\n value = valueEIP !== null ? valueEIP : value;\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (hfEIPs_1_1 && !hfEIPs_1_1.done && (_b = hfEIPs_1.return)) _b.call(hfEIPs_1);\n }\n finally { if (e_9) throw e_9.error; }\n }\n // Paramater-inlining HF file (e.g. istanbul.json)\n }\n else {\n if (!hfChanges[1][topic]) {\n throw new Error(\"Topic \" + topic + \" not defined\");\n }\n if (hfChanges[1][topic][name] !== undefined) {\n value = hfChanges[1][topic][name].v;\n }\n }\n if (hfChanges[0] === hardfork)\n break;\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (HARDFORK_CHANGES_2_1 && !HARDFORK_CHANGES_2_1.done && (_a = HARDFORK_CHANGES_2.return)) _a.call(HARDFORK_CHANGES_2);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return value;\n };\n /**\n * Returns a parameter corresponding to an EIP\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param eip Number of the EIP\n * @returns The value requested or `null` if not found\n */\n Common.prototype.paramByEIP = function (topic, name, eip) {\n if (!(eip in eips_1.EIPs)) {\n throw new Error(eip + \" not supported\");\n }\n var eipParams = eips_1.EIPs[eip];\n if (!(topic in eipParams)) {\n throw new Error(\"Topic \" + topic + \" not defined\");\n }\n if (eipParams[topic][name] === undefined) {\n return null;\n }\n var value = eipParams[topic][name].v;\n return value;\n };\n /**\n * Returns a parameter for the hardfork active on block number\n * @param topic Parameter topic\n * @param name Parameter name\n * @param blockNumber Block number\n */\n Common.prototype.paramByBlock = function (topic, name, blockNumber) {\n var activeHfs = this.activeHardforks(blockNumber);\n var hardfork = activeHfs[activeHfs.length - 1]['name'];\n return this.paramByHardfork(topic, name, hardfork);\n };\n /**\n * Checks if an EIP is activated by either being included in the EIPs\n * manually passed in with the `eips` constructor option or in a\n * hardfork currently being active\n *\n * Note: this method only works for EIPs being supported\n * by the `eips` constructor option\n * @param eip\n */\n Common.prototype.isActivatedEIP = function (eip) {\n var e_10, _a;\n if (this.eips().includes(eip)) {\n return true;\n }\n try {\n for (var HARDFORK_CHANGES_3 = __values(hardforks_1.hardforks), HARDFORK_CHANGES_3_1 = HARDFORK_CHANGES_3.next(); !HARDFORK_CHANGES_3_1.done; HARDFORK_CHANGES_3_1 = HARDFORK_CHANGES_3.next()) {\n var hfChanges = HARDFORK_CHANGES_3_1.value;\n var hf = hfChanges[1];\n if (this.gteHardfork(hf['name']) && 'eips' in hf) {\n if (hf['eips'].includes(eip)) {\n return true;\n }\n }\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (HARDFORK_CHANGES_3_1 && !HARDFORK_CHANGES_3_1.done && (_a = HARDFORK_CHANGES_3.return)) _a.call(HARDFORK_CHANGES_3);\n }\n finally { if (e_10) throw e_10.error; }\n }\n return false;\n };\n /**\n * Checks if set or provided hardfork is active on block number\n * @param hardfork Hardfork name or null (for HF set)\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n Common.prototype.hardforkIsActiveOnBlock = function (hardfork, blockNumber, opts) {\n var _a;\n if (opts === void 0) { opts = {}; }\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n var onlySupported = (_a = opts.onlySupported) !== null && _a !== void 0 ? _a : false;\n hardfork = this._chooseHardfork(hardfork, onlySupported);\n var hfBlock = this.hardforkBlockBN(hardfork);\n if (hfBlock && blockNumber.gte(hfBlock)) {\n return true;\n }\n return false;\n };\n /**\n * Alias to hardforkIsActiveOnBlock when hardfork is set\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n Common.prototype.activeOnBlock = function (blockNumber, opts) {\n return this.hardforkIsActiveOnBlock(null, blockNumber, opts);\n };\n /**\n * Sequence based check if given or set HF1 is greater than or equal HF2\n * @param hardfork1 Hardfork name or null (if set)\n * @param hardfork2 Hardfork name\n * @param opts Hardfork options\n * @returns True if HF1 gte HF2\n */\n Common.prototype.hardforkGteHardfork = function (hardfork1, hardfork2, opts) {\n var e_11, _a;\n if (opts === void 0) { opts = {}; }\n var onlyActive = opts.onlyActive === undefined ? false : opts.onlyActive;\n hardfork1 = this._chooseHardfork(hardfork1, opts.onlySupported);\n var hardforks;\n if (onlyActive) {\n hardforks = this.activeHardforks(null, opts);\n }\n else {\n hardforks = this.hardforks();\n }\n var posHf1 = -1, posHf2 = -1;\n var index = 0;\n try {\n for (var hardforks_2 = __values(hardforks), hardforks_2_1 = hardforks_2.next(); !hardforks_2_1.done; hardforks_2_1 = hardforks_2.next()) {\n var hf = hardforks_2_1.value;\n if (hf['name'] === hardfork1)\n posHf1 = index;\n if (hf['name'] === hardfork2)\n posHf2 = index;\n index += 1;\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_1 }; }\n finally {\n try {\n if (hardforks_2_1 && !hardforks_2_1.done && (_a = hardforks_2.return)) _a.call(hardforks_2);\n }\n finally { if (e_11) throw e_11.error; }\n }\n return posHf1 >= posHf2 && posHf2 !== -1;\n };\n /**\n * Alias to hardforkGteHardfork when hardfork is set\n * @param hardfork Hardfork name\n * @param opts Hardfork options\n * @returns True if hardfork set is greater than hardfork provided\n */\n Common.prototype.gteHardfork = function (hardfork, opts) {\n return this.hardforkGteHardfork(null, hardfork, opts);\n };\n /**\n * Checks if given or set hardfork is active on the chain\n * @param hardfork Hardfork name, optional if HF set\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if hardfork is active on the chain\n */\n Common.prototype.hardforkIsActiveOnChain = function (hardfork, opts) {\n var e_12, _a;\n var _b;\n if (opts === void 0) { opts = {}; }\n var onlySupported = (_b = opts.onlySupported) !== null && _b !== void 0 ? _b : false;\n hardfork = this._chooseHardfork(hardfork, onlySupported);\n try {\n for (var _c = __values(this.hardforks()), _d = _c.next(); !_d.done; _d = _c.next()) {\n var hf = _d.value;\n if (hf['name'] === hardfork && hf['block'] !== null)\n return true;\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_12) throw e_12.error; }\n }\n return false;\n };\n /**\n * Returns the active hardfork switches for the current chain\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Array with hardfork arrays\n */\n Common.prototype.activeHardforks = function (blockNumber, opts) {\n var e_13, _a;\n if (opts === void 0) { opts = {}; }\n var activeHardforks = [];\n var hfs = this.hardforks();\n try {\n for (var hfs_2 = __values(hfs), hfs_2_1 = hfs_2.next(); !hfs_2_1.done; hfs_2_1 = hfs_2.next()) {\n var hf = hfs_2_1.value;\n if (hf['block'] === null)\n continue;\n if (blockNumber !== undefined && blockNumber !== null && blockNumber < hf['block'])\n break;\n if (opts.onlySupported && !this._isSupportedHardfork(hf['name']))\n continue;\n activeHardforks.push(hf);\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (hfs_2_1 && !hfs_2_1.done && (_a = hfs_2.return)) _a.call(hfs_2);\n }\n finally { if (e_13) throw e_13.error; }\n }\n return activeHardforks;\n };\n /**\n * Returns the latest active hardfork name for chain or block or throws if unavailable\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Hardfork name\n */\n Common.prototype.activeHardfork = function (blockNumber, opts) {\n if (opts === void 0) { opts = {}; }\n var activeHardforks = this.activeHardforks(blockNumber, opts);\n if (activeHardforks.length > 0) {\n return activeHardforks[activeHardforks.length - 1]['name'];\n }\n else {\n throw new Error(\"No (supported) active hardfork found\");\n }\n };\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number\n * @deprecated Please use hardforkBlockBN() for large number support\n */\n Common.prototype.hardforkBlock = function (hardfork) {\n return ethereumjs_util_1.toType(this.hardforkBlockBN(hardfork), ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number\n */\n Common.prototype.hardforkBlockBN = function (hardfork) {\n hardfork = this._chooseHardfork(hardfork, false);\n return new ethereumjs_util_1.BN(this._getHardfork(hardfork)['block']);\n };\n /**\n * True if block number provided is the hardfork (given or set) change block\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n Common.prototype.isHardforkBlock = function (blockNumber, hardfork) {\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n hardfork = this._chooseHardfork(hardfork, false);\n return this.hardforkBlockBN(hardfork).eq(blockNumber);\n };\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n * @deprecated Please use nextHardforkBlockBN() for large number support\n */\n Common.prototype.nextHardforkBlock = function (hardfork) {\n var block = this.nextHardforkBlockBN(hardfork);\n return block === null ? null : ethereumjs_util_1.toType(block, ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n */\n Common.prototype.nextHardforkBlockBN = function (hardfork) {\n hardfork = this._chooseHardfork(hardfork, false);\n var hfBlock = this.hardforkBlockBN(hardfork);\n // Next fork block number or null if none available\n // Logic: if accumulator is still null and on the first occurence of\n // a block greater than the current hfBlock set the accumulator,\n // pass on the accumulator as the final result from this time on\n var nextHfBlock = this.hardforks().reduce(function (acc, hf) {\n var block = new ethereumjs_util_1.BN(hf.block);\n return block.gt(hfBlock) && acc === null ? block : acc;\n }, null);\n return nextHfBlock;\n };\n /**\n * True if block number provided is the hardfork change block following the hardfork given or set\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n Common.prototype.isNextHardforkBlock = function (blockNumber, hardfork) {\n blockNumber = ethereumjs_util_1.toType(blockNumber, ethereumjs_util_1.TypeOutput.BN);\n hardfork = this._chooseHardfork(hardfork, false);\n var nextHardforkBlock = this.nextHardforkBlockBN(hardfork);\n return nextHardforkBlock === null ? false : nextHardforkBlock.eq(blockNumber);\n };\n /**\n * Internal helper function to calculate a fork hash\n * @param hardfork Hardfork name\n * @returns Fork hash as hex string\n */\n Common.prototype._calcForkHash = function (hardfork) {\n var e_14, _a;\n var genesis = Buffer.from(this.genesis().hash.substr(2), 'hex');\n var hfBuffer = Buffer.alloc(0);\n var prevBlock = 0;\n try {\n for (var _b = __values(this.hardforks()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var hf = _c.value;\n var block = hf.block;\n // Skip for chainstart (0), not applied HFs (null) and\n // when already applied on same block number HFs\n if (block !== 0 && block !== null && block !== prevBlock) {\n var hfBlockBuffer = Buffer.from(block.toString(16).padStart(16, '0'), 'hex');\n hfBuffer = Buffer.concat([hfBuffer, hfBlockBuffer]);\n }\n if (hf.name === hardfork)\n break;\n prevBlock = block;\n }\n }\n catch (e_14_1) { e_14 = { error: e_14_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_14) throw e_14.error; }\n }\n var inputBuffer = Buffer.concat([genesis, hfBuffer]);\n // CRC32 delivers result as signed (negative) 32-bit integer,\n // convert to hex string\n var forkhash = ethereumjs_util_1.intToBuffer(crc_32_1.buf(inputBuffer) >>> 0).toString('hex');\n return \"0x\" + forkhash;\n };\n /**\n * Returns an eth/64 compliant fork hash (EIP-2124)\n * @param hardfork Hardfork name, optional if HF set\n */\n Common.prototype.forkHash = function (hardfork) {\n hardfork = this._chooseHardfork(hardfork, false);\n var data = this._getHardfork(hardfork);\n if (data['block'] === null) {\n var msg = 'No fork hash calculation possible for non-applied or future hardfork';\n throw new Error(msg);\n }\n if (data['forkHash'] !== undefined) {\n return data['forkHash'];\n }\n return this._calcForkHash(hardfork);\n };\n /**\n *\n * @param forkHash Fork hash as a hex string\n * @returns Array with hardfork data (name, block, forkHash)\n */\n Common.prototype.hardforkForForkHash = function (forkHash) {\n var resArray = this.hardforks().filter(function (hf) {\n return hf.forkHash === forkHash;\n });\n return resArray.length >= 1 ? resArray[resArray.length - 1] : null;\n };\n /**\n * Returns the Genesis parameters of current chain\n * @returns Genesis dictionary\n */\n Common.prototype.genesis = function () {\n return this._chainParams['genesis'];\n };\n /**\n * Returns the hardforks for current chain\n * @returns {Array} Array with arrays of hardforks\n */\n Common.prototype.hardforks = function () {\n return this._chainParams['hardforks'];\n };\n /**\n * Returns bootstrap nodes for the current chain\n * @returns {Dictionary} Dict with bootstrap nodes\n */\n Common.prototype.bootstrapNodes = function () {\n return this._chainParams['bootstrapNodes'];\n };\n /**\n * Returns DNS networks for the current chain\n * @returns {String[]} Array of DNS ENR urls\n */\n Common.prototype.dnsNetworks = function () {\n return this._chainParams['dnsNetworks'];\n };\n /**\n * Returns the hardfork set\n * @returns Hardfork name\n */\n Common.prototype.hardfork = function () {\n return this._hardfork;\n };\n /**\n * Returns the Id of current chain\n * @returns chain Id\n * @deprecated Please use chainIdBN() for large number support\n */\n Common.prototype.chainId = function () {\n return ethereumjs_util_1.toType(this.chainIdBN(), ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the Id of current chain\n * @returns chain Id\n */\n Common.prototype.chainIdBN = function () {\n return new ethereumjs_util_1.BN(this._chainParams['chainId']);\n };\n /**\n * Returns the name of current chain\n * @returns chain name (lower case)\n */\n Common.prototype.chainName = function () {\n return this._chainParams['name'];\n };\n /**\n * Returns the Id of current network\n * @returns network Id\n * @deprecated Please use networkIdBN() for large number support\n */\n Common.prototype.networkId = function () {\n return ethereumjs_util_1.toType(this.networkIdBN(), ethereumjs_util_1.TypeOutput.Number);\n };\n /**\n * Returns the Id of current network\n * @returns network Id\n */\n Common.prototype.networkIdBN = function () {\n return new ethereumjs_util_1.BN(this._chainParams['networkId']);\n };\n /**\n * Returns the active EIPs\n * @returns List of EIPs\n */\n Common.prototype.eips = function () {\n return this._eips;\n };\n /**\n * Returns the consensus type of the network\n * Possible values: \"pow\"|\"poa\"\n */\n Common.prototype.consensusType = function () {\n return this._chainParams['consensus']['type'];\n };\n /**\n * Returns the concrete consensus implementation\n * algorithm or protocol for the network\n * e.g. \"ethash\" for \"pow\" consensus type or\n * \"clique\" for \"poa\" consensus type\n */\n Common.prototype.consensusAlgorithm = function () {\n return this._chainParams['consensus']['algorithm'];\n };\n /**\n * Returns a dictionary with consensus configuration\n * parameters based on the consensus algorithm\n *\n * Expected returns (parameters must be present in\n * the respective chain json files):\n *\n * ethash: -\n * clique: period, epoch\n * aura: -\n */\n Common.prototype.consensusConfig = function () {\n return this._chainParams['consensus'][this.consensusAlgorithm()];\n };\n /**\n * Returns a deep copy of this common instance.\n */\n Common.prototype.copy = function () {\n return Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n };\n return Common;\n}(events_1.EventEmitter));\nexports.default = Common;\n//# sourceMappingURL=index.js.map","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateSstoreGas = exports.writeCallOutput = exports.subMemUsage = exports.maxCallGas = exports.jumpSubIsValid = exports.jumpIsValid = exports.getFullname = exports.getDataSlice = exports.getContractStorage = exports.short = exports.divCeil = exports.describeLocation = exports.addressToBuffer = exports.trap = exports.setLengthLeftStorage = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar exceptions_1 = require(\"./../../exceptions\");\nvar EIP2929_1 = require(\"./EIP2929\");\nvar MASK_160 = new ethereumjs_util_1.BN(1).shln(160).subn(1);\n/**\n * Proxy function for ethereumjs-util's setLengthLeft, except it returns a zero\n *\n * length buffer in case the buffer is full of zeros.\n * @param {Buffer} value Buffer which we want to pad\n */\nfunction setLengthLeftStorage(value) {\n if (value.equals(Buffer.alloc(value.length, 0))) {\n // return the empty buffer (the value is zero)\n return Buffer.alloc(0);\n }\n else {\n return ethereumjs_util_1.setLengthLeft(value, 32);\n }\n}\nexports.setLengthLeftStorage = setLengthLeftStorage;\n/**\n * Wraps error message as VMError\n *\n * @param {string} err\n */\nfunction trap(err) {\n // TODO: facilitate extra data along with errors\n throw new exceptions_1.VmError(err);\n}\nexports.trap = trap;\n/**\n * Converts BN address (they're stored like this on the stack) to buffer address\n *\n * @param {BN} address\n * @return {Buffer}\n */\nfunction addressToBuffer(address) {\n if (Buffer.isBuffer(address))\n return address;\n return address.and(MASK_160).toArrayLike(Buffer, 'be', 20);\n}\nexports.addressToBuffer = addressToBuffer;\n/**\n * Error message helper - generates location string\n *\n * @param {RunState} runState\n * @return {string}\n */\nfunction describeLocation(runState) {\n var hash = ethereumjs_util_1.keccak256(runState.eei.getCode()).toString('hex');\n var address = runState.eei.getAddress().buf.toString('hex');\n var pc = runState.programCounter - 1;\n return hash + \"/\" + address + \":\" + pc;\n}\nexports.describeLocation = describeLocation;\n/**\n * Find Ceil(a / b)\n *\n * @param {BN} a\n * @param {BN} b\n * @return {BN}\n */\nfunction divCeil(a, b) {\n var div = a.div(b);\n var mod = a.mod(b);\n // Fast case - exact division\n if (mod.isZero())\n return div;\n // Round up\n return div.isNeg() ? div.isubn(1) : div.iaddn(1);\n}\nexports.divCeil = divCeil;\nfunction short(buffer) {\n var MAX_LENGTH = 50;\n var bufferStr = buffer.toString('hex');\n if (bufferStr.length <= MAX_LENGTH) {\n return bufferStr;\n }\n return bufferStr.slice(0, MAX_LENGTH) + '...';\n}\nexports.short = short;\n/**\n * Calls relevant stateManager.getContractStorage method based on hardfork\n *\n * @param {RunState} runState [description]\n * @param {Buffer} address [description]\n * @param {Buffer} key [description]\n * @return {Promise}\n */\nfunction getContractStorage(runState, address, key) {\n return __awaiter(this, void 0, void 0, function () {\n var current, _a, original, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = setLengthLeftStorage;\n return [4 /*yield*/, runState.stateManager.getContractStorage(address, key)];\n case 1:\n current = _a.apply(void 0, [_c.sent()]);\n if (!(runState._common.hardfork() === 'constantinople' ||\n runState._common.gteHardfork('istanbul'))) return [3 /*break*/, 3];\n _b = setLengthLeftStorage;\n return [4 /*yield*/, runState.stateManager.getOriginalContractStorage(address, key)];\n case 2:\n original = _b.apply(void 0, [_c.sent()]);\n return [2 /*return*/, { current: current, original: original }];\n case 3: return [2 /*return*/, current];\n }\n });\n });\n}\nexports.getContractStorage = getContractStorage;\n/**\n * Returns an overflow-safe slice of an array. It right-pads\n * the data with zeros to `length`.\n *\n * @param {BN} offset\n * @param {BN} length\n * @param {Buffer} data\n * @returns {Buffer}\n */\nfunction getDataSlice(data, offset, length) {\n var len = new ethereumjs_util_1.BN(data.length);\n if (offset.gt(len)) {\n offset = len;\n }\n var end = offset.add(length);\n if (end.gt(len)) {\n end = len;\n }\n data = data.slice(offset.toNumber(), end.toNumber());\n // Right-pad with zeros to fill dataLength bytes\n data = ethereumjs_util_1.setLengthRight(data, length.toNumber());\n return data;\n}\nexports.getDataSlice = getDataSlice;\n/**\n * Get full opcode name from its name and code.\n *\n * @param code {number} Integer code of opcode.\n * @param name {string} Short name of the opcode.\n * @returns {string} Full opcode name\n */\nfunction getFullname(code, name) {\n switch (name) {\n case 'LOG':\n name += code - 0xa0;\n break;\n case 'PUSH':\n name += code - 0x5f;\n break;\n case 'DUP':\n name += code - 0x7f;\n break;\n case 'SWAP':\n name += code - 0x8f;\n break;\n }\n return name;\n}\nexports.getFullname = getFullname;\n/**\n * Checks if a jump is valid given a destination\n *\n * @param {RunState} runState\n * @param {number} dest\n * @return {boolean}\n */\nfunction jumpIsValid(runState, dest) {\n return runState.validJumps.indexOf(dest) !== -1;\n}\nexports.jumpIsValid = jumpIsValid;\n/**\n * Checks if a jumpsub is valid given a destination\n *\n * @param {RunState} runState\n * @param {number} dest\n * @return {boolean}\n */\nfunction jumpSubIsValid(runState, dest) {\n return runState.validJumpSubs.indexOf(dest) !== -1;\n}\nexports.jumpSubIsValid = jumpSubIsValid;\n/**\n * Returns an overflow-safe slice of an array. It right-pads\n *\n * the data with zeros to `length`.\n * @param {BN} gasLimit - requested gas Limit\n * @param {BN} gasLeft - current gas left\n * @param {RunState} runState - the current runState\n */\nfunction maxCallGas(gasLimit, gasLeft, runState) {\n var isTangerineWhistleOrLater = runState._common.gteHardfork('tangerineWhistle');\n if (isTangerineWhistleOrLater) {\n var gasAllowed = gasLeft.sub(gasLeft.divn(64));\n return gasLimit.gt(gasAllowed) ? gasAllowed : gasLimit;\n }\n else {\n return gasLimit;\n }\n}\nexports.maxCallGas = maxCallGas;\n/**\n * Subtracts the amount needed for memory usage from `runState.gasLeft`\n *\n * @method subMemUsage\n * @param {Object} runState\n * @param {BN} offset\n * @param {BN} length\n */\nfunction subMemUsage(runState, offset, length) {\n // YP (225): access with zero length will not extend the memory\n if (length.isZero())\n return;\n var newMemoryWordCount = divCeil(offset.add(length), new ethereumjs_util_1.BN(32));\n if (newMemoryWordCount.lte(runState.memoryWordCount))\n return;\n var words = newMemoryWordCount;\n var fee = new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'memory'));\n var quadCoeff = new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'quadCoeffDiv'));\n // words * 3 + words ^2 / 512\n var cost = words.mul(fee).add(words.mul(words).div(quadCoeff));\n if (cost.gt(runState.highestMemCost)) {\n runState.eei.useGas(cost.sub(runState.highestMemCost), 'subMemUsage');\n runState.highestMemCost = cost;\n }\n runState.memoryWordCount = newMemoryWordCount;\n}\nexports.subMemUsage = subMemUsage;\n/**\n * Writes data returned by eei.call* methods to memory\n *\n * @param {RunState} runState\n * @param {BN} outOffset\n * @param {BN} outLength\n */\nfunction writeCallOutput(runState, outOffset, outLength) {\n var returnData = runState.eei.getReturnData();\n if (returnData.length > 0) {\n var memOffset = outOffset.toNumber();\n var dataLength = outLength.toNumber();\n if (returnData.length < dataLength) {\n dataLength = returnData.length;\n }\n var data = getDataSlice(returnData, new ethereumjs_util_1.BN(0), new ethereumjs_util_1.BN(dataLength));\n runState.memory.extend(memOffset, dataLength);\n runState.memory.write(memOffset, dataLength, data);\n }\n}\nexports.writeCallOutput = writeCallOutput;\n/** The first rule set of SSTORE rules, which are the rules pre-Constantinople and in Petersburg\n * @param {RunState} runState\n * @param {any} found\n * @param {Buffer} value\n * @param {Buffer} keyBuf\n */\nfunction updateSstoreGas(runState, found, value, keyBuf) {\n var sstoreResetCost = runState._common.param('gasPrices', 'sstoreReset');\n if ((value.length === 0 && !found.length) || (value.length !== 0 && found.length)) {\n runState.eei.useGas(new ethereumjs_util_1.BN(EIP2929_1.adjustSstoreGasEIP2929(runState, keyBuf, sstoreResetCost, 'reset')), 'updateSstoreGas');\n }\n else if (value.length === 0 && found.length) {\n runState.eei.useGas(new ethereumjs_util_1.BN(EIP2929_1.adjustSstoreGasEIP2929(runState, keyBuf, sstoreResetCost, 'reset')), 'updateSstoreGas');\n runState.eei.refundGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sstoreRefund')), 'updateSstoreGas');\n }\n else if (value.length !== 0 && !found.length) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sstoreSet')), 'updateSstoreGas');\n }\n}\nexports.updateSstoreGas = updateSstoreGas;\n//# sourceMappingURL=util.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _getId, _filters, _subscriptions, _options, _blockchain, _wallet;\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//#region Imports\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst ethereum_block_1 = require(\"@ganache/ethereum-block\");\nconst ethereum_transaction_1 = require(\"@ganache/ethereum-transaction\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst eth_sig_util_1 = require(\"eth-sig-util\");\nconst utils_1 = require(\"@ganache/utils\");\nconst wallet_1 = __importDefault(require(\"./wallet\"));\nconst gas_estimator_1 = __importDefault(require(\"./helpers/gas-estimator\"));\nconst assert_arg_length_1 = require(\"./helpers/assert-arg-length\");\nconst filter_parsing_1 = require(\"./helpers/filter-parsing\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\n// Read in the current ganache version from core's package.json\nconst { version } = { \"version\": \"0.1.1-internal.1341\" };\n//#endregion\n//#region Constants\nconst CLIENT_VERSION = `Ganache/v${version}/EthereumJS TestRPC/v${version}/ethereum-js`;\nconst PROTOCOL_VERSION = utils_1.Data.from(\"0x3f\");\nconst RPC_MODULES = {\n eth: \"1.0\",\n net: \"1.0\",\n rpc: \"1.0\",\n web3: \"1.0\",\n evm: \"1.0\",\n personal: \"1.0\"\n};\n//#endregion\n//#region helpers\nfunction assertExceptionalTransactions(transactions) {\n let baseError = null;\n let errors;\n const data = {};\n transactions.forEach(transaction => {\n if (transaction.execException) {\n if (baseError) {\n baseError = ethereum_utils_1.VM_EXCEPTIONS;\n errors.push(`${transaction.hash.toString()}: ${transaction.execException}\\n`);\n data[transaction.execException.data.hash] =\n transaction.execException.data;\n }\n else {\n baseError = ethereum_utils_1.VM_EXCEPTION;\n errors = [transaction.execException.message];\n data[transaction.execException.data.hash] =\n transaction.execException.data;\n }\n }\n });\n if (baseError) {\n const err = new Error(baseError + errors.join(\"\\n\"));\n err.data = data;\n throw err;\n }\n}\n//#endregion helpers\nclass EthereumApi {\n /**\n * This is the Ethereum API that the provider interacts with.\n * The only methods permitted on the prototype are the supported json-rpc\n * methods.\n * @param options\n * @param wallet\n * @param emitter\n */\n constructor(options, wallet, blockchain) {\n _getId.set(this, (id => () => utils_1.Quantity.from(++id))(0));\n _filters.set(this, new Map());\n _subscriptions.set(this, new Map());\n _options.set(this, void 0);\n _blockchain.set(this, void 0);\n _wallet.set(this, void 0);\n __classPrivateFieldSet(this, _options, options);\n __classPrivateFieldSet(this, _wallet, wallet);\n __classPrivateFieldSet(this, _blockchain, blockchain);\n }\n //#region db\n /**\n * Stores a string in the local database.\n *\n * @param dbName - Database name.\n * @param key - Key name.\n * @param value - String to store.\n * @returns returns true if the value was stored, otherwise false.\n */\n async db_putString(dbName, key, value) {\n return false;\n }\n /**\n * Returns string from the local database\n *\n * @param dbName - Database name.\n * @param key - Key name.\n * @returns The previously stored string.\n */\n async db_getString(dbName, key) {\n return \"\";\n }\n /**\n * Stores binary data in the local database.\n *\n * @param dbName - Database name.\n * @param key - Key name.\n * @param data - Data to store.\n * @returns true if the value was stored, otherwise false.\n */\n async db_putHex(dbName, key, data) {\n return false;\n }\n /**\n * Returns binary data from the local database\n *\n * @param dbName - Database name.\n * @param key - Key name.\n * @returns The previously stored data.\n */\n async db_getHex(dbName, key) {\n return \"0x00\";\n }\n //#endregion\n //#region bzz\n async bzz_hive() {\n return [];\n }\n async bzz_info() {\n return [];\n }\n async evm_mine(arg) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const vmErrorsOnRPCResponse = __classPrivateFieldGet(this, _options).chain.vmErrorsOnRPCResponse;\n // Since `typeof null === \"object\"` we have to guard against that\n if (arg !== null && typeof arg === \"object\") {\n let { blocks, timestamp } = arg;\n if (blocks == null) {\n blocks = 1;\n }\n // TODO(perf): add an option to mine a bunch of blocks in a batch so\n // we can save them all to the database in one go.\n // Developers like to move the blockchain forward by thousands of blocks\n // at a time and doing this would make it way faster\n for (let i = 0; i < blocks; i++) {\n const transactions = await blockchain.mine(-1, timestamp, true);\n if (vmErrorsOnRPCResponse) {\n assertExceptionalTransactions(transactions);\n }\n }\n }\n else {\n const transactions = await blockchain.mine(-1, arg, true);\n if (vmErrorsOnRPCResponse) {\n assertExceptionalTransactions(transactions);\n }\n }\n return \"0x0\";\n }\n async evm_setStorageAt(address, position, storage, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const blockProm = blockchain.blocks.getRawByBlockNumber(blockchain.blocks.getEffectiveNumber(blockNumber));\n const block = await blockProm;\n if (!block)\n throw new Error(\"header not found\");\n const blockData = rlp_1.decode(block);\n const headerData = blockData[0];\n const blockStateRoot = headerData[3];\n const trie = blockchain.trie.copy(false);\n trie.root = blockStateRoot;\n const posBuff = utils_1.Quantity.from(position).toBuffer();\n const length = posBuff.length;\n let paddedPosBuff;\n if (length < 32) {\n // storage locations are 32 bytes wide, so we need to expand any value\n // given to 32 bytes.\n paddedPosBuff = Buffer.allocUnsafe(32).fill(0);\n posBuff.copy(paddedPosBuff, 32 - length);\n }\n else if (length === 32) {\n paddedPosBuff = posBuff;\n }\n else {\n // if the position value we're passed is > 32 bytes, truncate it. This is\n // what geth does.\n paddedPosBuff = posBuff.slice(-32);\n }\n const addressData = await trie.get(ethereum_address_1.Address.from(address).toBuffer());\n // An address's stateRoot is stored in the 3rd rlp entry\n blockchain.trie.root = rlp_1.decode(addressData)[2];\n return blockchain.trie.put(paddedPosBuff, utils_1.Data.from(storage).toBuffer());\n }\n /**\n * Sets the given account's nonce to the specified value. Mines a new block\n * before returning.\n *\n * Warning: this will result in an invalid state tree.\n *\n * @param address - address\n * @param nonce - nonce\n * @returns `true` if it worked\n */\n async evm_setAccountNonce(address, nonce) {\n // TODO: the effect of this function could happen during a block mine operation, which would cause all sorts of\n // issues. We need to figure out a good way of timing this.\n const buffer = ethereum_address_1.Address.from(address).toBuffer();\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const stateManager = blockchain.vm.stateManager;\n const account = await stateManager.getAccount({ buf: buffer });\n account.nonce = {\n toArrayLike: () => utils_1.Quantity.from(nonce).toBuffer()\n };\n await stateManager.putAccount({ buf: buffer }, account);\n // TODO: do we need to mine a block here? The changes we're making really don't make any sense at all\n // and produce an invalid trie going forward.\n await blockchain.mine(0);\n return true;\n }\n /**\n * Jump forward in time by the given amount of time, in seconds.\n * @param seconds - Must be greater than or equal to `0`\n * @returns Returns the total time adjustment, in seconds.\n */\n async evm_increaseTime(seconds) {\n const milliseconds = (typeof seconds === \"number\"\n ? seconds\n : utils_1.Quantity.from(seconds).toNumber()) * 1000;\n return Math.floor(__classPrivateFieldGet(this, _blockchain).increaseTime(milliseconds) / 1000);\n }\n /**\n * Sets the internal clock time to the given timestamp.\n *\n * Warning: This will allow you to move *backwards* in time, which may cause\n * new blocks to appear to be mined before old blocks. This is will result in\n * an invalid state.\n *\n * @param timestamp - JavaScript timestamp (millisecond precision)\n * @returns The amount of *seconds* between the given timestamp and now.\n */\n async evm_setTime(time) {\n let t;\n switch (typeof time) {\n case \"object\":\n t = time.getTime();\n break;\n case \"number\":\n t = time;\n break;\n default:\n t = utils_1.Quantity.from(time).toNumber();\n break;\n }\n return Math.floor(__classPrivateFieldGet(this, _blockchain).setTime(t) / 1000);\n }\n /**\n * Revert the state of the blockchain to a previous snapshot. Takes a single\n * parameter, which is the snapshot id to revert to. This deletes the given\n * snapshot, as well as any snapshots taken after (Ex: reverting to id 0x1\n * will delete snapshots with ids 0x1, 0x2, etc... If no snapshot id is\n * passed it will revert to the latest snapshot.\n *\n * @param snapshotId - the snapshot id to revert\n * @returns `true` if a snapshot was reverted, otherwise `false`\n *\n * @example\n * ```javascript\n * const snapshotId = await provider.send(\"evm_snapshot\");\n * const isReverted = await provider.send(\"evm_revert\", [snapshotId]);\n * ```\n *\n * @example\n * ```javascript\n * const provider = ganache.provider();\n * const [from, to] = await provider.send(\"eth_accounts\");\n * const startingBalance = BigInt(await provider.send(\"eth_getBalance\", [from]));\n *\n * // take a snapshot\n * const snapshotId = await provider.send(\"evm_snapshot\");\n *\n * // send value to another account (over-simplified example)\n * await provider.send(\"eth_subscribe\", [\"newHeads\"]);\n * await provider.send(\"eth_sendTransaction\", [{from, to, value: \"0xffff\"}]);\n * await provider.once(\"message\"); // Note: `await provider.once` is non-standard\n *\n * // ensure balance has updated\n * const newBalance = await provider.send(\"eth_getBalance\", [from]);\n * assert(BigInt(newBalance) < startingBalance);\n *\n * // revert the snapshot\n * const isReverted = await provider.send(\"evm_revert\", [snapshotId]);\n * assert(isReverted);\n *\n * const endingBalance = await provider.send(\"eth_getBalance\", [from]);\n * assert.strictEqual(BigInt(endingBalance), startingBalance);\n * ```\n */\n async evm_revert(snapshotId) {\n return __classPrivateFieldGet(this, _blockchain).revert(utils_1.Quantity.from(snapshotId));\n }\n /**\n * Snapshot the state of the blockchain at the current block. Takes no\n * parameters. Returns the id of the snapshot that was created. A snapshot can\n * only be reverted once. After a successful `evm_revert`, the same snapshot\n * id cannot be used again. Consider creating a new snapshot after each\n * `evm_revert` if you need to revert to the same point multiple times.\n *\n * @returns The hex-encoded identifier for this snapshot\n *\n * @example\n * ```javascript\n * const snapshotId = await provider.send(\"evm_snapshot\");\n * ```\n *\n * @example\n * ```javascript\n * const provider = ganache.provider();\n * const [from, to] = await provider.send(\"eth_accounts\");\n * const startingBalance = BigInt(await provider.send(\"eth_getBalance\", [from]));\n *\n * // take a snapshot\n * const snapshotId = await provider.send(\"evm_snapshot\");\n *\n * // send value to another account (over-simplified example)\n * await provider.send(\"eth_subscribe\", [\"newHeads\"]);\n * await provider.send(\"eth_sendTransaction\", [{from, to, value: \"0xffff\"}]);\n * await provider.once(\"message\"); // Note: `await provider.once` is non-standard\n *\n * // ensure balance has updated\n * const newBalance = await provider.send(\"eth_getBalance\", [from]);\n * assert(BigInt(newBalance) < startingBalance);\n *\n * // revert the snapshot\n * const isReverted = await provider.send(\"evm_revert\", [snapshotId]);\n * assert(isReverted);\n *\n * const endingBalance = await provider.send(\"eth_getBalance\", [from]);\n * assert.strictEqual(BigInt(endingBalance), startingBalance);\n * ```\n */\n async evm_snapshot() {\n return utils_1.Quantity.from(__classPrivateFieldGet(this, _blockchain).snapshot());\n }\n /**\n * Unlocks any unknown account.\n * @param address - address the address of the account to unlock\n * @param duration - (default: disabled) Duration in seconds how long the account\n * should remain unlocked for. Set to 0 to disable automatic locking.\n * @returns `true` if the account was unlocked successfully, `false` if the\n * account was already unlocked. Throws an error if the account could not be\n * unlocked.\n */\n async evm_unlockUnknownAccount(address, duration = 0) {\n return __classPrivateFieldGet(this, _wallet).unlockUnknownAccount(address.toLowerCase(), duration);\n }\n /**\n * Locks any unknown account.\n *\n * Note: accounts known to the `personal` namespace and accounts returned by\n * `eth_accounts` cannot be locked using this method.\n *\n * @param address - address the address of the account to lock\n * @returns `true` if the account was locked successfully, `false` if the\n * account was already locked. Throws an error if the account could not be\n * locked.\n */\n async evm_lockUnknownAccount(address) {\n const lowerAddress = address.toLowerCase();\n // if this is a known account we can't unlock it this way\n if (__classPrivateFieldGet(this, _wallet).knownAccounts.has(lowerAddress)) {\n throw new Error(\"cannot lock known/personal account\");\n }\n return __classPrivateFieldGet(this, _wallet).lockAccount(lowerAddress);\n }\n //#endregion evm\n //#region miner\n /**\n * Resume the CPU mining process with the given number of threads.\n *\n * Note: `threads` is ignored.\n * @param threads - (ignored)\n * @returns true\n */\n async miner_start(threads = 1) {\n if (__classPrivateFieldGet(this, _options).miner.legacyInstamine === true) {\n const transactions = await __classPrivateFieldGet(this, _blockchain).resume(threads);\n if (transactions != null && __classPrivateFieldGet(this, _options).chain.vmErrorsOnRPCResponse) {\n assertExceptionalTransactions(transactions);\n }\n }\n else {\n __classPrivateFieldGet(this, _blockchain).resume(threads);\n }\n return true;\n }\n /**\n * Stop the CPU mining operation.\n */\n async miner_stop() {\n __classPrivateFieldGet(this, _blockchain).pause();\n return true;\n }\n /**\n *\n * @param number - Sets the minimal accepted gas price when mining transactions.\n * Any transactions that are below this limit are excluded from the mining\n * process.\n */\n async miner_setGasPrice(number) {\n __classPrivateFieldGet(this, _options).miner.gasPrice = utils_1.Quantity.from(number);\n return true;\n }\n /**\n * Sets the etherbase, where mining rewards will go.\n * @param address - address\n */\n async miner_setEtherbase(address) {\n __classPrivateFieldGet(this, _blockchain).coinbase = ethereum_address_1.Address.from(address);\n return true;\n }\n /**\n * Set the extraData block header field a miner can include.\n * @param extra - extra\n */\n async miner_setExtra(extra) {\n const bytes = utils_1.Data.from(extra);\n const length = bytes.toBuffer().length;\n if (length > 32) {\n throw new Error(`extra exceeds max length. ${length} > 32`);\n }\n __classPrivateFieldGet(this, _options).miner.extraData = bytes;\n return true;\n }\n //#endregion\n //#region web3\n /**\n * Returns the current client version.\n * @returns The current client version.\n */\n async web3_clientVersion() {\n return CLIENT_VERSION;\n }\n /**\n * Returns Keccak-256 (not the standardized SHA3-256) of the given data.\n * @param data - the data to convert into a SHA3 hash.\n * @returns The SHA3 result of the given string.\n */\n async web3_sha3(data) {\n return utils_1.Data.from(utils_1.keccak(Buffer.from(data)));\n }\n //#endregion\n //#region net\n /**\n * Returns the current network id.\n * @returns The current network id. This value should NOT be JSON-RPC\n * Quantity/Data encoded.\n */\n async net_version() {\n return __classPrivateFieldGet(this, _options).chain.networkId.toString();\n }\n /**\n * Returns `true` if client is actively listening for network connections.\n * @returns `true` when listening, otherwise `false`.\n */\n async net_listening() {\n return true;\n }\n /**\n * Returns number of peers currently connected to the client.\n * @returns integer of the number of connected peers.\n */\n async net_peerCount() {\n return utils_1.RPCQUANTITY_ZERO;\n }\n //#endregion\n //#region eth\n /**\n * Generates and returns an estimate of how much gas is necessary to allow the\n * transaction to complete. The transaction will not be added to the\n * blockchain. Note that the estimate may be significantly more than the\n * amount of gas actually used by the transaction, for a variety of reasons\n * including EVM mechanics and node performance.\n *\n * @returns the amount of gas used.\n *\n * @example\n * ```javascript\n * const accounts = await provider.request({ method: \"eth_accounts\", params: [] });\n * const gasEstimate = await provider.request({ method: \"eth_estimateGas\", params: [{ from: accounts[0], to: accounts[1] }, \"latest\" ] });\n * console.log(gasEstimate);\n * ```\n */\n async eth_estimateGas(transaction, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const blocks = blockchain.blocks;\n const parentBlock = await blocks.get(blockNumber);\n const parentHeader = parentBlock.header;\n const options = __classPrivateFieldGet(this, _options);\n const generateVM = () => {\n return blockchain.vm.copy();\n };\n return new Promise((resolve, reject) => {\n const { coinbase } = blockchain;\n const tx = new ethereum_transaction_1.RuntimeTransaction(transaction, __classPrivateFieldGet(this, _blockchain).common);\n if (tx.from == null) {\n tx.from = coinbase;\n }\n if (tx.gas.isNull()) {\n // eth_estimateGas isn't subject to regular transaction gas limits\n tx.gas = options.miner.callGasLimit;\n }\n const block = new ethereum_block_1.RuntimeBlock(utils_1.Quantity.from((parentHeader.number.toBigInt() || 0n) + 1n), parentHeader.parentHash, parentHeader.miner, tx.gas.toBuffer(), parentHeader.timestamp, options.miner.difficulty, parentHeader.totalDifficulty);\n const runArgs = {\n tx: tx.toVmTransaction(),\n block,\n skipBalance: true,\n skipNonce: true\n };\n gas_estimator_1.default(generateVM, runArgs, (err, result) => {\n if (err)\n return reject(err);\n resolve(utils_1.Quantity.from(result.gasEstimate.toArrayLike(Buffer)));\n });\n });\n }\n /**\n * Returns the current ethereum protocol version.\n * @returns The current ethereum protocol version.\n */\n async eth_protocolVersion() {\n return PROTOCOL_VERSION;\n }\n /**\n * Returns an object with data about the sync status or false.\n * @returns An object with sync status data or false, when not syncing:\n * startingBlock: \\{bigint\\} - The block at which the import started (will\n * only be reset, after the sync reached his head)\n * currentBlock: \\{bigint\\} - The current block, same as eth_blockNumber\n * highestBlock: \\{bigint\\} - The estimated highest block\n */\n async eth_syncing() {\n return false;\n }\n /**\n * Returns the client coinbase address.\n * @returns 20 bytes - the current coinbase address.\n */\n async eth_coinbase() {\n return __classPrivateFieldGet(this, _blockchain).coinbase;\n }\n /**\n * Returns information about a block by block number.\n * @param number - QUANTITY|TAG - integer of a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the\n * default block parameter.\n * @param transactions - Boolean - If true it returns the full transaction objects, if false only the hashes of the\n * transactions.\n * @returns the block, `null` if the block doesn't exist.\n */\n async eth_getBlockByNumber(number, transactions = false) {\n const block = await __classPrivateFieldGet(this, _blockchain).blocks.get(number).catch(_ => null);\n return block ? block.toJSON(transactions) : null;\n }\n /**\n * Returns information about a block by block hash.\n * @param number - QUANTITY|TAG - integer of a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the\n * default block parameter.\n * @param transactions - Boolean - If true it returns the full transaction objects, if false only the hashes of the\n * transactions.\n * @returns Block\n */\n async eth_getBlockByHash(hash, transactions = false) {\n const block = await __classPrivateFieldGet(this, _blockchain).blocks\n .getByHash(hash)\n .catch(_ => null);\n return block ? block.toJSON(transactions) : null;\n }\n /**\n * Returns the number of transactions in a block from a block matching the given block number.\n * @param number - QUANTITY|TAG - integer of a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the\n * default block parameter.\n */\n async eth_getBlockTransactionCountByNumber(blockNumber) {\n const { blocks } = __classPrivateFieldGet(this, _blockchain);\n const blockNum = blocks.getEffectiveNumber(blockNumber);\n const rawBlock = await blocks.getRawByBlockNumber(blockNum);\n if (!rawBlock)\n return null;\n const [, rawTransactions] = rlp_1.decode(rawBlock);\n return utils_1.Quantity.from(rawTransactions.length);\n }\n /**\n * Returns the number of transactions in a block from a block matching the given block hash.\n * @param hash - DATA, 32 Bytes - hash of a block.\n */\n async eth_getBlockTransactionCountByHash(hash) {\n const { blocks } = __classPrivateFieldGet(this, _blockchain);\n const blockNum = await blocks.getNumberFromHash(hash);\n if (!blockNum)\n return null;\n const rawBlock = await blocks.getRawByBlockNumber(utils_1.Quantity.from(blockNum));\n if (!rawBlock)\n return null;\n const [, rawTransactions] = rlp_1.decode(rawBlock);\n return utils_1.Quantity.from(rawTransactions.length);\n }\n async eth_getCompilers() {\n return [];\n }\n /**\n * Returns information about a transaction by block hash and transaction index position.\n * @param hash - DATA, 32 Bytes - hash of a block.\n * @param index - QUANTITY - integer of the transaction index position.\n */\n async eth_getTransactionByBlockHashAndIndex(hash, index) {\n const block = await this.eth_getBlockByHash(hash, true);\n if (block) {\n const tx = block.transactions[parseInt(index, 10)];\n if (tx)\n return tx;\n }\n return null;\n }\n /**\n * Returns information about a transaction by block number and transaction index position.\n * @param number - QUANTITY|TAG - a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the default\n * block parameter.\n * @param index - QUANTITY - integer of the transaction index position.\n */\n async eth_getTransactionByBlockNumberAndIndex(number, index) {\n const block = await this.eth_getBlockByNumber(number, true);\n return block.transactions[parseInt(index, 10)];\n }\n /**\n * Returns the number of uncles in a block from a block matching the given block hash.\n * @param hash - DATA, 32 Bytes - hash of a block.\n */\n async eth_getUncleCountByBlockHash(hash) {\n return utils_1.RPCQUANTITY_ZERO;\n }\n /**\n * Returns the number of uncles in a block from a block matching the given block hash.\n * @param hash - DATA, 32 Bytes - hash of a block.\n */\n async eth_getUncleCountByBlockNumber(number) {\n return utils_1.RPCQUANTITY_ZERO;\n }\n /**\n * Returns information about a uncle of a block by hash and uncle index position.\n *\n * @param hash - hash of a block\n * @param index - the uncle's index position.\n */\n async eth_getUncleByBlockHashAndIndex(hash, index) {\n return null;\n }\n /**\n * Returns information about a uncle of a block by hash and uncle index position.\n *\n * @param blockNumber - a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the default block\n * parameter.\n * @param uncleIndex - the uncle's index position.\n */\n async eth_getUncleByBlockNumberAndIndex(blockNumber, uncleIndex) {\n return null;\n }\n /**\n * Returns: An Array with the following elements\n * 1: DATA, 32 Bytes - current block header pow-hash\n * 2: DATA, 32 Bytes - the seed hash used for the DAG.\n * 3: DATA, 32 Bytes - the boundary condition (\"target\"), 2^256 / difficulty.\n *\n * @param - filterId - A filter id\n * @returns the hash of the current block, the seedHash, and the boundary condition to be met (\"target\").\n */\n async eth_getWork(filterId) {\n return [];\n }\n /**\n * Used for submitting a proof-of-work solution\n *\n * @param nonce - {DATA, 8 Bytes} The nonce found (64 bits)\n * @param powHash - {DATA, 32 Bytes} The header's pow-hash (256 bits)\n * @param digest - {DATA, 32 Bytes} The mix digest (256 bits)\n * @returns `true` if the provided solution is valid, otherwise `false`.\n */\n async eth_submitWork(nonce, powHash, digest) {\n return false;\n }\n /**\n * Used for submitting mining hashrate.\n *\n * @param hashRate - a hexadecimal string representation (32 bytes) of the hash rate\n * @param clientID - a random hexadecimal(32 bytes) ID identifying the client\n * @returns `true` if submitting went through successfully and `false` otherwise.\n */\n async eth_submitHashrate(hashRate, clientID) {\n return false;\n }\n /**\n * Returns `true` if client is actively mining new blocks.\n * @returns returns `true` if the client is mining, otherwise `false`.\n */\n async eth_mining() {\n // we return the blockchain's started state\n return __classPrivateFieldGet(this, _blockchain).isStarted();\n }\n /**\n * Returns the number of hashes per second that the node is mining with.\n * @returns number of hashes per second.\n */\n async eth_hashrate() {\n return utils_1.RPCQUANTITY_ZERO;\n }\n /**\n * Returns the current price per gas in wei.\n * @returns integer of the current gas price in wei.\n */\n async eth_gasPrice() {\n return __classPrivateFieldGet(this, _options).miner.gasPrice;\n }\n /**\n * Returns a list of addresses owned by client.\n * @returns Array of 20 Bytes - addresses owned by the client.\n */\n async eth_accounts() {\n return __classPrivateFieldGet(this, _wallet).addresses;\n }\n /**\n * Returns the number of the most recent block.\n * @returns integer of the current block number the client is on.\n */\n async eth_blockNumber() {\n return __classPrivateFieldGet(this, _blockchain).blocks.latest.header.number;\n }\n /**\n * Returns the currently configured chain id, a value used in\n * replay-protected transaction signing as introduced by EIP-155.\n * @returns The chain id as a string.\n * @EIP [155 – Simple replay attack protection](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md)\n *\n * @example\n * ```javascript\n * const chainId = await provider.send(\"eth_chainId\");\n * console.log(chainId);\n * ```\n */\n async eth_chainId() {\n return utils_1.Quantity.from(__classPrivateFieldGet(this, _options).chain.chainId);\n }\n /**\n * Returns the balance of the account of given address.\n * @param address 20 Bytes - address to check for balance.\n * @param blockNumber integer block number, or the string \"latest\", \"earliest\"\n * or \"pending\", see the default block parameter\n */\n async eth_getBalance(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n return __classPrivateFieldGet(this, _blockchain).accounts.getBalance(ethereum_address_1.Address.from(address), blockNumber);\n }\n /**\n * Returns code at a given address.\n *\n * @param address 20 Bytes - address\n * @param blockNumber integer block number, or the string \"latest\", \"earliest\" or \"pending\", see the default block\n * parameter\n * @returns the code from the given address.\n */\n async eth_getCode(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const { accounts } = __classPrivateFieldGet(this, _blockchain);\n return accounts.getCode(ethereum_address_1.Address.from(address), blockNumber);\n }\n /**\n * Returns the value from a storage position at a given address.\n * @param data 20 Bytes - address of the storage.\n * @param quantity integer of the position in the storage.\n * @param blockNumber integer block number, or the string \"latest\", \"earliest\"\n * or \"pending\", see the default block parameter\n */\n async eth_getStorageAt(address, position, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const blockNum = blockchain.blocks.getEffectiveNumber(blockNumber);\n const block = await blockchain.blocks.getRawByBlockNumber(blockNum);\n if (!block)\n throw new Error(\"header not found\");\n const [[, , , blockStateRoot]] = rlp_1.decode(block);\n const trie = blockchain.trie.copy(false);\n trie.setContext(blockStateRoot, null, blockNum);\n const posBuff = utils_1.Quantity.from(position).toBuffer();\n const length = posBuff.length;\n let paddedPosBuff;\n if (length < 32) {\n // storage locations are 32 bytes wide, so we need to expand any value\n // given to 32 bytes.\n paddedPosBuff = Buffer.allocUnsafe(32).fill(0);\n posBuff.copy(paddedPosBuff, 32 - length);\n }\n else if (length === 32) {\n paddedPosBuff = posBuff;\n }\n else {\n // if the position value we're passed is > 32 bytes, truncate it. This is\n // what geth does.\n paddedPosBuff = posBuff.slice(-32);\n }\n const addressBuf = ethereum_address_1.Address.from(address).toBuffer();\n const addressData = await trie.get(addressBuf);\n // An address's stateRoot is stored in the 3rd rlp entry\n const addressStateRoot = rlp_1.decode(addressData)[2];\n trie.setContext(addressStateRoot, addressBuf, blockNum);\n const value = await trie.get(paddedPosBuff);\n return utils_1.Data.from(rlp_1.decode(value));\n }\n /**\n * Returns the information about a transaction requested by transaction hash.\n *\n * @param transactionHash 32 Bytes - hash of a transaction\n */\n async eth_getTransactionByHash(transactionHash) {\n const { transactions } = __classPrivateFieldGet(this, _blockchain);\n const hashBuffer = utils_1.Data.from(transactionHash).toBuffer();\n // we must check the database before checking the pending cache, because the\n // cache is updated _after_ the transaction is already in the database, and\n // the database contains block info whereas the pending cache doesn't.\n const transaction = await transactions.get(hashBuffer);\n if (transaction === null) {\n // if we can't find it in the list of pending transactions, check the db!\n const tx = transactions.transactionPool.find(hashBuffer);\n return tx ? tx.toJSON() : null;\n }\n else {\n return transaction.toJSON();\n }\n }\n /**\n * Returns the receipt of a transaction by transaction hash.\n *\n * Note That the receipt is not available for pending transactions.\n *\n * @param transactionHash 32 Bytes - hash of a transaction\n * @returns Returns the receipt of a transaction by transaction hash.\n */\n async eth_getTransactionReceipt(transactionHash) {\n const { transactions, transactionReceipts, blocks } = __classPrivateFieldGet(this, _blockchain);\n const dataHash = utils_1.Data.from(transactionHash);\n const txHash = dataHash.toBuffer();\n const transactionPromise = transactions.get(txHash);\n const receiptPromise = transactionReceipts.get(txHash);\n const blockPromise = transactionPromise.then(t => t ? blocks.get(t.blockNumber.toBuffer()) : null);\n const [transaction, receipt, block] = await Promise.all([\n transactionPromise,\n receiptPromise,\n blockPromise\n ]);\n if (transaction) {\n return receipt.toJSON(block, transaction);\n }\n // if we are performing non-legacy instamining, then check to see if the\n // transaction is pending so as to warn about the v7 breaking change\n const options = __classPrivateFieldGet(this, _options);\n if (options.miner.blockTime <= 0 &&\n options.miner.legacyInstamine !== true &&\n __classPrivateFieldGet(this, _blockchain).isStarted()) {\n const tx = __classPrivateFieldGet(this, _blockchain).transactions.transactionPool.find(txHash);\n if (tx != null) {\n options.logging.logger.log(\" > Ganache `eth_getTransactionReceipt` notice: the transaction with hash\\n\" +\n ` > \\`${dataHash.toString()}\\` has not\\n` +\n \" > yet been mined. See https://trfl.co/v7-instamine for additional information.\");\n }\n }\n return null;\n }\n /**\n * Creates new message call transaction or a contract creation, if the data field contains code.\n * @param transaction\n * @returns The transaction hash\n */\n async eth_sendTransaction(transaction) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const tx = new ethereum_transaction_1.RuntimeTransaction(transaction, blockchain.common);\n if (tx.from == null) {\n throw new Error(\"from not found; is required\");\n }\n const fromString = tx.from.toString();\n const wallet = __classPrivateFieldGet(this, _wallet);\n const isKnownAccount = wallet.knownAccounts.has(fromString);\n const isUnlockedAccount = wallet.unlockedAccounts.has(fromString);\n if (!isUnlockedAccount) {\n const msg = isKnownAccount\n ? \"authentication needed: password or unlock\"\n : \"sender account not recognized\";\n throw new Error(msg);\n }\n if (tx.gas.isNull()) {\n const defaultLimit = __classPrivateFieldGet(this, _options).miner.defaultTransactionGasLimit;\n if (defaultLimit === utils_1.RPCQUANTITY_EMPTY) {\n // if the default limit is `RPCQUANTITY_EMPTY` use a gas estimate\n tx.gas = await this.eth_estimateGas(transaction, ethereum_utils_1.Tag.LATEST);\n }\n else {\n tx.gas = defaultLimit;\n }\n }\n if (tx.gasPrice.isNull()) {\n tx.gasPrice = __classPrivateFieldGet(this, _options).miner.gasPrice;\n }\n if (isUnlockedAccount) {\n const secretKey = wallet.unlockedAccounts.get(fromString);\n return blockchain.queueTransaction(tx, secretKey);\n }\n else {\n return blockchain.queueTransaction(tx);\n }\n }\n /**\n * Creates new message call transaction or a contract creation for signed transactions.\n * @param transaction\n * @returns The transaction hash\n */\n async eth_sendRawTransaction(transaction) {\n const data = utils_1.Data.from(transaction).toBuffer();\n const raw = rlp_1.decode(data);\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const tx = new ethereum_transaction_1.RuntimeTransaction(raw, blockchain.common);\n return blockchain.queueTransaction(tx);\n }\n /**\n * The sign method calculates an Ethereum specific signature with:\n * `sign(keccak256(\"\\x19Ethereum Signed Message:\\n\" + message.length + message)))`.\n *\n * By adding a prefix to the message makes the calculated signature\n * recognizable as an Ethereum specific signature. This prevents misuse where a malicious DApp can sign arbitrary data\n * (e.g. transaction) and use the signature to impersonate the victim.\n *\n * Note the address to sign with must be unlocked.\n *\n * @param account address\n * @param data message to sign\n * @returns Signature\n */\n async eth_sign(address, message) {\n const account = ethereum_address_1.Address.from(address).toString().toLowerCase();\n const privateKey = __classPrivateFieldGet(this, _wallet).unlockedAccounts.get(account);\n if (privateKey == null) {\n throw new Error(\"cannot sign data; no private key\");\n }\n const chainId = __classPrivateFieldGet(this, _options).chain.chainId;\n const messageHash = ethereumjs_util_1.hashPersonalMessage(utils_1.Data.from(message).toBuffer());\n const { v, r, s } = ethereumjs_util_1.ecsign(messageHash, privateKey.toBuffer(), chainId);\n return ethereumjs_util_1.toRpcSig(v, r, s, chainId);\n }\n /**\n *\n * @param address Address of the account that will sign the messages.\n * @param typedData Typed structured data to be signed.\n * @returns Signature. As in `eth_sign`, it is a hex encoded 129 byte array\n * starting with `0x`. It encodes the `r`, `s`, and `v` parameters from\n * appendix F of the [yellow paper](https://ethereum.github.io/yellowpaper/paper.pdf)\n * in big-endian format. Bytes 0...64 contain the `r` parameter, bytes\n * 64...128 the `s` parameter, and the last byte the `v` parameter. Note\n * that the `v` parameter includes the chain id as specified in [EIP-155](https://eips.ethereum.org/EIPS/eip-155).\n * @EIP [712](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md)\n */\n async eth_signTypedData(address, typedData) {\n const account = ethereum_address_1.Address.from(address).toString().toLowerCase();\n const privateKey = __classPrivateFieldGet(this, _wallet).unlockedAccounts.get(account);\n if (privateKey == null) {\n throw new Error(\"cannot sign data; no private key\");\n }\n if (!typedData.types) {\n throw new Error(\"cannot sign data; types missing\");\n }\n if (!typedData.types.EIP712Domain) {\n throw new Error(\"cannot sign data; EIP712Domain definition missing\");\n }\n if (!typedData.domain) {\n throw new Error(\"cannot sign data; domain missing\");\n }\n if (!typedData.primaryType) {\n throw new Error(\"cannot sign data; primaryType missing\");\n }\n if (!typedData.message) {\n throw new Error(\"cannot sign data; message missing\");\n }\n return eth_sig_util_1.signTypedData_v4(privateKey.toBuffer(), { data: typedData });\n }\n eth_subscribe(subscriptionName, options) {\n const subscriptions = __classPrivateFieldGet(this, _subscriptions);\n switch (subscriptionName) {\n case \"newHeads\": {\n const subscription = __classPrivateFieldGet(this, _getId).call(this);\n const promiEvent = utils_1.PromiEvent.resolve(subscription);\n const unsubscribe = __classPrivateFieldGet(this, _blockchain).on(\"block\", (block) => {\n const value = block;\n const header = value.header;\n const result = {\n logsBloom: header.logsBloom,\n miner: header.miner,\n difficulty: header.difficulty,\n totalDifficulty: header.totalDifficulty,\n extraData: header.extraData,\n gasLimit: header.gasLimit,\n gasUsed: header.gasUsed,\n hash: block.hash(),\n mixHash: block.header.mixHash,\n nonce: header.nonce,\n number: header.number,\n parentHash: header.parentHash,\n receiptsRoot: header.receiptsRoot,\n stateRoot: header.stateRoot,\n timestamp: header.timestamp,\n transactionsRoot: header.transactionsRoot,\n sha3Uncles: header.sha3Uncles\n };\n // TODO: move the JSON stringification closer to where the message\n // is actually sent to the listener\n promiEvent.emit(\"message\", {\n type: \"eth_subscription\",\n data: {\n result: JSON.parse(JSON.stringify(result)),\n subscription: subscription.toString()\n }\n });\n });\n subscriptions.set(subscription.toString(), unsubscribe);\n return promiEvent;\n }\n case \"logs\": {\n const subscription = __classPrivateFieldGet(this, _getId).call(this);\n const promiEvent = utils_1.PromiEvent.resolve(subscription);\n const { addresses, topics } = options\n ? filter_parsing_1.parseFilterDetails(options)\n : { addresses: [], topics: [] };\n const unsubscribe = __classPrivateFieldGet(this, _blockchain).on(\"blockLogs\", (blockLogs) => {\n // TODO: move the JSON stringification closer to where the message\n // is actually sent to the listener\n const result = JSON.parse(JSON.stringify([...blockLogs.filter(addresses, topics)]));\n promiEvent.emit(\"message\", {\n type: \"eth_subscription\",\n data: {\n result,\n subscription: subscription.toString()\n }\n });\n });\n subscriptions.set(subscription.toString(), unsubscribe);\n return promiEvent;\n }\n case \"newPendingTransactions\": {\n const subscription = __classPrivateFieldGet(this, _getId).call(this);\n const promiEvent = utils_1.PromiEvent.resolve(subscription);\n const unsubscribe = __classPrivateFieldGet(this, _blockchain).on(\"pendingTransaction\", (transaction) => {\n const result = transaction.hash.toString();\n promiEvent.emit(\"message\", {\n type: \"eth_subscription\",\n data: {\n result,\n subscription: subscription.toString()\n }\n });\n });\n subscriptions.set(subscription.toString(), unsubscribe);\n return promiEvent;\n }\n case \"syncing\": {\n // ganache doesn't sync, so doing nothing is perfectly valid.\n const subscription = __classPrivateFieldGet(this, _getId).call(this);\n const promiEvent = utils_1.PromiEvent.resolve(subscription);\n __classPrivateFieldGet(this, _subscriptions).set(subscription.toString(), () => { });\n return promiEvent;\n }\n default:\n throw new ethereum_utils_1.CodedError(`no \\\"${subscriptionName}\\\" subscription in eth namespace`, utils_1.JsonRpcErrorCode.METHOD_NOT_FOUND);\n }\n }\n async eth_unsubscribe(subscriptionId) {\n const subscriptions = __classPrivateFieldGet(this, _subscriptions);\n const unsubscribe = subscriptions.get(subscriptionId);\n if (unsubscribe) {\n subscriptions.delete(subscriptionId);\n unsubscribe();\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * Creates a filter in the node, to notify when a new block arrives. To check\n * if the state has changed, call `eth_getFilterChanges`.\n *\n * @returns A filter id.\n */\n async eth_newBlockFilter() {\n const unsubscribe = __classPrivateFieldGet(this, _blockchain).on(\"block\", (block) => {\n value.updates.push(block.hash());\n });\n const value = {\n updates: [],\n unsubscribe,\n filter: null,\n type: ethereum_utils_1.FilterTypes.block\n };\n const filterId = __classPrivateFieldGet(this, _getId).call(this);\n __classPrivateFieldGet(this, _filters).set(filterId.toString(), value);\n return filterId;\n }\n /**\n * Creates a filter in the node, to notify when new pending transactions\n * arrive. To check if the state has changed, call `eth_getFilterChanges`.\n *\n * @returns A filter id.\n */\n async eth_newPendingTransactionFilter() {\n const unsubscribe = __classPrivateFieldGet(this, _blockchain).on(\"pendingTransaction\", (transaction) => {\n value.updates.push(transaction.hash);\n });\n const value = {\n updates: [],\n unsubscribe,\n filter: null,\n type: ethereum_utils_1.FilterTypes.pendingTransaction\n };\n const filterId = __classPrivateFieldGet(this, _getId).call(this);\n __classPrivateFieldGet(this, _filters).set(filterId.toString(), value);\n return filterId;\n }\n /**\n * Creates a filter object, based on filter options, to notify when the state\n * changes (logs). To check if the state has changed, call\n * `eth_getFilterChanges`.\n *\n * If the from `fromBlock` or `toBlock` option are equal to \"latest\" the\n * filter continually append logs for whatever block is seen as latest at the\n * time the block was mined, not just for the block that was \"latest\" when the\n * filter was created.\n *\n * ### A note on specifying topic filters:\n * Topics are order-dependent. A transaction with a log with topics [A, B]\n * will be matched by the following topic filters:\n * * `[]` “anything”\n * * `[A]` “A in first position (and anything after)”\n * * `[null, B]` “anything in first position AND B in second position (and\n * anything after)”\n * * `[A, B]` “A in first position AND B in second position (and anything\n * after)”\n * * `[[A, B], [A, B]]` “(A OR B) in first position AND (A OR B) in second\n * position (and anything after)”\n *\n * @param filter - The filter options\n */\n async eth_newFilter(filter) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n if (filter == null)\n filter = {};\n const { addresses, topics } = filter_parsing_1.parseFilterDetails(filter || {});\n const unsubscribe = blockchain.on(\"blockLogs\", (blockLogs) => {\n const blockNumber = blockLogs.blockNumber;\n // every time we get a blockLogs message we re-check what the filter's\n // range is. We do this because \"latest\" isn't the latest block at the\n // time the filter was set up, rather it is the actual latest *mined*\n // block (that is: not pending)\n const { fromBlock, toBlock } = filter_parsing_1.parseFilterRange(filter, blockchain);\n if (fromBlock <= blockNumber && toBlock >= blockNumber) {\n value.updates.push(...blockLogs.filter(addresses, topics));\n }\n });\n const value = { updates: [], unsubscribe, filter, type: ethereum_utils_1.FilterTypes.log };\n const filterId = __classPrivateFieldGet(this, _getId).call(this);\n __classPrivateFieldGet(this, _filters).set(filterId.toString(), value);\n return filterId;\n }\n /**\n * Polling method for a filter, which returns an array of logs, block hashes,\n * or transaction hashes, depending on the filter type, which occurred since\n * last poll.\n *\n * @param filterId - the filter id.\n * @returns an array of logs, block hashes, or transaction hashes, depending\n * on the filter type, which occurred since last poll.\n */\n async eth_getFilterChanges(filterId) {\n const filter = __classPrivateFieldGet(this, _filters).get(filterId);\n if (filter) {\n const updates = filter.updates;\n filter.updates = [];\n return updates;\n }\n else {\n throw new Error(\"filter not found\");\n }\n }\n /**\n * Uninstalls a filter with given id. Should always be called when watch is\n * no longer needed.\n *\n * @param filterId - the filter id.\n * @returns `true` if the filter was successfully uninstalled, otherwise\n * `false`.\n */\n async eth_uninstallFilter(filterId) {\n const filter = __classPrivateFieldGet(this, _filters).get(filterId);\n if (!filter)\n return false;\n filter.unsubscribe();\n return __classPrivateFieldGet(this, _filters).delete(filterId);\n }\n /**\n * Returns an array of all logs matching filter with given id.\n *\n * @returns Array of log objects, or an empty array.\n */\n async eth_getFilterLogs(filterId) {\n const filter = __classPrivateFieldGet(this, _filters).get(filterId);\n if (filter && filter.type === ethereum_utils_1.FilterTypes.log) {\n return this.eth_getLogs(filter.filter);\n }\n else {\n throw new Error(\"filter not found\");\n }\n }\n /**\n * Returns an array of all logs matching a given filter object.\n *\n * @param filter - The filter options\n * @returns Array of log objects, or an empty array.\n */\n async eth_getLogs(filter) {\n return __classPrivateFieldGet(this, _blockchain).blockLogs.getLogs(filter);\n }\n /**\n * Returns the number of transactions sent from an address.\n *\n * @param address - address\n * @param blockNumber - integer block number, or the string \"latest\", \"earliest\"\n * or \"pending\", see the default block parameter\n * @returns integer of the number of transactions sent from this address.\n */\n async eth_getTransactionCount(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n return __classPrivateFieldGet(this, _blockchain).accounts.getNonce(ethereum_address_1.Address.from(address), blockNumber);\n }\n /**\n * Executes a new message call immediately without creating a transaction on the block chain.\n *\n * @param transaction - transaction\n * @param blockNumber - blockNumber\n *\n * @returns the return value of executed contract.\n */\n async eth_call(transaction, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const blocks = blockchain.blocks;\n const parentBlock = await blocks.get(blockNumber);\n const parentHeader = parentBlock.header;\n const options = __classPrivateFieldGet(this, _options);\n let gas;\n if (typeof transaction.gasLimit === \"undefined\") {\n if (typeof transaction.gas !== \"undefined\") {\n gas = utils_1.Quantity.from(transaction.gas);\n }\n else {\n // eth_call isn't subject to regular transaction gas limits by default\n gas = options.miner.callGasLimit;\n }\n }\n else {\n gas = utils_1.Quantity.from(transaction.gasLimit);\n }\n let data;\n if (typeof transaction.data === \"undefined\") {\n if (typeof transaction.input !== \"undefined\") {\n data = utils_1.Data.from(transaction.input);\n }\n }\n else {\n data = utils_1.Data.from(transaction.data);\n }\n const block = new ethereum_block_1.RuntimeBlock(parentHeader.number, parentHeader.parentHash, blockchain.coinbase, gas.toBuffer(), parentHeader.timestamp, options.miner.difficulty, parentHeader.totalDifficulty);\n const simulatedTransaction = {\n gas,\n // if we don't have a from address, our caller sut be the configured coinbase address\n from: transaction.from == null\n ? blockchain.coinbase\n : ethereum_address_1.Address.from(transaction.from),\n to: transaction.to == null ? null : ethereum_address_1.Address.from(transaction.to),\n gasPrice: utils_1.Quantity.from(transaction.gasPrice == null ? 0 : transaction.gasPrice),\n value: transaction.value == null ? null : utils_1.Quantity.from(transaction.value),\n data,\n block\n };\n return blockchain.simulateTransaction(simulatedTransaction, parentBlock);\n }\n //#endregion\n //#region debug\n /**\n * Attempt to run the transaction in the exact same manner as it was executed\n * on the network. It will replay any transaction that may have been executed\n * prior to this one before it will finally attempt to execute the transaction\n * that corresponds to the given hash.\n *\n * In addition to the hash of the transaction you may give it a secondary\n * optional argument, which specifies the options for this specific call.\n * The possible options are:\n *\n * * `disableStorage`: \\{boolean\\} Setting this to `true` will disable storage capture (default = `false`).\n * * `disableMemory`: \\{boolean\\} Setting this to `true` will disable memory capture (default = `false`).\n * * `disableStack`: \\{boolean\\} Setting this to `true` will disable stack capture (default = `false`).\n *\n * @param transactionHash - transactionHash\n * @param options - options\n * @returns returns comment\n * @example\n * ```javascript\n * // Simple.sol\n * // // SPDX-License-Identifier: MIT\n * // pragma solidity ^0.7.4;\n * //\n * // contract Simple {\n * // uint256 public value;\n * // constructor() payable {\n * // value = 5;\n * // }\n * // }\n * const simpleSol = \"0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033\";\n * const [from] = await provider.request({ method: \"eth_accounts\", params: [] });\n * await provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\n * const txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, gas: \"0x5b8d80\", data: simpleSol }] });\n * await provider.once(\"message\"); // Note: `await provider.once` is non-standard\n * const transactionTrace = await provider.request({ method: \"debug_traceTransaction\", params: [txHash] });\n * console.log(transactionTrace);\n * ```\n */\n async debug_traceTransaction(transactionHash, options) {\n return __classPrivateFieldGet(this, _blockchain).traceTransaction(transactionHash, options || {});\n }\n /**\n * Attempts to replay the transaction as it was executed on the network and\n * return storage data given a starting key and max number of entries to return.\n *\n * @param blockHash - DATA, 32 Bytes - hash of a block\n * @param transactionIndex - QUANTITY - the index of the transaction in the block\n * @param contractAddress - DATA, 20 Bytes - address of the contract\n * @param startKey - hash of the start key for grabbing storage entries\n * @param maxResult - integer of maximum number of storage entries to return\n * @returns returns a storage object with the keys being keccak-256 hashes of the storage keys,\n * and the values being the raw, un-hashed key and value for that specific storage slot. Also\n * returns a next key which is the keccak-256 hash of the next key in storage for continuous downloading.\n */\n async debug_storageRangeAt(blockHash, transactionIndex, contractAddress, startKey, maxResult) {\n return __classPrivateFieldGet(this, _blockchain).storageRangeAt(blockHash, transactionIndex, contractAddress, startKey, maxResult);\n }\n //#endregion\n //#region personal\n /**\n * Returns all the Ethereum account addresses of all keys that have been\n * added.\n * @returns the Ethereum account addresses of all keys that have been added.\n */\n async personal_listAccounts() {\n return __classPrivateFieldGet(this, _wallet).addresses;\n }\n /**\n * Generates a new account with private key. Returns the address of the new\n * account.\n * @param passphrase - passphrase\n * @returns The new account's address\n */\n async personal_newAccount(passphrase) {\n if (typeof passphrase !== \"string\") {\n throw new Error(\"missing value for required argument `passphrase`\");\n }\n const wallet = __classPrivateFieldGet(this, _wallet);\n const newAccount = wallet.createRandomAccount();\n const address = newAccount.address;\n const strAddress = address.toString();\n const encryptedKeyFile = await wallet.encrypt(newAccount.privateKey, passphrase);\n wallet.encryptedKeyFiles.set(strAddress, encryptedKeyFile);\n wallet.addresses.push(strAddress);\n wallet.knownAccounts.add(strAddress);\n return newAccount.address;\n }\n /**\n * Imports the given unencrypted private key (hex string) into the key store, encrypting it with the passphrase.\n *\n * @param rawKey - rawKey\n * @param passphrase - passphrase\n * @returns Returns the address of the new account.\n */\n async personal_importRawKey(rawKey, passphrase) {\n if (typeof passphrase !== \"string\") {\n throw new Error(\"missing value for required argument `passphrase`\");\n }\n const wallet = __classPrivateFieldGet(this, _wallet);\n const newAccount = wallet_1.default.createAccountFromPrivateKey(utils_1.Data.from(rawKey));\n const address = newAccount.address;\n const strAddress = address.toString();\n const encryptedKeyFile = await wallet.encrypt(newAccount.privateKey, passphrase);\n wallet.encryptedKeyFiles.set(strAddress, encryptedKeyFile);\n wallet.addresses.push(strAddress);\n wallet.knownAccounts.add(strAddress);\n return newAccount.address;\n }\n /**\n * Locks the account. The account can no longer be used to send transactions.\n * @param address\n */\n async personal_lockAccount(address) {\n return __classPrivateFieldGet(this, _wallet).lockAccount(address.toLowerCase());\n }\n /**\n * Unlocks the account for use.\n *\n * The unencrypted key will be held in memory until the unlock duration\n * expires. The unlock duration defaults to 300 seconds. An explicit duration\n * of zero seconds unlocks the key until geth exits.\n *\n * The account can be used with eth_sign and eth_sendTransaction while it is\n * unlocked.\n * @param address - 20 Bytes - The address of the account to unlock.\n * @param passphrase - Passphrase to unlock the account.\n * @param duration - (default: 300) Duration in seconds how long the account\n * should remain unlocked for. Set to 0 to disable automatic locking.\n * @returns true if it worked. Throws an error if it did not.\n */\n async personal_unlockAccount(address, passphrase, duration = 300) {\n return __classPrivateFieldGet(this, _wallet).unlockAccount(address.toLowerCase(), passphrase, duration);\n }\n /**\n * Validate the given passphrase and submit transaction.\n *\n * The transaction is the same argument as for eth_sendTransaction and\n * contains the from address. If the passphrase can be used to decrypt the\n * private key belonging to tx.from the transaction is verified, signed and\n * send onto the network. The account is not unlocked globally in the node\n * and cannot be used in other RPC calls.\n *\n * @param txData - txData\n * @param passphrase - passphrase\n */\n async personal_sendTransaction(transaction, passphrase) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n const tx = new ethereum_transaction_1.RuntimeTransaction(transaction, blockchain.common);\n const from = tx.from;\n if (from == null) {\n throw new Error(\"from not found; is required\");\n }\n const fromString = tx.from.toString();\n const wallet = __classPrivateFieldGet(this, _wallet);\n const encryptedKeyFile = wallet.encryptedKeyFiles.get(fromString);\n if (encryptedKeyFile === undefined) {\n throw new Error(\"no key for given address or file\");\n }\n if (encryptedKeyFile !== null) {\n const secretKey = await wallet.decrypt(encryptedKeyFile, passphrase);\n tx.signAndHash(secretKey);\n }\n return blockchain.queueTransaction(tx);\n }\n //#endregion\n //#region rpc\n async rpc_modules() {\n return RPC_MODULES;\n }\n //endregion\n //#region shh\n /**\n * Creates new whisper identity in the client.\n *\n * @returns result - the address of the new identity.\n */\n async shh_newIdentity() {\n return \"0x00\";\n }\n /**\n * Checks if the client hold the private keys for a given identity.\n *\n * @param address - The identity address to check.\n * @returns returns true if the client holds the privatekey for that identity, otherwise false.\n */\n async shh_hasIdentity(address) {\n return false;\n }\n /**\n * Creates a new group.\n *\n * @returns the address of the new group.\n */\n async shh_newGroup() {\n return \"0x00\";\n }\n /**\n * Adds a whisper identity to the group\n *\n * @param address - The identity address to add to a group.\n * @returns true if the identity was successfully added to the group, otherwise false.\n */\n async shh_addToGroup(address) {\n return false;\n }\n /**\n * Creates filter to notify, when client receives whisper message matching the filter options.\n *\n * @param to -\n * ^(optional) Identity of the receiver. When present it will try to decrypt any incoming message\n * if the client holds the private key to this identity.\n * @param topics - Array of DATA topics which the incoming message's topics should match.\n * @returns returns true if the identity was successfully added to the group, otherwise false.\n */\n async shh_newFilter(to, topics) {\n return false;\n }\n /**\n * Uninstalls a filter with given id. Should always be called when watch is no longer needed.\n * Additionally Filters timeout when they aren't requested with shh_getFilterChanges for a period of time.\n *\n * @param id - The filter id. Ex: \"0x7\"\n * @returns true if the filter was successfully uninstalled, otherwise false.\n */\n async shh_uninstallFilter(id) {\n return false;\n }\n /**\n * Polling method for whisper filters. Returns new messages since the last call of this method.\n *\n * @param id - The filter id. Ex: \"0x7\"\n * @returns More Info: https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_getfilterchanges\n */\n async shh_getFilterChanges(id) {\n return [];\n }\n /**\n * Get all messages matching a filter. Unlike shh_getFilterChanges this returns all messages.\n *\n * @param id - The filter id. Ex: \"0x7\"\n * @returns See: shh_getFilterChanges\n */\n async shh_getMessages(id) {\n return false;\n }\n /**\n * Creates a whisper message and injects it into the network for distribution.\n *\n * @param postData\n * @returns returns true if the message was sent, otherwise false.\n */\n async shh_post(postData) {\n return false;\n }\n /**\n * Returns the current whisper protocol version.\n *\n * @returns The current whisper protocol version\n */\n async shh_version() {\n return \"2\";\n }\n}\n_getId = new WeakMap(), _filters = new WeakMap(), _subscriptions = new WeakMap(), _options = new WeakMap(), _blockchain = new WeakMap(), _wallet = new WeakMap();\n__decorate([\n assert_arg_length_1.assertArgLength(3)\n], EthereumApi.prototype, \"db_putString\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"db_getString\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(3)\n], EthereumApi.prototype, \"db_putHex\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"db_getHex\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"bzz_hive\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"bzz_info\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0, 1)\n], EthereumApi.prototype, \"evm_mine\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(3, 4)\n], EthereumApi.prototype, \"evm_setStorageAt\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"evm_setAccountNonce\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"evm_increaseTime\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0, 1)\n], EthereumApi.prototype, \"evm_setTime\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"evm_revert\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0, 1)\n], EthereumApi.prototype, \"miner_start\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"miner_stop\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"miner_setGasPrice\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"miner_setEtherbase\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"miner_setExtra\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"web3_clientVersion\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"web3_sha3\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"net_version\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"net_listening\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"net_peerCount\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_estimateGas\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_protocolVersion\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_syncing\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_coinbase\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_getBlockByNumber\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_getBlockByHash\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getBlockTransactionCountByNumber\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getBlockTransactionCountByHash\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_getCompilers\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_getTransactionByBlockHashAndIndex\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_getTransactionByBlockNumberAndIndex\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getUncleCountByBlockHash\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getUncleCountByBlockNumber\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_getUncleByBlockHashAndIndex\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_getUncleByBlockNumberAndIndex\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getWork\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(3)\n], EthereumApi.prototype, \"eth_submitWork\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_submitHashrate\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_mining\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_hashrate\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_gasPrice\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_accounts\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_blockNumber\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_chainId\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_getBalance\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_getCode\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2, 3)\n], EthereumApi.prototype, \"eth_getStorageAt\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getTransactionByHash\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getTransactionReceipt\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_sendTransaction\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_sendRawTransaction\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_sign\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"eth_signTypedData\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_subscribe\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_unsubscribe\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_newBlockFilter\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"eth_newPendingTransactionFilter\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0, 1)\n], EthereumApi.prototype, \"eth_newFilter\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getFilterChanges\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_uninstallFilter\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getFilterLogs\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"eth_getLogs\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_getTransactionCount\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1, 2)\n], EthereumApi.prototype, \"eth_call\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"personal_listAccounts\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"personal_newAccount\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"personal_importRawKey\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"personal_lockAccount\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2, 3)\n], EthereumApi.prototype, \"personal_unlockAccount\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"personal_sendTransaction\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"rpc_modules\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"shh_newIdentity\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"shh_hasIdentity\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"shh_newGroup\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"shh_addToGroup\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(2)\n], EthereumApi.prototype, \"shh_newFilter\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"shh_uninstallFilter\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"shh_getFilterChanges\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"shh_getMessages\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(1)\n], EthereumApi.prototype, \"shh_post\", null);\n__decorate([\n assert_arg_length_1.assertArgLength(0)\n], EthereumApi.prototype, \"shh_version\", null);\nexports.default = EthereumApi;\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar secp256k1_1 = require(\"secp256k1\");\nvar random_1 = require(\"./random\");\nvar SECP256K1_PRIVATE_KEY_SIZE = 32;\nfunction createPrivateKey() {\n return __awaiter(this, void 0, void 0, function () {\n var pk;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!true) return [3 /*break*/, 2];\n return [4 /*yield*/, random_1.getRandomBytes(SECP256K1_PRIVATE_KEY_SIZE)];\n case 1:\n pk = _a.sent();\n if (secp256k1_1.privateKeyVerify(pk)) {\n return [2 /*return*/, pk];\n }\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n });\n}\nexports.createPrivateKey = createPrivateKey;\nfunction createPrivateKeySync() {\n while (true) {\n var pk = random_1.getRandomBytesSync(SECP256K1_PRIVATE_KEY_SIZE);\n if (secp256k1_1.privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\nexports.createPrivateKeySync = createPrivateKeySync;\n__export(require(\"secp256k1\"));\n//# sourceMappingURL=secp256k1.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n 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.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","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n 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.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","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n 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.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","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nexports.BN = bn_js_1.default;\nconst rlp = __importStar(require(\"rlp\"));\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckpointDB = void 0;\nvar db_1 = require(\"./db\");\n/**\n * DB is a thin wrapper around the underlying levelup db,\n * which validates inputs and sets encoding type.\n */\nvar CheckpointDB = /** @class */ (function (_super) {\n __extends(CheckpointDB, _super);\n /**\n * Initialize a DB instance. If `leveldb` is not provided, DB\n * defaults to an [in-memory store](https://github.com/Level/memdown).\n * @param leveldb - An abstract-leveldown compliant store\n */\n function CheckpointDB(leveldb) {\n var _this = _super.call(this, leveldb) || this;\n // Roots of trie at the moment of checkpoint\n _this.checkpoints = [];\n return _this;\n }\n Object.defineProperty(CheckpointDB.prototype, \"isCheckpoint\", {\n /**\n * Is the DB during a checkpoint phase?\n */\n get: function () {\n return this.checkpoints.length > 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Adds a new checkpoint to the stack\n * @param root\n */\n CheckpointDB.prototype.checkpoint = function (root) {\n this.checkpoints.push({ keyValueMap: new Map(), root: root });\n };\n /**\n * Commits the latest checkpoint\n */\n CheckpointDB.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n var keyValueMap, batchOp_1, currentKeyValueMap_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n keyValueMap = this.checkpoints.pop().keyValueMap;\n if (!!this.isCheckpoint) return [3 /*break*/, 2];\n batchOp_1 = [];\n keyValueMap.forEach(function (value, key) {\n if (value === null) {\n batchOp_1.push({\n type: 'del',\n key: Buffer.from(key, 'binary'),\n });\n }\n else {\n batchOp_1.push({\n type: 'put',\n key: Buffer.from(key, 'binary'),\n value: value,\n });\n }\n });\n return [4 /*yield*/, this.batch(batchOp_1)];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n currentKeyValueMap_1 = this.checkpoints[this.checkpoints.length - 1].keyValueMap;\n keyValueMap.forEach(function (value, key) { return currentKeyValueMap_1.set(key, value); });\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Reverts the latest checkpoint\n */\n CheckpointDB.prototype.revert = function () {\n return __awaiter(this, void 0, void 0, function () {\n var root;\n return __generator(this, function (_a) {\n root = this.checkpoints.pop().root;\n return [2 /*return*/, root];\n });\n });\n };\n /**\n * Retrieves a raw value from leveldb.\n * @param key\n * @returns A Promise that resolves to `Buffer` if a value is found or `null` if no value is found.\n */\n CheckpointDB.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var index, value_1, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Lookup the value in our cache. We return the latest checkpointed value (which should be the value on disk)\n for (index = this.checkpoints.length - 1; index >= 0; index--) {\n value_1 = this.checkpoints[index].keyValueMap.get(key.toString('binary'));\n if (value_1 !== undefined) {\n return [2 /*return*/, value_1];\n }\n }\n return [4 /*yield*/, _super.prototype.get.call(this, key)];\n case 1:\n value = _a.sent();\n if (this.isCheckpoint) {\n // Since we are a checkpoint, put this value in cache, so future `get` calls will not look the key up again from disk.\n this.checkpoints[this.checkpoints.length - 1].keyValueMap.set(key.toString('binary'), value);\n }\n return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Writes a value directly to leveldb.\n * @param key The key as a `Buffer`\n * @param value The value to be stored\n */\n CheckpointDB.prototype.put = function (key, val) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isCheckpoint) return [3 /*break*/, 1];\n // put value in cache\n this.checkpoints[this.checkpoints.length - 1].keyValueMap.set(key.toString('binary'), val);\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, _super.prototype.put.call(this, key, val)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes a raw value in the underlying leveldb.\n * @param keys\n */\n CheckpointDB.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isCheckpoint) return [3 /*break*/, 1];\n // delete the value in the current cache\n this.checkpoints[this.checkpoints.length - 1].keyValueMap.set(key.toString('binary'), null);\n return [3 /*break*/, 3];\n case 1: \n // delete the value on disk\n return [4 /*yield*/, this._leveldb.del(key, db_1.ENCODING_OPTS)];\n case 2:\n // delete the value on disk\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Performs a batch operation on db.\n * @param opStack A stack of levelup operations\n */\n CheckpointDB.prototype.batch = function (opStack) {\n return __awaiter(this, void 0, void 0, function () {\n var opStack_1, opStack_1_1, op, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.isCheckpoint) return [3 /*break*/, 11];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 8, 9, 10]);\n opStack_1 = __values(opStack), opStack_1_1 = opStack_1.next();\n _b.label = 2;\n case 2:\n if (!!opStack_1_1.done) return [3 /*break*/, 7];\n op = opStack_1_1.value;\n if (!(op.type === 'put')) return [3 /*break*/, 4];\n return [4 /*yield*/, this.put(op.key, op.value)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4:\n if (!(op.type === 'del')) return [3 /*break*/, 6];\n return [4 /*yield*/, this.del(op.key)];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n opStack_1_1 = opStack_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (opStack_1_1 && !opStack_1_1.done && (_a = opStack_1.return)) _a.call(opStack_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10: return [3 /*break*/, 13];\n case 11: return [4 /*yield*/, _super.prototype.batch.call(this, opStack)];\n case 12:\n _b.sent();\n _b.label = 13;\n case 13: return [2 /*return*/];\n }\n });\n });\n };\n return CheckpointDB;\n}(db_1.DB));\nexports.CheckpointDB = CheckpointDB;\n//# sourceMappingURL=checkpointDb.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nexports.BN = bn_js_1.default;\nconst rlp = __importStar(require(\"rlp\"));\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ethjsUtil = __importStar(require(\"ethjs-util\"));\nconst rlp = __importStar(require(\"rlp\"));\nconst bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label = false) {\n if (label) {\n const obj = {};\n self._fields.forEach((field) => {\n obj[field] = `0x${self[field].toString('hex')}`;\n });\n return obj;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach((field, i) => {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.unpadBuffer(v);\n assert_1.default(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert_1.default(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n const keys = Object.keys(data);\n fields.forEach((field) => {\n if (keys.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nexports.BN = bn_js_1.default;\nconst rlp = __importStar(require(\"rlp\"));\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckpointDB = void 0;\nvar db_1 = require(\"./db\");\n/**\n * DB is a thin wrapper around the underlying levelup db,\n * which validates inputs and sets encoding type.\n */\nvar CheckpointDB = /** @class */ (function (_super) {\n __extends(CheckpointDB, _super);\n /**\n * Initialize a DB instance. If `leveldb` is not provided, DB\n * defaults to an [in-memory store](https://github.com/Level/memdown).\n * @param leveldb - An abstract-leveldown compliant store\n */\n function CheckpointDB(leveldb) {\n var _this = _super.call(this, leveldb) || this;\n // Roots of trie at the moment of checkpoint\n _this.checkpoints = [];\n return _this;\n }\n Object.defineProperty(CheckpointDB.prototype, \"isCheckpoint\", {\n /**\n * Is the DB during a checkpoint phase?\n */\n get: function () {\n return this.checkpoints.length > 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Adds a new checkpoint to the stack\n * @param root\n */\n CheckpointDB.prototype.checkpoint = function (root) {\n this.checkpoints.push({ keyValueMap: new Map(), root: root });\n };\n /**\n * Commits the latest checkpoint\n */\n CheckpointDB.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n var keyValueMap, batchOp_1, currentKeyValueMap_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n keyValueMap = this.checkpoints.pop().keyValueMap;\n if (!!this.isCheckpoint) return [3 /*break*/, 2];\n batchOp_1 = [];\n keyValueMap.forEach(function (value, key) {\n if (value === null) {\n batchOp_1.push({\n type: 'del',\n key: Buffer.from(key, 'binary'),\n });\n }\n else {\n batchOp_1.push({\n type: 'put',\n key: Buffer.from(key, 'binary'),\n value: value,\n });\n }\n });\n return [4 /*yield*/, this.batch(batchOp_1)];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n currentKeyValueMap_1 = this.checkpoints[this.checkpoints.length - 1].keyValueMap;\n keyValueMap.forEach(function (value, key) { return currentKeyValueMap_1.set(key, value); });\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Reverts the latest checkpoint\n */\n CheckpointDB.prototype.revert = function () {\n return __awaiter(this, void 0, void 0, function () {\n var root;\n return __generator(this, function (_a) {\n root = this.checkpoints.pop().root;\n return [2 /*return*/, root];\n });\n });\n };\n /**\n * Retrieves a raw value from leveldb.\n * @param key\n * @returns A Promise that resolves to `Buffer` if a value is found or `null` if no value is found.\n */\n CheckpointDB.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var index, value_1, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Lookup the value in our cache. We return the latest checkpointed value (which should be the value on disk)\n for (index = this.checkpoints.length - 1; index >= 0; index--) {\n value_1 = this.checkpoints[index].keyValueMap.get(key.toString('binary'));\n if (value_1 !== undefined) {\n return [2 /*return*/, value_1];\n }\n }\n return [4 /*yield*/, _super.prototype.get.call(this, key)];\n case 1:\n value = _a.sent();\n if (this.isCheckpoint) {\n // Since we are a checkpoint, put this value in cache, so future `get` calls will not look the key up again from disk.\n this.checkpoints[this.checkpoints.length - 1].keyValueMap.set(key.toString('binary'), value);\n }\n return [2 /*return*/, value];\n }\n });\n });\n };\n /**\n * Writes a value directly to leveldb.\n * @param key The key as a `Buffer`\n * @param value The value to be stored\n */\n CheckpointDB.prototype.put = function (key, val) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isCheckpoint) return [3 /*break*/, 1];\n // put value in cache\n this.checkpoints[this.checkpoints.length - 1].keyValueMap.set(key.toString('binary'), val);\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, _super.prototype.put.call(this, key, val)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes a raw value in the underlying leveldb.\n * @param keys\n */\n CheckpointDB.prototype.del = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isCheckpoint) return [3 /*break*/, 1];\n // delete the value in the current cache\n this.checkpoints[this.checkpoints.length - 1].keyValueMap.set(key.toString('binary'), null);\n return [3 /*break*/, 3];\n case 1: \n // delete the value on disk\n return [4 /*yield*/, this._leveldb.del(key, db_1.ENCODING_OPTS)];\n case 2:\n // delete the value on disk\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Performs a batch operation on db.\n * @param opStack A stack of levelup operations\n */\n CheckpointDB.prototype.batch = function (opStack) {\n return __awaiter(this, void 0, void 0, function () {\n var opStack_1, opStack_1_1, op, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.isCheckpoint) return [3 /*break*/, 11];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 8, 9, 10]);\n opStack_1 = __values(opStack), opStack_1_1 = opStack_1.next();\n _b.label = 2;\n case 2:\n if (!!opStack_1_1.done) return [3 /*break*/, 7];\n op = opStack_1_1.value;\n if (!(op.type === 'put')) return [3 /*break*/, 4];\n return [4 /*yield*/, this.put(op.key, op.value)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4:\n if (!(op.type === 'del')) return [3 /*break*/, 6];\n return [4 /*yield*/, this.del(op.key)];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n opStack_1_1 = opStack_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (opStack_1_1 && !opStack_1_1.done && (_a = opStack_1.return)) _a.call(opStack_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10: return [3 /*break*/, 13];\n case 11: return [4 /*yield*/, _super.prototype.batch.call(this, opStack)];\n case 12:\n _b.sent();\n _b.label = 13;\n case 13: return [2 /*return*/];\n }\n });\n });\n };\n return CheckpointDB;\n}(db_1.DB));\nexports.CheckpointDB = CheckpointDB;\n//# sourceMappingURL=checkpointDb.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseTransaction = void 0;\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\n/**\n * This base class will likely be subject to further\n * refactoring along the introduction of additional tx types\n * on the Ethereum network.\n *\n * It is therefore not recommended to use directly.\n */\nvar BaseTransaction = /** @class */ (function () {\n function BaseTransaction(txData, txOptions) {\n if (txOptions === void 0) { txOptions = {}; }\n var _a, _b;\n var nonce = txData.nonce, gasLimit = txData.gasLimit, to = txData.to, value = txData.value, data = txData.data, v = txData.v, r = txData.r, s = txData.s, type = txData.type;\n this._type = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(type)).toNumber();\n var toB = ethereumjs_util_1.toBuffer(to === '' ? '0x' : to);\n var vB = ethereumjs_util_1.toBuffer(v === '' ? '0x' : v);\n var rB = ethereumjs_util_1.toBuffer(r === '' ? '0x' : r);\n var sB = ethereumjs_util_1.toBuffer(s === '' ? '0x' : s);\n this.nonce = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(nonce === '' ? '0x' : nonce));\n this.gasLimit = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasLimit === '' ? '0x' : gasLimit));\n this.to = toB.length > 0 ? new ethereumjs_util_1.Address(toB) : undefined;\n this.value = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(value === '' ? '0x' : value));\n this.data = ethereumjs_util_1.toBuffer(data === '' ? '0x' : data);\n this.v = vB.length > 0 ? new ethereumjs_util_1.BN(vB) : undefined;\n this.r = rB.length > 0 ? new ethereumjs_util_1.BN(rB) : undefined;\n this.s = sB.length > 0 ? new ethereumjs_util_1.BN(sB) : undefined;\n this._validateCannotExceedMaxInteger({\n nonce: this.nonce,\n gasLimit: this.gasLimit,\n value: this.value,\n r: this.r,\n s: this.s,\n });\n this.common = (_b = (_a = txOptions.common) === null || _a === void 0 ? void 0 : _a.copy()) !== null && _b !== void 0 ? _b : new common_1.default({ chain: 'mainnet' });\n }\n Object.defineProperty(BaseTransaction.prototype, \"transactionType\", {\n /**\n * Returns the transaction type\n */\n get: function () {\n return this._type;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseTransaction.prototype, \"type\", {\n /**\n * Alias for `transactionType`\n */\n get: function () {\n return this.transactionType;\n },\n enumerable: false,\n configurable: true\n });\n BaseTransaction.prototype.validate = function (stringError) {\n if (stringError === void 0) { stringError = false; }\n var errors = [];\n if (this.getBaseFee().gt(this.gasLimit)) {\n errors.push(\"gasLimit is too low. given \" + this.gasLimit + \", need at least \" + this.getBaseFee());\n }\n if (this.isSigned() && !this.verifySignature()) {\n errors.push('Invalid Signature');\n }\n return stringError ? errors : errors.length === 0;\n };\n /**\n * The minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n */\n BaseTransaction.prototype.getBaseFee = function () {\n var fee = this.getDataFee().addn(this.common.param('gasPrices', 'tx'));\n if (this.common.gteHardfork('homestead') && this.toCreationAddress()) {\n fee.iaddn(this.common.param('gasPrices', 'txCreation'));\n }\n return fee;\n };\n /**\n * The amount of gas paid for the data in this tx\n */\n BaseTransaction.prototype.getDataFee = function () {\n var txDataZero = this.common.param('gasPrices', 'txDataZero');\n var txDataNonZero = this.common.param('gasPrices', 'txDataNonZero');\n var cost = 0;\n for (var i = 0; i < this.data.length; i++) {\n this.data[i] === 0 ? (cost += txDataZero) : (cost += txDataNonZero);\n }\n return new ethereumjs_util_1.BN(cost);\n };\n /**\n * If the tx's `to` is to the creation address\n */\n BaseTransaction.prototype.toCreationAddress = function () {\n return this.to === undefined || this.to.buf.length === 0;\n };\n BaseTransaction.prototype.isSigned = function () {\n var _a = this, v = _a.v, r = _a.r, s = _a.s;\n if (this.type === 0) {\n if (!v || !r || !s) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n if (v === undefined || !r || !s) {\n return false;\n }\n else {\n return true;\n }\n }\n };\n /**\n * Determines if the signature is valid\n */\n BaseTransaction.prototype.verifySignature = function () {\n try {\n // Main signature verification is done in `getSenderPublicKey()`\n var publicKey = this.getSenderPublicKey();\n return ethereumjs_util_1.unpadBuffer(publicKey).length !== 0;\n }\n catch (e) {\n return false;\n }\n };\n /**\n * Returns the sender's address\n */\n BaseTransaction.prototype.getSenderAddress = function () {\n return new ethereumjs_util_1.Address(ethereumjs_util_1.publicToAddress(this.getSenderPublicKey()));\n };\n /**\n * Signs a tx and returns a new signed tx object\n */\n BaseTransaction.prototype.sign = function (privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('Private key must be 32 bytes in length.');\n }\n var msgHash = this.getMessageToSign(true);\n var _a = ethereumjs_util_1.ecsign(msgHash, privateKey), v = _a.v, r = _a.r, s = _a.s;\n return this._processSignature(v, r, s);\n };\n BaseTransaction.prototype._validateCannotExceedMaxInteger = function (values) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.entries(values)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n if (value === null || value === void 0 ? void 0 : value.gt(ethereumjs_util_1.MAX_INTEGER)) {\n throw new Error(key + \" cannot exceed MAX_INTEGER, given \" + value);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n return BaseTransaction;\n}());\nexports.BaseTransaction = BaseTransaction;\n//# sourceMappingURL=baseTransaction.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Set = require('core-js-pure/es/set');\nvar debug_1 = require(\"debug\");\nvar merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar rlp_1 = require(\"rlp\");\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar genesisStates_1 = require(\"@ethereumjs/common/dist/genesisStates\");\nvar cache_1 = __importDefault(require(\"./cache\"));\nvar precompiles_1 = require(\"../evm/precompiles\");\nvar opcodes_1 = require(\"../evm/opcodes\");\nvar debug = debug_1.debug('vm:state');\n/**\n * Interface for getting and setting data from an underlying\n * state trie.\n */\nvar DefaultStateManager = /** @class */ (function () {\n /**\n * Instantiate the StateManager interface.\n */\n function DefaultStateManager(opts) {\n if (opts === void 0) { opts = {}; }\n var common = opts.common;\n if (!common) {\n common = new common_1.default({ chain: 'mainnet', hardfork: 'petersburg' });\n }\n this._common = common;\n this._trie = opts.trie || new merkle_patricia_tree_1.SecureTrie();\n this._storageTries = {};\n this._cache = new cache_1.default(this._trie);\n this._touched = new Set();\n this._touchedStack = [];\n this._checkpointCount = 0;\n this._originalStorageCache = new Map();\n this._accessedStorage = [new Map()];\n }\n /**\n * Copies the current instance of the `StateManager`\n * at the last fully committed point, i.e. as if all current\n * checkpoints were reverted.\n */\n DefaultStateManager.prototype.copy = function () {\n return new DefaultStateManager({\n trie: this._trie.copy(false),\n common: this._common,\n });\n };\n /**\n * Gets the account associated with `address`. Returns an empty account if the account does not exist.\n * @param address - Address of the `account` to get\n */\n DefaultStateManager.prototype.getAccount = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._cache.getOrLoad(address)];\n case 1:\n account = _a.sent();\n return [2 /*return*/, account];\n }\n });\n });\n };\n /**\n * Saves an account into state under the provided `address`.\n * @param address - Address under which to store `account`\n * @param account - The account to store\n */\n DefaultStateManager.prototype.putAccount = function (address, account) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n debug(\"Save account address=\" + address + \" nonce=\" + account.nonce + \" balance=\" + account.balance + \" contract=\" + (account.isContract() ? 'yes' : 'no') + \" empty=\" + (account.isEmpty() ? 'yes' : 'no'));\n this._cache.put(address, account);\n this.touchAccount(address);\n return [2 /*return*/];\n });\n });\n };\n /**\n * Deletes an account from state under the provided `address`. The account will also be removed from the state trie.\n * @param address - Address of the account which should be deleted\n */\n DefaultStateManager.prototype.deleteAccount = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n debug(\"Delete account \" + address);\n this._cache.del(address);\n this.touchAccount(address);\n return [2 /*return*/];\n });\n });\n };\n /**\n * Marks an account as touched, according to the definition\n * in [EIP-158](https://eips.ethereum.org/EIPS/eip-158).\n * This happens when the account is triggered for a state-changing\n * event. Touched accounts that are empty will be cleared\n * at the end of the tx.\n */\n DefaultStateManager.prototype.touchAccount = function (address) {\n this._touched.add(address.buf.toString('hex'));\n };\n /**\n * Adds `value` to the state trie as code, and sets `codeHash` on the account\n * corresponding to `address` to reference this.\n * @param address - Address of the `account` to add the `code` for\n * @param value - The value of the `code`\n */\n DefaultStateManager.prototype.putContractCode = function (address, value) {\n return __awaiter(this, void 0, void 0, function () {\n var codeHash, account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n codeHash = ethereumjs_util_1.keccak256(value);\n if (codeHash.equals(ethereumjs_util_1.KECCAK256_NULL)) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this._trie.db.put(codeHash, value)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.getAccount(address)];\n case 2:\n account = _a.sent();\n debug(\"Update codeHash (-> \" + opcodes_1.short(codeHash) + \") for account \" + address);\n account.codeHash = codeHash;\n return [4 /*yield*/, this.putAccount(address, account)];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets the code corresponding to the provided `address`.\n * @param address - Address to get the `code` for\n * @returns {Promise} - Resolves with the code corresponding to the provided address.\n * Returns an empty `Buffer` if the account has no associated code.\n */\n DefaultStateManager.prototype.getContractCode = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account, code;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAccount(address)];\n case 1:\n account = _a.sent();\n if (!account.isContract()) {\n return [2 /*return*/, Buffer.alloc(0)];\n }\n return [4 /*yield*/, this._trie.db.get(account.codeHash)];\n case 2:\n code = _a.sent();\n return [2 /*return*/, code || Buffer.alloc(0)];\n }\n });\n });\n };\n /**\n * Creates a storage trie from the primary storage trie\n * for an account and saves this in the storage cache.\n * @private\n */\n DefaultStateManager.prototype._lookupStorageTrie = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account, storageTrie;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAccount(address)];\n case 1:\n account = _a.sent();\n storageTrie = this._trie.copy(false);\n storageTrie.root = account.stateRoot;\n storageTrie.db.checkpoints = [];\n return [2 /*return*/, storageTrie];\n }\n });\n });\n };\n /**\n * Gets the storage trie for an account from the storage\n * cache or does a lookup.\n * @private\n */\n DefaultStateManager.prototype._getStorageTrie = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var addressHex, storageTrie;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n addressHex = address.buf.toString('hex');\n storageTrie = this._storageTries[addressHex];\n if (!!storageTrie) return [3 /*break*/, 2];\n return [4 /*yield*/, this._lookupStorageTrie(address)];\n case 1:\n // lookup from state\n storageTrie = _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, storageTrie];\n }\n });\n });\n };\n /**\n * Gets the storage value associated with the provided `address` and `key`. This method returns\n * the shortest representation of the stored value.\n * @param address - Address of the account to get the storage for\n * @param key - Key in the account's storage to get the value for. Must be 32 bytes long.\n * @returns {Promise} - The storage value for the account\n * corresponding to the provided address at the provided key.\n * If this does not exist an empty `Buffer` is returned.\n */\n DefaultStateManager.prototype.getContractStorage = function (address, key) {\n return __awaiter(this, void 0, void 0, function () {\n var trie, value, decoded;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (key.length !== 32) {\n throw new Error('Storage key must be 32 bytes long');\n }\n return [4 /*yield*/, this._getStorageTrie(address)];\n case 1:\n trie = _a.sent();\n return [4 /*yield*/, trie.get(key)];\n case 2:\n value = _a.sent();\n decoded = rlp_1.decode(value);\n return [2 /*return*/, decoded];\n }\n });\n });\n };\n /**\n * Caches the storage value associated with the provided `address` and `key`\n * on first invocation, and returns the cached (original) value from then\n * onwards. This is used to get the original value of a storage slot for\n * computing gas costs according to EIP-1283.\n * @param address - Address of the account to get the storage for\n * @param key - Key in the account's storage to get the value for. Must be 32 bytes long.\n */\n DefaultStateManager.prototype.getOriginalContractStorage = function (address, key) {\n return __awaiter(this, void 0, void 0, function () {\n var addressHex, keyHex, map, current;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (key.length !== 32) {\n throw new Error('Storage key must be 32 bytes long');\n }\n addressHex = address.buf.toString('hex');\n keyHex = key.toString('hex');\n if (!this._originalStorageCache.has(addressHex)) {\n map = new Map();\n this._originalStorageCache.set(addressHex, map);\n }\n else {\n map = this._originalStorageCache.get(addressHex);\n }\n if (!map.has(keyHex)) return [3 /*break*/, 1];\n return [2 /*return*/, map.get(keyHex)];\n case 1: return [4 /*yield*/, this.getContractStorage(address, key)];\n case 2:\n current = _a.sent();\n map.set(keyHex, current);\n return [2 /*return*/, current];\n }\n });\n });\n };\n /**\n * Clears the original storage cache. Refer to [[getOriginalContractStorage]]\n * for more explanation.\n */\n DefaultStateManager.prototype._clearOriginalStorageCache = function () {\n this._originalStorageCache = new Map();\n };\n /**\n * Clears the original storage cache. Refer to [[getOriginalContractStorage]]\n * for more explanation. Alias of the internal _clearOriginalStorageCache\n */\n DefaultStateManager.prototype.clearOriginalStorageCache = function () {\n this._clearOriginalStorageCache();\n };\n /**\n * Modifies the storage trie of an account.\n * @private\n * @param address - Address of the account whose storage is to be modified\n * @param modifyTrie - Function to modify the storage trie of the account\n */\n DefaultStateManager.prototype._modifyContractStorage = function (address, modifyTrie) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n // eslint-disable-next-line no-async-promise-executor\n return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {\n var storageTrie;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._getStorageTrie(address)];\n case 1:\n storageTrie = _a.sent();\n modifyTrie(storageTrie, function () { return __awaiter(_this, void 0, void 0, function () {\n var addressHex, contract;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n addressHex = address.buf.toString('hex');\n this._storageTries[addressHex] = storageTrie;\n contract = this._cache.get(address);\n contract.stateRoot = storageTrie.root;\n return [4 /*yield*/, this.putAccount(address, contract)];\n case 1:\n _a.sent();\n this.touchAccount(address);\n resolve();\n return [2 /*return*/];\n }\n });\n }); });\n return [2 /*return*/];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Adds value to the state trie for the `account`\n * corresponding to `address` at the provided `key`.\n * @param address - Address to set a storage value for\n * @param key - Key to set the value at. Must be 32 bytes long.\n * @param value - Value to set at `key` for account corresponding to `address`. Cannot be more than 32 bytes. Leading zeros are stripped. If it is a empty or filled with zeros, deletes the value.\n */\n DefaultStateManager.prototype.putContractStorage = function (address, key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (key.length !== 32) {\n throw new Error('Storage key must be 32 bytes long');\n }\n if (value.length > 32) {\n throw new Error('Storage value cannot be longer than 32 bytes');\n }\n value = ethereumjs_util_1.unpadBuffer(value);\n return [4 /*yield*/, this._modifyContractStorage(address, function (storageTrie, done) { return __awaiter(_this, void 0, void 0, function () {\n var encodedValue;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(value && value.length)) return [3 /*break*/, 2];\n encodedValue = rlp_1.encode(value);\n debug(\"Update contract storage for account \" + address + \" to \" + opcodes_1.short(value));\n return [4 /*yield*/, storageTrie.put(key, encodedValue)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n // deleting a value\n debug(\"Delete contract storage for account\");\n return [4 /*yield*/, storageTrie.del(key)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n done();\n return [2 /*return*/];\n }\n });\n }); })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears all storage entries for the account corresponding to `address`.\n * @param address - Address to clear the storage of\n */\n DefaultStateManager.prototype.clearContractStorage = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._modifyContractStorage(address, function (storageTrie, done) {\n storageTrie.root = storageTrie.EMPTY_TRIE_ROOT;\n done();\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Checkpoints the current state of the StateManager instance.\n * State changes that follow can then be committed by calling\n * `commit` or `reverted` by calling rollback.\n */\n DefaultStateManager.prototype.checkpoint = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._trie.checkpoint();\n this._cache.checkpoint();\n this._touchedStack.push(new Set(Array.from(this._touched)));\n this._accessedStorage.push(new Map());\n this._checkpointCount++;\n return [2 /*return*/];\n });\n });\n };\n /**\n * Commits the current change-set to the instance since the\n * last call to checkpoint.\n */\n DefaultStateManager.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n var storageMap, mapTarget;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: \n // setup trie checkpointing\n return [4 /*yield*/, this._trie.commit()\n // setup cache checkpointing\n ];\n case 1:\n // setup trie checkpointing\n _a.sent();\n // setup cache checkpointing\n this._cache.commit();\n this._touchedStack.pop();\n this._checkpointCount--;\n storageMap = this._accessedStorage.pop();\n mapTarget = this._accessedStorage[this._accessedStorage.length - 1];\n if (mapTarget) {\n // Note: storageMap is always defined here per definition (TypeScript cannot infer this)\n storageMap === null || storageMap === void 0 ? void 0 : storageMap.forEach(function (slotSet, addressString) {\n var addressExists = mapTarget.get(addressString);\n if (!addressExists) {\n mapTarget.set(addressString, new Set());\n }\n var storageSet = mapTarget.get(addressString);\n slotSet.forEach(function (value) {\n storageSet.add(value);\n });\n });\n }\n if (!(this._checkpointCount === 0)) return [3 /*break*/, 3];\n return [4 /*yield*/, this._cache.flush()];\n case 2:\n _a.sent();\n this._clearOriginalStorageCache();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Reverts the current change-set to the instance since the\n * last call to checkpoint.\n */\n DefaultStateManager.prototype.revert = function () {\n return __awaiter(this, void 0, void 0, function () {\n var touched;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: \n // setup trie checkpointing\n return [4 /*yield*/, this._trie.revert()\n // setup cache checkpointing\n ];\n case 1:\n // setup trie checkpointing\n _a.sent();\n // setup cache checkpointing\n this._cache.revert();\n this._storageTries = {};\n this._accessedStorage.pop();\n touched = this._touchedStack.pop();\n if (!touched) {\n throw new Error('Reverting to invalid state checkpoint failed');\n }\n // Exceptional case due to consensus issue in Geth and Parity.\n // See [EIP issue #716](https://github.com/ethereum/EIPs/issues/716) for context.\n // The RIPEMD precompile has to remain *touched* even when the call reverts,\n // and be considered for deletion.\n if (this._touched.has(precompiles_1.ripemdPrecompileAddress)) {\n touched.add(precompiles_1.ripemdPrecompileAddress);\n }\n this._touched = touched;\n this._checkpointCount--;\n if (!(this._checkpointCount === 0)) return [3 /*break*/, 3];\n return [4 /*yield*/, this._cache.flush()];\n case 2:\n _a.sent();\n this._clearOriginalStorageCache();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets the state-root of the Merkle-Patricia trie representation\n * of the state of this StateManager. Will error if there are uncommitted\n * checkpoints on the instance.\n * @param force - If set to `true`, force a cache flush even if there are uncommited checkpoints (this is set to `true` pre-Byzantium in order to get intermediate state roots for the receipts)\n * @returns {Promise} - Returns the state-root of the `StateManager`\n */\n DefaultStateManager.prototype.getStateRoot = function (force) {\n if (force === void 0) { force = false; }\n return __awaiter(this, void 0, void 0, function () {\n var stateRoot;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!force && this._checkpointCount !== 0) {\n throw new Error('Cannot get state root with uncommitted checkpoints');\n }\n return [4 /*yield*/, this._cache.flush()];\n case 1:\n _a.sent();\n stateRoot = this._trie.root;\n return [2 /*return*/, stateRoot];\n }\n });\n });\n };\n /**\n * Sets the state of the instance to that represented\n * by the provided `stateRoot`. Will error if there are uncommitted\n * checkpoints on the instance or if the state root does not exist in\n * the state trie.\n * @param stateRoot - The state-root to reset the instance to\n */\n DefaultStateManager.prototype.setStateRoot = function (stateRoot) {\n return __awaiter(this, void 0, void 0, function () {\n var hasRoot;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this._checkpointCount !== 0) {\n throw new Error('Cannot set state root with uncommitted checkpoints');\n }\n return [4 /*yield*/, this._cache.flush()];\n case 1:\n _a.sent();\n if (stateRoot === this._trie.EMPTY_TRIE_ROOT) {\n this._trie.root = stateRoot;\n this._cache.clear();\n this._storageTries = {};\n return [2 /*return*/];\n }\n return [4 /*yield*/, this._trie.checkRoot(stateRoot)];\n case 2:\n hasRoot = _a.sent();\n if (!hasRoot) {\n throw new Error('State trie does not contain state root');\n }\n this._trie.root = stateRoot;\n this._cache.clear();\n this._storageTries = {};\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Dumps the RLP-encoded storage values for an `account` specified by `address`.\n * @param address - The address of the `account` to return storage for\n * @returns {Promise} - The state of the account as an `Object` map.\n * Keys are are the storage keys, values are the storage values as strings.\n * Both are represented as hex strings without the `0x` prefix.\n */\n DefaultStateManager.prototype.dumpStorage = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n _this._getStorageTrie(address)\n .then(function (trie) {\n var storage = {};\n var stream = trie.createReadStream();\n stream.on('data', function (val) {\n storage[val.key.toString('hex')] = val.value.toString('hex');\n });\n stream.on('end', function () {\n resolve(storage);\n });\n })\n .catch(function (e) {\n reject(e);\n });\n })];\n });\n });\n };\n /**\n * Checks whether the current instance has the canonical genesis state\n * for the configured chain parameters.\n * @returns {Promise} - Whether the storage trie contains the\n * canonical genesis state for the configured chain parameters.\n */\n DefaultStateManager.prototype.hasGenesisState = function () {\n return __awaiter(this, void 0, void 0, function () {\n var root;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n root = this._common.genesis().stateRoot;\n return [4 /*yield*/, this._trie.checkRoot(root)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Generates a canonical genesis state on the instance based on the\n * configured chain parameters. Will error if there are uncommitted\n * checkpoints on the instance.\n */\n DefaultStateManager.prototype.generateCanonicalGenesis = function () {\n return __awaiter(this, void 0, void 0, function () {\n var genesis;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this._checkpointCount !== 0) {\n throw new Error('Cannot create genesis state with uncommitted checkpoints');\n }\n return [4 /*yield*/, this.hasGenesisState()];\n case 1:\n genesis = _a.sent();\n if (!!genesis) return [3 /*break*/, 3];\n return [4 /*yield*/, this.generateGenesis(genesisStates_1.genesisStateByName(this._common.chainName()))];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Initializes the provided genesis state into the state trie\n * @param initState - Object (address -> balance)\n */\n DefaultStateManager.prototype.generateGenesis = function (initState) {\n return __awaiter(this, void 0, void 0, function () {\n var addresses, addresses_1, addresses_1_1, address, balance, account, addressBuffer, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this._checkpointCount !== 0) {\n throw new Error('Cannot create genesis state with uncommitted checkpoints');\n }\n debug(\"Save genesis state into the state trie\");\n addresses = Object.keys(initState);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, 7, 8]);\n addresses_1 = __values(addresses), addresses_1_1 = addresses_1.next();\n _b.label = 2;\n case 2:\n if (!!addresses_1_1.done) return [3 /*break*/, 5];\n address = addresses_1_1.value;\n balance = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(initState[address]));\n account = ethereumjs_util_1.Account.fromAccountData({ balance: balance });\n addressBuffer = ethereumjs_util_1.toBuffer(address);\n return [4 /*yield*/, this._trie.put(addressBuffer, account.serialize())];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n addresses_1_1 = addresses_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (addresses_1_1 && !addresses_1_1.done && (_a = addresses_1.return)) _a.call(addresses_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Checks if the `account` corresponding to `address`\n * is empty or non-existent as defined in\n * EIP-161 (https://eips.ethereum.org/EIPS/eip-161).\n * @param address - Address to check\n */\n DefaultStateManager.prototype.accountIsEmpty = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAccount(address)];\n case 1:\n account = _a.sent();\n return [2 /*return*/, account.isEmpty()];\n }\n });\n });\n };\n /**\n * Checks if the `account` corresponding to `address`\n * exists\n * @param address - Address of the `account` to check\n */\n DefaultStateManager.prototype.accountExists = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n account = this._cache.lookup(address);\n if (account && !this._cache.keyIsDeleted(address)) {\n return [2 /*return*/, true];\n }\n return [4 /*yield*/, this._cache._trie.get(address.buf)];\n case 1:\n if (_a.sent()) {\n return [2 /*return*/, true];\n }\n return [2 /*return*/, false];\n }\n });\n });\n };\n /** EIP-2929 logic\n * This should only be called from within the EVM\n */\n /**\n * Returns true if the address is warm in the current context\n * @param address - The address (as a Buffer) to check\n */\n DefaultStateManager.prototype.isWarmedAddress = function (address) {\n for (var i = this._accessedStorage.length - 1; i >= 0; i--) {\n var currentMap = this._accessedStorage[i];\n if (currentMap.has(address.toString('hex'))) {\n return true;\n }\n }\n return false;\n };\n /**\n * Add a warm address in the current context\n * @param address - The address (as a Buffer) to check\n */\n DefaultStateManager.prototype.addWarmedAddress = function (address) {\n var key = address.toString('hex');\n var storageSet = this._accessedStorage[this._accessedStorage.length - 1].get(key);\n if (!storageSet) {\n var emptyStorage = new Set();\n this._accessedStorage[this._accessedStorage.length - 1].set(key, emptyStorage);\n }\n };\n /**\n * Returns true if the slot of the address is warm\n * @param address - The address (as a Buffer) to check\n * @param slot - The slot (as a Buffer) to check\n */\n DefaultStateManager.prototype.isWarmedStorage = function (address, slot) {\n var addressKey = address.toString('hex');\n var storageKey = slot.toString('hex');\n for (var i = this._accessedStorage.length - 1; i >= 0; i--) {\n var currentMap = this._accessedStorage[i];\n if (currentMap.has(addressKey) && currentMap.get(addressKey).has(storageKey)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Mark the storage slot in the address as warm in the current context\n * @param address - The address (as a Buffer) to check\n * @param slot - The slot (as a Buffer) to check\n */\n DefaultStateManager.prototype.addWarmedStorage = function (address, slot) {\n var addressKey = address.toString('hex');\n var storageSet = this._accessedStorage[this._accessedStorage.length - 1].get(addressKey);\n if (!storageSet) {\n storageSet = new Set();\n this._accessedStorage[this._accessedStorage.length - 1].set(addressKey, storageSet);\n }\n storageSet.add(slot.toString('hex'));\n };\n /**\n * Clear the warm accounts and storage. To be called after a transaction finished.\n */\n DefaultStateManager.prototype.clearWarmedAccounts = function () {\n this._accessedStorage = [new Map()];\n };\n /**\n * Removes accounts form the state trie that have been touched,\n * as defined in EIP-161 (https://eips.ethereum.org/EIPS/eip-161).\n */\n DefaultStateManager.prototype.cleanupTouchedAccounts = function () {\n return __awaiter(this, void 0, void 0, function () {\n var touchedArray, touchedArray_1, touchedArray_1_1, addressHex, address, empty, e_2_1;\n var e_2, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this._common.gteHardfork('spuriousDragon')) return [3 /*break*/, 8];\n touchedArray = Array.from(this._touched);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, 7, 8]);\n touchedArray_1 = __values(touchedArray), touchedArray_1_1 = touchedArray_1.next();\n _b.label = 2;\n case 2:\n if (!!touchedArray_1_1.done) return [3 /*break*/, 5];\n addressHex = touchedArray_1_1.value;\n address = new ethereumjs_util_1.Address(Buffer.from(addressHex, 'hex'));\n return [4 /*yield*/, this.accountIsEmpty(address)];\n case 3:\n empty = _b.sent();\n if (empty) {\n this._cache.del(address);\n debug(\"Cleanup touched account address=\" + address.toString() + \" (>= SpuriousDragon)\");\n }\n _b.label = 4;\n case 4:\n touchedArray_1_1 = touchedArray_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (touchedArray_1_1 && !touchedArray_1_1.done && (_a = touchedArray_1.return)) _a.call(touchedArray_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 8:\n this._touched.clear();\n return [2 /*return*/];\n }\n });\n });\n };\n return DefaultStateManager;\n}());\nexports.default = DefaultStateManager;\n//# sourceMappingURL=stateManager.js.map","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar debug_1 = require(\"debug\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar exceptions_1 = require(\"../exceptions\");\nvar message_1 = __importDefault(require(\"./message\"));\nvar debugGas = debug_1.debug('vm:eei:gas');\nfunction trap(err) {\n throw new exceptions_1.VmError(err);\n}\nvar MASK_160 = new ethereumjs_util_1.BN(1).shln(160).subn(1);\nfunction addressToBuffer(address) {\n if (Buffer.isBuffer(address))\n return address;\n return address.and(MASK_160).toArrayLike(Buffer, 'be', 20);\n}\n/**\n * External interface made available to EVM bytecode. Modeled after\n * the ewasm EEI [spec](https://github.com/ewasm/design/blob/master/eth_interface.md).\n * It includes methods for accessing/modifying state, calling or creating contracts, access\n * to environment data among other things.\n * The EEI instance also keeps artifacts produced by the bytecode such as logs\n * and to-be-selfdestructed addresses.\n */\nvar EEI = /** @class */ (function () {\n function EEI(env, state, evm, common, gasLeft) {\n this._env = env;\n this._state = state;\n this._evm = evm;\n this._lastReturned = Buffer.alloc(0);\n this._common = common;\n this._gasLeft = gasLeft;\n this._result = {\n logs: [],\n returnValue: undefined,\n selfdestruct: {},\n };\n }\n /**\n * Subtracts an amount from the gas counter.\n * @param amount - Amount of gas to consume\n * @param context - Usage context for debugging\n * @throws if out of gas\n */\n EEI.prototype.useGas = function (amount, context) {\n this._gasLeft.isub(amount);\n debugGas((context ? context + ': ' : '') + \"used \" + amount + \" gas (-> \" + this._gasLeft + \")\");\n if (this._gasLeft.ltn(0)) {\n this._gasLeft = new ethereumjs_util_1.BN(0);\n trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n };\n /**\n * Adds a positive amount to the gas counter.\n * @param amount - Amount of gas refunded\n * @param context - Usage context for debugging\n */\n EEI.prototype.refundGas = function (amount, context) {\n debugGas((context ? context + ': ' : '') + \"refund \" + amount + \" gas (-> \" + this._evm._refund + \")\");\n this._evm._refund.iadd(amount);\n };\n /**\n * Reduces amount of gas to be refunded by a positive value.\n * @param amount - Amount to subtract from gas refunds\n * @param context - Usage context for debugging\n */\n EEI.prototype.subRefund = function (amount, context) {\n debugGas((context ? context + ': ' : '') + \"sub gas refund \" + amount + \" (-> \" + this._evm._refund + \")\");\n this._evm._refund.isub(amount);\n if (this._evm._refund.ltn(0)) {\n this._evm._refund = new ethereumjs_util_1.BN(0);\n trap(exceptions_1.ERROR.REFUND_EXHAUSTED);\n }\n };\n /**\n * Returns address of currently executing account.\n */\n EEI.prototype.getAddress = function () {\n return this._env.address;\n };\n /**\n * Returns balance of the given account.\n * @param address - Address of account\n */\n EEI.prototype.getExternalBalance = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // shortcut if current account\n if (address.equals(this._env.address)) {\n return [2 /*return*/, this._env.contract.balance];\n }\n return [4 /*yield*/, this._state.getAccount(address)];\n case 1:\n account = _a.sent();\n return [2 /*return*/, account.balance];\n }\n });\n });\n };\n /**\n * Returns balance of self.\n */\n EEI.prototype.getSelfBalance = function () {\n return this._env.contract.balance;\n };\n /**\n * Returns caller address. This is the address of the account\n * that is directly responsible for this execution.\n */\n EEI.prototype.getCaller = function () {\n return new ethereumjs_util_1.BN(this._env.caller.buf);\n };\n /**\n * Returns the deposited value by the instruction/transaction\n * responsible for this execution.\n */\n EEI.prototype.getCallValue = function () {\n return new ethereumjs_util_1.BN(this._env.callValue);\n };\n /**\n * Returns input data in current environment. This pertains to the input\n * data passed with the message call instruction or transaction.\n */\n EEI.prototype.getCallData = function () {\n return this._env.callData;\n };\n /**\n * Returns size of input data in current environment. This pertains to the\n * input data passed with the message call instruction or transaction.\n */\n EEI.prototype.getCallDataSize = function () {\n return new ethereumjs_util_1.BN(this._env.callData.length);\n };\n /**\n * Returns the size of code running in current environment.\n */\n EEI.prototype.getCodeSize = function () {\n return new ethereumjs_util_1.BN(this._env.code.length);\n };\n /**\n * Returns the code running in current environment.\n */\n EEI.prototype.getCode = function () {\n return this._env.code;\n };\n /**\n * Returns true if the current call must be executed statically.\n */\n EEI.prototype.isStatic = function () {\n return this._env.isStatic;\n };\n /**\n * Get size of an account’s code.\n * @param address - Address of account\n */\n EEI.prototype.getExternalCodeSize = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var addr, code;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n addr = new ethereumjs_util_1.Address(addressToBuffer(address));\n return [4 /*yield*/, this._state.getContractCode(addr)];\n case 1:\n code = _a.sent();\n return [2 /*return*/, new ethereumjs_util_1.BN(code.length)];\n }\n });\n });\n };\n /**\n * Returns code of an account.\n * @param address - Address of account\n */\n EEI.prototype.getExternalCode = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var addr;\n return __generator(this, function (_a) {\n addr = new ethereumjs_util_1.Address(addressToBuffer(address));\n return [2 /*return*/, this._state.getContractCode(addr)];\n });\n });\n };\n /**\n * Returns size of current return data buffer. This contains the return data\n * from the last executed call, callCode, callDelegate, callStatic or create.\n * Note: create only fills the return data buffer in case of a failure.\n */\n EEI.prototype.getReturnDataSize = function () {\n return new ethereumjs_util_1.BN(this._lastReturned.length);\n };\n /**\n * Returns the current return data buffer. This contains the return data\n * from last executed call, callCode, callDelegate, callStatic or create.\n * Note: create only fills the return data buffer in case of a failure.\n */\n EEI.prototype.getReturnData = function () {\n return this._lastReturned;\n };\n /**\n * Returns price of gas in current environment.\n */\n EEI.prototype.getTxGasPrice = function () {\n return this._env.gasPrice;\n };\n /**\n * Returns the execution's origination address. This is the\n * sender of original transaction; it is never an account with\n * non-empty associated code.\n */\n EEI.prototype.getTxOrigin = function () {\n return new ethereumjs_util_1.BN(this._env.origin.buf);\n };\n /**\n * Returns the block’s number.\n */\n EEI.prototype.getBlockNumber = function () {\n return this._env.block.header.number;\n };\n /**\n * Returns the block's beneficiary address.\n */\n EEI.prototype.getBlockCoinbase = function () {\n var coinbase;\n if (this._common.consensusAlgorithm() === 'clique') {\n // Backwards-compatibilty check\n // TODO: can be removed along VM v5 release\n if ('cliqueSigner' in this._env.block.header) {\n coinbase = this._env.block.header.cliqueSigner();\n }\n else {\n coinbase = ethereumjs_util_1.Address.zero();\n }\n }\n else {\n coinbase = this._env.block.header.coinbase;\n }\n return new ethereumjs_util_1.BN(coinbase.toBuffer());\n };\n /**\n * Returns the block's timestamp.\n */\n EEI.prototype.getBlockTimestamp = function () {\n return this._env.block.header.timestamp;\n };\n /**\n * Returns the block's difficulty.\n */\n EEI.prototype.getBlockDifficulty = function () {\n return this._env.block.header.difficulty;\n };\n /**\n * Returns the block's gas limit.\n */\n EEI.prototype.getBlockGasLimit = function () {\n return this._env.block.header.gasLimit;\n };\n /**\n * Returns the chain ID for current chain. Introduced for the\n * CHAINID opcode proposed in [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344).\n */\n EEI.prototype.getChainId = function () {\n return this._common.chainIdBN();\n };\n /**\n * Returns Gets the hash of one of the 256 most recent complete blocks.\n * @param num - Number of block\n */\n EEI.prototype.getBlockHash = function (num) {\n return __awaiter(this, void 0, void 0, function () {\n var block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._env.blockchain.getBlock(num)];\n case 1:\n block = _a.sent();\n return [2 /*return*/, new ethereumjs_util_1.BN(block.hash())];\n }\n });\n });\n };\n /**\n * Store 256-bit a value in memory to persistent storage.\n */\n EEI.prototype.storageStore = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._state.putContractStorage(this._env.address, key, value)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this._state.getAccount(this._env.address)];\n case 2:\n account = _a.sent();\n this._env.contract = account;\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Loads a 256-bit value to memory from persistent storage.\n * @param key - Storage key\n */\n EEI.prototype.storageLoad = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._state.getContractStorage(this._env.address, key)];\n });\n });\n };\n /**\n * Returns the current gasCounter.\n */\n EEI.prototype.getGasLeft = function () {\n return this._gasLeft.clone();\n };\n /**\n * Set the returning output data for the execution.\n * @param returnData - Output data to return\n */\n EEI.prototype.finish = function (returnData) {\n this._result.returnValue = returnData;\n trap(exceptions_1.ERROR.STOP);\n };\n /**\n * Set the returning output data for the execution. This will halt the\n * execution immediately and set the execution result to \"reverted\".\n * @param returnData - Output data to return\n */\n EEI.prototype.revert = function (returnData) {\n this._result.returnValue = returnData;\n trap(exceptions_1.ERROR.REVERT);\n };\n /**\n * Mark account for later deletion and give the remaining balance to the\n * specified beneficiary address. This will cause a trap and the\n * execution will be aborted immediately.\n * @param toAddress - Beneficiary address\n */\n EEI.prototype.selfDestruct = function (toAddress) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._selfDestruct(toAddress)];\n });\n });\n };\n EEI.prototype._selfDestruct = function (toAddress) {\n return __awaiter(this, void 0, void 0, function () {\n var toAccount, account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // only add to refund if this is the first selfdestruct for the address\n if (!this._result.selfdestruct[this._env.address.buf.toString('hex')]) {\n this.refundGas(new ethereumjs_util_1.BN(this._common.param('gasPrices', 'selfdestructRefund')));\n }\n this._result.selfdestruct[this._env.address.buf.toString('hex')] = toAddress.buf;\n return [4 /*yield*/, this._state.getAccount(toAddress)];\n case 1:\n toAccount = _a.sent();\n toAccount.balance.iadd(this._env.contract.balance);\n return [4 /*yield*/, this._state.putAccount(toAddress, toAccount)\n // Subtract from contract balance\n ];\n case 2:\n _a.sent();\n return [4 /*yield*/, this._state.getAccount(this._env.address)];\n case 3:\n account = _a.sent();\n account.balance = new ethereumjs_util_1.BN(0);\n return [4 /*yield*/, this._state.putAccount(this._env.address, account)];\n case 4:\n _a.sent();\n trap(exceptions_1.ERROR.STOP);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new log in the current environment.\n */\n EEI.prototype.log = function (data, numberOfTopics, topics) {\n if (numberOfTopics < 0 || numberOfTopics > 4) {\n trap(exceptions_1.ERROR.OUT_OF_RANGE);\n }\n if (topics.length !== numberOfTopics) {\n trap(exceptions_1.ERROR.INTERNAL_ERROR);\n }\n var log = [this._env.address.buf, topics, data];\n this._result.logs.push(log);\n };\n /**\n * Sends a message with arbitrary data to a given address path.\n */\n EEI.prototype.call = function (gasLimit, address, value, data) {\n return __awaiter(this, void 0, void 0, function () {\n var msg;\n return __generator(this, function (_a) {\n msg = new message_1.default({\n caller: this._env.address,\n gasLimit: gasLimit,\n to: address,\n value: value,\n data: data,\n isStatic: this._env.isStatic,\n depth: this._env.depth + 1,\n });\n return [2 /*return*/, this._baseCall(msg)];\n });\n });\n };\n /**\n * Message-call into this account with an alternative account's code.\n */\n EEI.prototype.callCode = function (gasLimit, address, value, data) {\n return __awaiter(this, void 0, void 0, function () {\n var msg;\n return __generator(this, function (_a) {\n msg = new message_1.default({\n caller: this._env.address,\n gasLimit: gasLimit,\n to: this._env.address,\n codeAddress: address,\n value: value,\n data: data,\n isStatic: this._env.isStatic,\n depth: this._env.depth + 1,\n });\n return [2 /*return*/, this._baseCall(msg)];\n });\n });\n };\n /**\n * Sends a message with arbitrary data to a given address path, but disallow\n * state modifications. This includes log, create, selfdestruct and call with\n * a non-zero value.\n */\n EEI.prototype.callStatic = function (gasLimit, address, value, data) {\n return __awaiter(this, void 0, void 0, function () {\n var msg;\n return __generator(this, function (_a) {\n msg = new message_1.default({\n caller: this._env.address,\n gasLimit: gasLimit,\n to: address,\n value: value,\n data: data,\n isStatic: true,\n depth: this._env.depth + 1,\n });\n return [2 /*return*/, this._baseCall(msg)];\n });\n });\n };\n /**\n * Message-call into this account with an alternative account’s code, but\n * persisting the current values for sender and value.\n */\n EEI.prototype.callDelegate = function (gasLimit, address, value, data) {\n return __awaiter(this, void 0, void 0, function () {\n var msg;\n return __generator(this, function (_a) {\n msg = new message_1.default({\n caller: this._env.caller,\n gasLimit: gasLimit,\n to: this._env.address,\n codeAddress: address,\n value: value,\n data: data,\n isStatic: this._env.isStatic,\n delegatecall: true,\n depth: this._env.depth + 1,\n });\n return [2 /*return*/, this._baseCall(msg)];\n });\n });\n };\n EEI.prototype._baseCall = function (msg) {\n return __awaiter(this, void 0, void 0, function () {\n var selfdestruct, results, account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n selfdestruct = __assign({}, this._result.selfdestruct);\n msg.selfdestruct = selfdestruct;\n // empty the return data buffer\n this._lastReturned = Buffer.alloc(0);\n // Check if account has enough ether and max depth not exceeded\n if (this._env.depth >= this._common.param('vm', 'stackLimit') ||\n (msg.delegatecall !== true && this._env.contract.balance.lt(msg.value))) {\n return [2 /*return*/, new ethereumjs_util_1.BN(0)];\n }\n return [4 /*yield*/, this._evm.executeMessage(msg)];\n case 1:\n results = _a.sent();\n if (results.execResult.logs) {\n this._result.logs = this._result.logs.concat(results.execResult.logs);\n }\n // this should always be safe\n this.useGas(results.gasUsed, 'CALL, STATICCALL, DELEGATECALL, CALLCODE');\n // Set return value\n if (results.execResult.returnValue &&\n (!results.execResult.exceptionError ||\n results.execResult.exceptionError.error === exceptions_1.ERROR.REVERT)) {\n this._lastReturned = results.execResult.returnValue;\n }\n if (!!results.execResult.exceptionError) return [3 /*break*/, 3];\n Object.assign(this._result.selfdestruct, selfdestruct);\n return [4 /*yield*/, this._state.getAccount(this._env.address)];\n case 2:\n account = _a.sent();\n this._env.contract = account;\n _a.label = 3;\n case 3: return [2 /*return*/, this._getReturnCode(results)];\n }\n });\n });\n };\n /**\n * Creates a new contract with a given value.\n */\n EEI.prototype.create = function (gasLimit, value, data, salt) {\n if (salt === void 0) { salt = null; }\n return __awaiter(this, void 0, void 0, function () {\n var selfdestruct, msg, results, account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n selfdestruct = __assign({}, this._result.selfdestruct);\n msg = new message_1.default({\n caller: this._env.address,\n gasLimit: gasLimit,\n value: value,\n data: data,\n salt: salt,\n depth: this._env.depth + 1,\n selfdestruct: selfdestruct,\n });\n // empty the return data buffer\n this._lastReturned = Buffer.alloc(0);\n // Check if account has enough ether and max depth not exceeded\n if (this._env.depth >= this._common.param('vm', 'stackLimit') ||\n (msg.delegatecall !== true && this._env.contract.balance.lt(msg.value))) {\n return [2 /*return*/, new ethereumjs_util_1.BN(0)];\n }\n this._env.contract.nonce.iaddn(1);\n return [4 /*yield*/, this._state.putAccount(this._env.address, this._env.contract)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this._evm.executeMessage(msg)];\n case 2:\n results = _a.sent();\n if (results.execResult.logs) {\n this._result.logs = this._result.logs.concat(results.execResult.logs);\n }\n // this should always be safe\n this.useGas(results.gasUsed, 'CREATE');\n // Set return buffer in case revert happened\n if (results.execResult.exceptionError &&\n results.execResult.exceptionError.error === exceptions_1.ERROR.REVERT) {\n this._lastReturned = results.execResult.returnValue;\n }\n if (!(!results.execResult.exceptionError ||\n results.execResult.exceptionError.error === exceptions_1.ERROR.CODESTORE_OUT_OF_GAS)) return [3 /*break*/, 4];\n Object.assign(this._result.selfdestruct, selfdestruct);\n return [4 /*yield*/, this._state.getAccount(this._env.address)];\n case 3:\n account = _a.sent();\n this._env.contract = account;\n if (results.createdAddress) {\n // push the created address to the stack\n return [2 /*return*/, new ethereumjs_util_1.BN(results.createdAddress.buf)];\n }\n _a.label = 4;\n case 4: return [2 /*return*/, this._getReturnCode(results)];\n }\n });\n });\n };\n /**\n * Creates a new contract with a given value. Generates\n * a deterministic address via CREATE2 rules.\n */\n EEI.prototype.create2 = function (gasLimit, value, data, salt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.create(gasLimit, value, data, salt)];\n });\n });\n };\n /**\n * Returns true if account is empty or non-existent (according to EIP-161).\n * @param address - Address of account\n */\n EEI.prototype.isAccountEmpty = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._state.accountIsEmpty(address)];\n });\n });\n };\n /**\n * Returns true if account exists in the state trie (it can be empty). Returns false if the account is `null`.\n * @param address - Address of account\n */\n EEI.prototype.accountExists = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._state.accountExists(address)];\n });\n });\n };\n EEI.prototype._getReturnCode = function (results) {\n // This preserves the previous logic, but seems to contradict the EEI spec\n // https://github.com/ewasm/design/blob/38eeded28765f3e193e12881ea72a6ab807a3371/eth_interface.md\n if (results.execResult.exceptionError) {\n return new ethereumjs_util_1.BN(0);\n }\n else {\n return new ethereumjs_util_1.BN(1);\n }\n };\n return EEI;\n}());\nexports.default = EEI;\n//# sourceMappingURL=eei.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLS12_381_ToFp2Point = exports.BLS12_381_ToFpPoint = exports.BLS12_381_ToFrPoint = exports.BLS12_381_FromG2Point = exports.BLS12_381_ToG2Point = exports.BLS12_381_FromG1Point = exports.BLS12_381_ToG1Point = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar exceptions_1 = require(\"../../../exceptions\");\n// base field modulus as described in the EIP\nvar fieldModulus = new ethereumjs_util_1.BN('1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab', 16);\n// convert an input Buffer to a mcl G1 point\n// this does /NOT/ do any input checks. the input Buffer needs to be of length 128\n// it does raise an error if the point is not on the curve.\nfunction BLS12_381_ToG1Point(input, mcl) {\n var p_x = input.slice(16, 64).toString('hex');\n var p_y = input.slice(80, 128).toString('hex');\n var ZeroString48Bytes = '0'.repeat(96);\n if (p_x == p_y && p_x == ZeroString48Bytes) {\n return new mcl.G1();\n }\n var Fp_X = new mcl.Fp();\n var Fp_Y = new mcl.Fp();\n var One = new mcl.Fp();\n Fp_X.setStr(p_x, 16);\n Fp_Y.setStr(p_y, 16);\n One.setStr('1', 16);\n var G1 = new mcl.G1();\n G1.setX(Fp_X);\n G1.setY(Fp_Y);\n G1.setZ(One);\n if (!G1.isValidOrder()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n // Check if these coordinates are actually on the curve.\n if (!G1.isValid()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n return G1;\n}\nexports.BLS12_381_ToG1Point = BLS12_381_ToG1Point;\n// input: a mcl G1 point\n// output: a 128-byte Buffer\nfunction BLS12_381_FromG1Point(input) {\n // TODO: figure out if there is a better way to decode these values.\n var decodeStr = input.getStr(16); //return a string of pattern \"1 \"\n var decoded = decodeStr.match(/\"?[0-9a-f]+\"?/g); // match above pattern.\n if (decodeStr == '0') {\n return Buffer.alloc(128, 0);\n }\n // note: decoded[0] == 1\n var xval = ethereumjs_util_1.padToEven(decoded[1]);\n var yval = ethereumjs_util_1.padToEven(decoded[2]);\n // convert to buffers.\n var xBuffer = Buffer.concat([Buffer.alloc(64 - xval.length / 2, 0), Buffer.from(xval, 'hex')]);\n var yBuffer = Buffer.concat([Buffer.alloc(64 - yval.length / 2, 0), Buffer.from(yval, 'hex')]);\n return Buffer.concat([xBuffer, yBuffer]);\n}\nexports.BLS12_381_FromG1Point = BLS12_381_FromG1Point;\n// convert an input Buffer to a mcl G2 point\n// this does /NOT/ do any input checks. the input Buffer needs to be of length 256\nfunction BLS12_381_ToG2Point(input, mcl) {\n var p_x_1 = input.slice(0, 64);\n var p_x_2 = input.slice(64, 128);\n var p_y_1 = input.slice(128, 192);\n var p_y_2 = input.slice(192, 256);\n var ZeroBytes64 = Buffer.alloc(64, 0);\n // check if we have to do with a zero point\n if (p_x_1.equals(p_x_2) &&\n p_x_1.equals(p_y_1) &&\n p_x_1.equals(p_y_2) &&\n p_x_1.equals(ZeroBytes64)) {\n return new mcl.G2();\n }\n var Fp2X = BLS12_381_ToFp2Point(p_x_1, p_x_2, mcl);\n var Fp2Y = BLS12_381_ToFp2Point(p_y_1, p_y_2, mcl);\n var FpOne = new mcl.Fp();\n FpOne.setStr('1', 16);\n var FpZero = new mcl.Fp();\n FpZero.setStr('0', 16);\n var Fp2One = new mcl.Fp2();\n Fp2One.set_a(FpOne);\n Fp2One.set_b(FpZero);\n var mclPoint = new mcl.G2();\n mclPoint.setX(Fp2X);\n mclPoint.setY(Fp2Y);\n mclPoint.setZ(Fp2One);\n if (!mclPoint.isValidOrder()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n if (!mclPoint.isValid()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n return mclPoint;\n}\nexports.BLS12_381_ToG2Point = BLS12_381_ToG2Point;\n// input: a mcl G2 point\n// output: a 256-byte Buffer\nfunction BLS12_381_FromG2Point(input) {\n // TODO: figure out if there is a better way to decode these values.\n var decodeStr = input.getStr(16); //return a string of pattern \"1 \"\n if (decodeStr == '0') {\n return Buffer.alloc(256, 0);\n }\n var decoded = decodeStr.match(/\"?[0-9a-f]+\"?/g); // match above pattern.\n // note: decoded[0] == 1\n var x_1 = ethereumjs_util_1.padToEven(decoded[1]);\n var x_2 = ethereumjs_util_1.padToEven(decoded[2]);\n var y_1 = ethereumjs_util_1.padToEven(decoded[3]);\n var y_2 = ethereumjs_util_1.padToEven(decoded[4]);\n // convert to buffers.\n var xBuffer1 = Buffer.concat([Buffer.alloc(64 - x_1.length / 2, 0), Buffer.from(x_1, 'hex')]);\n var xBuffer2 = Buffer.concat([Buffer.alloc(64 - x_2.length / 2, 0), Buffer.from(x_2, 'hex')]);\n var yBuffer1 = Buffer.concat([Buffer.alloc(64 - y_1.length / 2, 0), Buffer.from(y_1, 'hex')]);\n var yBuffer2 = Buffer.concat([Buffer.alloc(64 - y_2.length / 2, 0), Buffer.from(y_2, 'hex')]);\n return Buffer.concat([xBuffer1, xBuffer2, yBuffer1, yBuffer2]);\n}\nexports.BLS12_381_FromG2Point = BLS12_381_FromG2Point;\n// input: a 32-byte hex scalar Buffer\n// output: a mcl Fr point\nfunction BLS12_381_ToFrPoint(input, mcl) {\n var mclHex = mcl.fromHexStr(input.toString('hex'));\n var Fr = new mcl.Fr();\n Fr.setBigEndianMod(mclHex);\n return Fr;\n}\nexports.BLS12_381_ToFrPoint = BLS12_381_ToFrPoint;\n// input: a 64-byte buffer\n// output: a mcl Fp point\nfunction BLS12_381_ToFpPoint(fpCoordinate, mcl) {\n // check if point is in field\n if (new ethereumjs_util_1.BN(fpCoordinate).gte(fieldModulus)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_FP_NOT_IN_FIELD);\n }\n var fp = new mcl.Fp();\n fp.setBigEndianMod(mcl.fromHexStr(fpCoordinate.toString('hex')));\n return fp;\n}\nexports.BLS12_381_ToFpPoint = BLS12_381_ToFpPoint;\n// input: two 64-byte buffers\n// output: a mcl Fp2 point\nfunction BLS12_381_ToFp2Point(fpXCoordinate, fpYCoordinate, mcl) {\n // check if the coordinates are in the field\n if (new ethereumjs_util_1.BN(fpXCoordinate).gte(fieldModulus)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_FP_NOT_IN_FIELD);\n }\n if (new ethereumjs_util_1.BN(fpYCoordinate).gte(fieldModulus)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_FP_NOT_IN_FIELD);\n }\n var fp_x = new mcl.Fp();\n var fp_y = new mcl.Fp();\n var fp2 = new mcl.Fp2();\n fp_x.setStr(fpXCoordinate.slice(16).toString('hex'), 16);\n fp_y.setStr(fpYCoordinate.slice(16).toString('hex'), 16);\n fp2.set_a(fp_x);\n fp2.set_b(fp_y);\n return fp2;\n}\nexports.BLS12_381_ToFp2Point = BLS12_381_ToFp2Point;\n//# sourceMappingURL=bls12_381.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./codes\"), exports);\n__exportStar(require(\"./functions\"), exports);\n__exportStar(require(\"./util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handlers = void 0;\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst util_1 = require(\"./util\");\nconst EIP1283_1 = require(\"./EIP1283\");\nconst EIP2200_1 = require(\"./EIP2200\");\nconst EIP2929_1 = require(\"./EIP2929\");\nconst exceptions_1 = require(\"../../exceptions\");\n// the opcode functions\nexports.handlers = new Map([\n // 0x00: STOP\n [\n 0x00,\n function () {\n util_1.trap(exceptions_1.ERROR.STOP);\n },\n ],\n // 0x01: ADD\n [\n 0x01,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = a.add(b).mod(ethereumjs_util_1.TWO_POW256);\n runState.stack.push(r);\n },\n ],\n // 0x02: MUL\n [\n 0x02,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = a.mul(b).mod(ethereumjs_util_1.TWO_POW256);\n runState.stack.push(r);\n },\n ],\n // 0x03: SUB\n [\n 0x03,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = a.sub(b).toTwos(256);\n runState.stack.push(r);\n },\n ],\n // 0x04: DIV\n [\n 0x04,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n let r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n r = a.div(b);\n }\n runState.stack.push(r);\n },\n ],\n // 0x05: SDIV\n [\n 0x05,\n function (runState) {\n let [a, b] = runState.stack.popN(2);\n let r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n a = a.fromTwos(256);\n b = b.fromTwos(256);\n r = a.div(b).toTwos(256);\n }\n runState.stack.push(r);\n },\n ],\n // 0x06: MOD\n [\n 0x06,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n let r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n r = a.mod(b);\n }\n runState.stack.push(r);\n },\n ],\n // 0x07: SMOD\n [\n 0x07,\n function (runState) {\n let [a, b] = runState.stack.popN(2);\n let r;\n if (b.isZero()) {\n r = new ethereumjs_util_1.BN(b);\n }\n else {\n a = a.fromTwos(256);\n b = b.fromTwos(256);\n r = a.abs().mod(b.abs());\n if (a.isNeg()) {\n r = r.ineg();\n }\n r = r.toTwos(256);\n }\n runState.stack.push(r);\n },\n ],\n // 0x08: ADDMOD\n [\n 0x08,\n function (runState) {\n const [a, b, c] = runState.stack.popN(3);\n let r;\n if (c.isZero()) {\n r = new ethereumjs_util_1.BN(c);\n }\n else {\n r = a.add(b).mod(c);\n }\n runState.stack.push(r);\n },\n ],\n // 0x09: MULMOD\n [\n 0x09,\n function (runState) {\n const [a, b, c] = runState.stack.popN(3);\n let r;\n if (c.isZero()) {\n r = new ethereumjs_util_1.BN(c);\n }\n else {\n r = a.mul(b).mod(c);\n }\n runState.stack.push(r);\n },\n ],\n // 0x0a: EXP\n [\n 0x0a,\n function (runState) {\n const [base, exponent] = runState.stack.popN(2);\n if (exponent.isZero()) {\n runState.stack.push(new ethereumjs_util_1.BN(1));\n return;\n }\n const byteLength = exponent.byteLength();\n if (byteLength < 1 || byteLength > 32) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_RANGE);\n }\n const gasPrice = runState._common.param('gasPrices', 'expByte');\n const amount = new ethereumjs_util_1.BN(byteLength).muln(gasPrice);\n runState.eei.useGas(amount, 'EXP opcode');\n if (base.isZero()) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const m = ethereumjs_util_1.BN.red(ethereumjs_util_1.TWO_POW256);\n const redBase = base.toRed(m);\n const r = redBase.redPow(exponent);\n runState.stack.push(r.fromRed());\n },\n ],\n // 0x0b: SIGNEXTEND\n [\n 0x0b,\n function (runState) {\n /* eslint-disable-next-line prefer-const */\n let [k, val] = runState.stack.popN(2);\n if (k.ltn(31)) {\n const signBit = k.muln(8).iaddn(7).toNumber();\n const mask = new ethereumjs_util_1.BN(1).ishln(signBit).isubn(1);\n if (val.testn(signBit)) {\n val = val.or(mask.notn(256));\n }\n else {\n val = val.and(mask);\n }\n }\n else {\n // return the same value\n val = new ethereumjs_util_1.BN(val);\n }\n runState.stack.push(val);\n },\n ],\n // 0x10 range - bit ops\n // 0x10: LT\n [\n 0x10,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = new ethereumjs_util_1.BN(a.lt(b) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x11: GT\n [\n 0x11,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = new ethereumjs_util_1.BN(a.gt(b) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x12: SLT\n [\n 0x12,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = new ethereumjs_util_1.BN(a.fromTwos(256).lt(b.fromTwos(256)) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x13: SGT\n [\n 0x13,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = new ethereumjs_util_1.BN(a.fromTwos(256).gt(b.fromTwos(256)) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x14: EQ\n [\n 0x14,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = new ethereumjs_util_1.BN(a.eq(b) ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x15: ISZERO\n [\n 0x15,\n function (runState) {\n const a = runState.stack.pop();\n const r = new ethereumjs_util_1.BN(a.isZero() ? 1 : 0);\n runState.stack.push(r);\n },\n ],\n // 0x16: AND\n [\n 0x16,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = a.and(b);\n runState.stack.push(r);\n },\n ],\n // 0x17: OR\n [\n 0x17,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = a.or(b);\n runState.stack.push(r);\n },\n ],\n // 0x18: XOR\n [\n 0x18,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n const r = a.xor(b);\n runState.stack.push(r);\n },\n ],\n // 0x19: NOT\n [\n 0x19,\n function (runState) {\n const a = runState.stack.pop();\n const r = a.notn(256);\n runState.stack.push(r);\n },\n ],\n // 0x1a: BYTE\n [\n 0x1a,\n function (runState) {\n const [pos, word] = runState.stack.popN(2);\n if (pos.gten(32)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const r = new ethereumjs_util_1.BN(word.shrn((31 - pos.toNumber()) * 8).andln(0xff));\n runState.stack.push(r);\n },\n ],\n // 0x1b: SHL\n [\n 0x1b,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n if (a.gten(256)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const r = b.shln(a.toNumber()).iand(ethereumjs_util_1.MAX_INTEGER);\n runState.stack.push(r);\n },\n ],\n // 0x1c: SHR\n [\n 0x1c,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n if (a.gten(256)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const r = b.shrn(a.toNumber());\n runState.stack.push(r);\n },\n ],\n // 0x1d: SAR\n [\n 0x1d,\n function (runState) {\n const [a, b] = runState.stack.popN(2);\n let r;\n const isSigned = b.testn(255);\n if (a.gten(256)) {\n if (isSigned) {\n r = new ethereumjs_util_1.BN(ethereumjs_util_1.MAX_INTEGER);\n }\n else {\n r = new ethereumjs_util_1.BN(0);\n }\n runState.stack.push(r);\n return;\n }\n const c = b.shrn(a.toNumber());\n if (isSigned) {\n const shiftedOutWidth = 255 - a.toNumber();\n const mask = ethereumjs_util_1.MAX_INTEGER.shrn(shiftedOutWidth).shln(shiftedOutWidth);\n r = c.ior(mask);\n }\n else {\n r = c;\n }\n runState.stack.push(r);\n },\n ],\n // 0x20 range - crypto\n // 0x20: SHA3\n [\n 0x20,\n function (runState) {\n const [offset, length] = runState.stack.popN(2);\n util_1.subMemUsage(runState, offset, length);\n let data = Buffer.alloc(0);\n if (!length.isZero()) {\n data = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n // copy fee\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sha3Word')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'SHA3 opcode');\n const r = new ethereumjs_util_1.BN(ethereumjs_util_1.keccak256(data));\n runState.stack.push(r);\n },\n ],\n // 0x30 range - closure state\n // 0x30: ADDRESS\n [\n 0x30,\n function (runState) {\n const address = new ethereumjs_util_1.BN(runState.eei.getAddress().buf);\n runState.stack.push(address);\n },\n ],\n // 0x31: BALANCE\n [\n 0x31,\n async function (runState) {\n const addressBN = runState.stack.pop();\n const address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n const balance = await runState.eei.getExternalBalance(address);\n runState.stack.push(balance);\n },\n ],\n // 0x32: ORIGIN\n [\n 0x32,\n function (runState) {\n runState.stack.push(runState.eei.getTxOrigin());\n },\n ],\n // 0x33: CALLER\n [\n 0x33,\n function (runState) {\n runState.stack.push(runState.eei.getCaller());\n },\n ],\n // 0x34: CALLVALUE\n [\n 0x34,\n function (runState) {\n runState.stack.push(runState.eei.getCallValue());\n },\n ],\n // 0x35: CALLDATALOAD\n [\n 0x35,\n function (runState) {\n const pos = runState.stack.pop();\n if (pos.gt(runState.eei.getCallDataSize())) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const i = pos.toNumber();\n let loaded = runState.eei.getCallData().slice(i, i + 32);\n loaded = loaded.length ? loaded : Buffer.from([0]);\n const r = new ethereumjs_util_1.BN(ethereumjs_util_1.setLengthRight(loaded, 32));\n runState.stack.push(r);\n },\n ],\n // 0x36: CALLDATASIZE\n [\n 0x36,\n function (runState) {\n const r = runState.eei.getCallDataSize();\n runState.stack.push(r);\n },\n ],\n // 0x37: CALLDATACOPY\n [\n 0x37,\n function (runState) {\n const [memOffset, dataOffset, dataLength] = runState.stack.popN(3);\n util_1.subMemUsage(runState, memOffset, dataLength);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).imul(util_1.divCeil(dataLength, new ethereumjs_util_1.BN(32))), 'CALLDATACOPY opcode');\n const data = util_1.getDataSlice(runState.eei.getCallData(), dataOffset, dataLength);\n const memOffsetNum = memOffset.toNumber();\n const dataLengthNum = dataLength.toNumber();\n runState.memory.extend(memOffsetNum, dataLengthNum);\n runState.memory.write(memOffsetNum, dataLengthNum, data);\n },\n ],\n // 0x38: CODESIZE\n [\n 0x38,\n function (runState) {\n runState.stack.push(runState.eei.getCodeSize());\n },\n ],\n // 0x39: CODECOPY\n [\n 0x39,\n function (runState) {\n const [memOffset, codeOffset, length] = runState.stack.popN(3);\n util_1.subMemUsage(runState, memOffset, length);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'CODECOPY opcode');\n const data = util_1.getDataSlice(runState.eei.getCode(), codeOffset, length);\n const memOffsetNum = memOffset.toNumber();\n const lengthNum = length.toNumber();\n runState.memory.extend(memOffsetNum, lengthNum);\n runState.memory.write(memOffsetNum, lengthNum, data);\n },\n ],\n // 0x3b: EXTCODESIZE\n [\n 0x3b,\n async function (runState) {\n const addressBN = runState.stack.pop();\n const address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n const size = await runState.eei.getExternalCodeSize(addressBN);\n runState.stack.push(size);\n },\n ],\n // 0x3c: EXTCODECOPY\n [\n 0x3c,\n async function (runState) {\n const [addressBN, memOffset, codeOffset, length] = runState.stack.popN(4);\n // FIXME: for some reason this must come before subGas\n util_1.subMemUsage(runState, memOffset, length);\n const address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n // copy fee\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'EXTCODECOPY opcode');\n const code = await runState.eei.getExternalCode(addressBN);\n const data = util_1.getDataSlice(code, codeOffset, length);\n const memOffsetNum = memOffset.toNumber();\n const lengthNum = length.toNumber();\n runState.memory.extend(memOffsetNum, lengthNum);\n runState.memory.write(memOffsetNum, lengthNum, data);\n },\n ],\n // 0x3f: EXTCODEHASH\n [\n 0x3f,\n async function (runState) {\n const addressBN = runState.stack.pop();\n const address = new ethereumjs_util_1.Address(util_1.addressToBuffer(addressBN));\n EIP2929_1.accessAddressEIP2929(runState, address);\n const empty = await runState.eei.isAccountEmpty(address);\n if (empty) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const code = await runState.eei.getExternalCode(addressBN);\n if (code.length === 0) {\n runState.stack.push(new ethereumjs_util_1.BN(ethereumjs_util_1.KECCAK256_NULL));\n return;\n }\n runState.stack.push(new ethereumjs_util_1.BN(ethereumjs_util_1.keccak256(code)));\n },\n ],\n // 0x3d: RETURNDATASIZE\n [\n 0x3d,\n function (runState) {\n runState.stack.push(runState.eei.getReturnDataSize());\n },\n ],\n // 0x3e: RETURNDATACOPY\n [\n 0x3e,\n function (runState) {\n const [memOffset, returnDataOffset, length] = runState.stack.popN(3);\n if (returnDataOffset.add(length).gt(runState.eei.getReturnDataSize())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n util_1.subMemUsage(runState, memOffset, length);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'copy')).mul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'RETURNDATACOPY opcode');\n const data = util_1.getDataSlice(runState.eei.getReturnData(), returnDataOffset, length);\n const memOffsetNum = memOffset.toNumber();\n const lengthNum = length.toNumber();\n runState.memory.extend(memOffsetNum, lengthNum);\n runState.memory.write(memOffsetNum, lengthNum, data);\n },\n ],\n // 0x3a: GASPRICE\n [\n 0x3a,\n function (runState) {\n runState.stack.push(runState.eei.getTxGasPrice());\n },\n ],\n // '0x40' range - block operations\n // 0x40: BLOCKHASH\n [\n 0x40,\n async function (runState) {\n const number = runState.stack.pop();\n const diff = runState.eei.getBlockNumber().sub(number);\n // block lookups must be within the past 256 blocks\n if (diff.gtn(256) || diff.lten(0)) {\n runState.stack.push(new ethereumjs_util_1.BN(0));\n return;\n }\n const hash = await runState.eei.getBlockHash(number);\n runState.stack.push(hash);\n },\n ],\n // 0x41: COINBASE\n [\n 0x41,\n function (runState) {\n runState.stack.push(runState.eei.getBlockCoinbase());\n },\n ],\n // 0x42: TIMESTAMP\n [\n 0x42,\n function (runState) {\n runState.stack.push(runState.eei.getBlockTimestamp());\n },\n ],\n // 0x43: NUMBER\n [\n 0x43,\n function (runState) {\n runState.stack.push(runState.eei.getBlockNumber());\n },\n ],\n // 0x44: DIFFICULTY\n [\n 0x44,\n function (runState) {\n runState.stack.push(runState.eei.getBlockDifficulty());\n },\n ],\n // 0x45: GASLIMIT\n [\n 0x45,\n function (runState) {\n runState.stack.push(runState.eei.getBlockGasLimit());\n },\n ],\n // 0x46: CHAINID\n [\n 0x46,\n function (runState) {\n runState.stack.push(runState.eei.getChainId());\n },\n ],\n // 0x47: SELFBALANCE\n [\n 0x47,\n function (runState) {\n runState.stack.push(runState.eei.getSelfBalance());\n },\n ],\n // 0x50 range - 'storage' and execution\n // 0x50: POP\n [\n 0x50,\n function (runState) {\n runState.stack.pop();\n },\n ],\n // 0x51: MLOAD\n [\n 0x51,\n function (runState) {\n const pos = runState.stack.pop();\n util_1.subMemUsage(runState, pos, new ethereumjs_util_1.BN(32));\n const word = runState.memory.read(pos.toNumber(), 32);\n runState.stack.push(new ethereumjs_util_1.BN(word));\n },\n ],\n // 0x52: MSTORE\n [\n 0x52,\n function (runState) {\n const [offset, word] = runState.stack.popN(2);\n const buf = word.toArrayLike(Buffer, 'be', 32);\n util_1.subMemUsage(runState, offset, new ethereumjs_util_1.BN(32));\n const offsetNum = offset.toNumber();\n runState.memory.extend(offsetNum, 32);\n runState.memory.write(offsetNum, 32, buf);\n },\n ],\n // 0x53: MSTORE8\n [\n 0x53,\n function (runState) {\n const [offset, byte] = runState.stack.popN(2);\n // NOTE: we're using a 'trick' here to get the least significant byte\n // NOTE: force cast necessary because `BN.andln` returns number but\n // the types are wrong\n const buf = Buffer.from([byte.andln(0xff)]);\n util_1.subMemUsage(runState, offset, new ethereumjs_util_1.BN(1));\n const offsetNum = offset.toNumber();\n runState.memory.extend(offsetNum, 1);\n runState.memory.write(offsetNum, 1, buf);\n },\n ],\n // 0x54: SLOAD\n [\n 0x54,\n async function (runState) {\n const key = runState.stack.pop();\n const keyBuf = key.toArrayLike(Buffer, 'be', 32);\n EIP2929_1.accessStorageEIP2929(runState, keyBuf, false);\n const value = await runState.eei.storageLoad(keyBuf);\n const valueBN = value.length ? new ethereumjs_util_1.BN(value) : new ethereumjs_util_1.BN(0);\n runState.stack.push(valueBN);\n },\n ],\n // 0x55: SSTORE\n [\n 0x55,\n async function (runState) {\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n const [key, val] = runState.stack.popN(2);\n const keyBuf = key.toArrayLike(Buffer, 'be', 32);\n // NOTE: this should be the shortest representation\n let value;\n if (val.isZero()) {\n value = Buffer.from([]);\n }\n else {\n value = val.toArrayLike(Buffer, 'be');\n }\n // TODO: Replace getContractStorage with EEI method\n const found = await util_1.getContractStorage(runState, runState.eei.getAddress(), keyBuf);\n if (runState._common.hardfork() === 'constantinople') {\n EIP1283_1.updateSstoreGasEIP1283(runState, found, util_1.setLengthLeftStorage(value));\n }\n else if (runState._common.gteHardfork('istanbul')) {\n EIP2200_1.updateSstoreGasEIP2200(runState, found, util_1.setLengthLeftStorage(value), keyBuf);\n }\n else {\n util_1.updateSstoreGas(runState, found, util_1.setLengthLeftStorage(value), keyBuf);\n }\n // We have to do this after the Istanbul (EIP2200) checks.\n // Otherwise, we might run out of gas, due to \"sentry check\" of 2300 gas, if we deduct extra gas first.\n EIP2929_1.accessStorageEIP2929(runState, keyBuf, true);\n await runState.eei.storageStore(keyBuf, value);\n },\n ],\n // 0x56: JUMP\n [\n 0x56,\n function (runState) {\n const dest = runState.stack.pop();\n if (dest.gt(runState.eei.getCodeSize())) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n const destNum = dest.toNumber();\n if (!util_1.jumpIsValid(runState, destNum)) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n runState.programCounter = destNum;\n },\n ],\n // 0x57: JUMPI\n [\n 0x57,\n function (runState) {\n const [dest, cond] = runState.stack.popN(2);\n if (!cond.isZero()) {\n if (dest.gt(runState.eei.getCodeSize())) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n const destNum = dest.toNumber();\n if (!util_1.jumpIsValid(runState, destNum)) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMP + ' at ' + util_1.describeLocation(runState));\n }\n runState.programCounter = destNum;\n }\n },\n ],\n // 0x58: PC\n [\n 0x58,\n function (runState) {\n runState.stack.push(new ethereumjs_util_1.BN(runState.programCounter - 1));\n },\n ],\n // 0x59: MSIZE\n [\n 0x59,\n function (runState) {\n runState.stack.push(runState.memoryWordCount.muln(32));\n },\n ],\n // 0x5a: GAS\n [\n 0x5a,\n function (runState) {\n runState.stack.push(new ethereumjs_util_1.BN(runState.eei.getGasLeft()));\n },\n ],\n // 0x5b: JUMPDEST\n [0x5b, function () { }],\n // 0x5c: BEGINSUB\n [\n 0x5c,\n function (runState) {\n util_1.trap(exceptions_1.ERROR.INVALID_BEGINSUB + ' at ' + util_1.describeLocation(runState));\n },\n ],\n // 0x5d: RETURNSUB\n [\n 0x5d,\n function (runState) {\n if (runState.returnStack.length < 1) {\n util_1.trap(exceptions_1.ERROR.INVALID_RETURNSUB);\n }\n const dest = runState.returnStack.pop();\n runState.programCounter = dest.toNumber();\n },\n ],\n // 0x5e: JUMPSUB\n [\n 0x5e,\n function (runState) {\n const dest = runState.stack.pop();\n if (dest.gt(runState.eei.getCodeSize())) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMPSUB + ' at ' + util_1.describeLocation(runState));\n }\n const destNum = dest.toNumber();\n if (!util_1.jumpSubIsValid(runState, destNum)) {\n util_1.trap(exceptions_1.ERROR.INVALID_JUMPSUB + ' at ' + util_1.describeLocation(runState));\n }\n runState.returnStack.push(new ethereumjs_util_1.BN(runState.programCounter));\n runState.programCounter = destNum + 1;\n },\n ],\n // 0x60: PUSH\n [\n 0x60,\n function (runState) {\n const numToPush = runState.opCode - 0x5f;\n const loaded = new ethereumjs_util_1.BN(runState.eei.getCode().slice(runState.programCounter, runState.programCounter + numToPush));\n runState.programCounter += numToPush;\n runState.stack.push(loaded);\n },\n ],\n // 0x80: DUP\n [\n 0x80,\n function (runState) {\n const stackPos = runState.opCode - 0x7f;\n runState.stack.dup(stackPos);\n },\n ],\n // 0x90: SWAP\n [\n 0x90,\n function (runState) {\n const stackPos = runState.opCode - 0x8f;\n runState.stack.swap(stackPos);\n },\n ],\n // 0xa0: LOG\n [\n 0xa0,\n function (runState) {\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n const [memOffset, memLength] = runState.stack.popN(2);\n const topicsCount = runState.opCode - 0xa0;\n if (topicsCount < 0 || topicsCount > 4) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_RANGE);\n }\n const topics = runState.stack.popN(topicsCount);\n const topicsBuf = topics.map(function (a) {\n return a.toArrayLike(Buffer, 'be', 32);\n });\n util_1.subMemUsage(runState, memOffset, memLength);\n let mem = Buffer.alloc(0);\n if (!memLength.isZero()) {\n mem = runState.memory.read(memOffset.toNumber(), memLength.toNumber());\n }\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'logTopic'))\n .imuln(topicsCount)\n .iadd(memLength.muln(runState._common.param('gasPrices', 'logData'))), 'LOG opcode');\n runState.eei.log(mem, topicsCount, topicsBuf);\n },\n ],\n // '0xf0' range - closures\n // 0xf0: CREATE\n [\n 0xf0,\n async function (runState) {\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n const [value, offset, length] = runState.stack.popN(3);\n EIP2929_1.accessAddressEIP2929(runState, runState.eei.getAddress(), false);\n util_1.subMemUsage(runState, offset, length);\n let gasLimit = new ethereumjs_util_1.BN(runState.eei.getGasLeft());\n gasLimit = util_1.maxCallGas(gasLimit, runState.eei.getGasLeft(), runState);\n let data = Buffer.alloc(0);\n if (!length.isZero()) {\n data = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n const ret = await runState.eei.create(gasLimit, value, data);\n runState.stack.push(ret);\n },\n ],\n // 0xf5: CREATE2\n [\n 0xf5,\n async function (runState) {\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n const [value, offset, length, salt] = runState.stack.popN(4);\n util_1.subMemUsage(runState, offset, length);\n EIP2929_1.accessAddressEIP2929(runState, runState.eei.getAddress(), false);\n // Deduct gas costs for hashing\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sha3Word')).imul(util_1.divCeil(length, new ethereumjs_util_1.BN(32))), 'CREATE2 opcode');\n let gasLimit = new ethereumjs_util_1.BN(runState.eei.getGasLeft());\n gasLimit = util_1.maxCallGas(gasLimit, runState.eei.getGasLeft(), runState); // CREATE2 is only available after TangerineWhistle (Constantinople introduced this opcode)\n let data = Buffer.alloc(0);\n if (!length.isZero()) {\n data = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n const ret = await runState.eei.create2(gasLimit, value, data, salt.toArrayLike(Buffer, 'be', 32));\n runState.stack.push(ret);\n },\n ],\n // 0xf1: CALL\n [\n 0xf1,\n async function (runState) {\n const [currentGasLimit, toAddr, value, inOffset, inLength, outOffset, outLength,] = runState.stack.popN(7);\n const toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n if (runState.eei.isStatic() && !value.isZero()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n if (!value.isZero()) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callValueTransfer')), 'CALL opcode -> callValueTransfer');\n }\n let data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n if (runState._common.gteHardfork('spuriousDragon')) {\n // We are at or after Spurious Dragon\n // Call new account gas: account is DEAD and we transfer nonzero value\n if ((await runState.eei.isAccountEmpty(toAddress)) && !value.isZero()) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callNewAccount')), 'CALL opcode -> callNewAccount (>= SpuriousDragon)');\n }\n }\n else if (!(await runState.eei.accountExists(toAddress))) {\n // We are before Spurious Dragon and the account does not exist.\n // Call new account gas: account does not exist (it is not in the state trie, not even as an \"empty\" account)\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callNewAccount')), 'CALL opcode -> callNewAccount (< SpuriousDragon)');\n }\n const gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState);\n // note that TangerineWhistle or later this cannot happen (it could have ran out of gas prior to getting here though)\n if (gasLimit.gt(runState.eei.getGasLeft())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n if (!value.isZero()) {\n // TODO: Don't use private attr directly\n runState.eei._gasLeft.iaddn(runState._common.param('gasPrices', 'callStipend'));\n gasLimit.iaddn(runState._common.param('gasPrices', 'callStipend'));\n }\n const ret = await runState.eei.call(gasLimit, toAddress, value, data);\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n },\n ],\n // 0xf2: CALLCODE\n [\n 0xf2,\n async function (runState) {\n const [currentGasLimit, toAddr, value, inOffset, inLength, outOffset, outLength,] = runState.stack.popN(7);\n const toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n if (!value.isZero()) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callValueTransfer')), 'CALLCODE opcode -> callValueTransfer');\n }\n const gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState);\n // note that TangerineWhistle or later this cannot happen (it could have ran out of gas prior to getting here though)\n if (gasLimit.gt(runState.eei.getGasLeft())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n if (!value.isZero()) {\n // TODO: Don't use private attr directly\n runState.eei._gasLeft.iaddn(runState._common.param('gasPrices', 'callStipend'));\n gasLimit.iaddn(runState._common.param('gasPrices', 'callStipend'));\n }\n let data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n const ret = await runState.eei.callCode(gasLimit, toAddress, value, data);\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n },\n ],\n // 0xf4: DELEGATECALL\n [\n 0xf4,\n async function (runState) {\n const value = runState.eei.getCallValue();\n const [currentGasLimit, toAddr, inOffset, inLength, outOffset, outLength,] = runState.stack.popN(6);\n const toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n const gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState);\n // note that TangerineWhistle or later this cannot happen (it could have ran out of gas prior to getting here though)\n if (gasLimit.gt(runState.eei.getGasLeft())) {\n util_1.trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n let data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n const ret = await runState.eei.callDelegate(gasLimit, toAddress, value, data);\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n },\n ],\n // 0x06: STATICCALL\n [\n 0xfa,\n async function (runState) {\n const value = new ethereumjs_util_1.BN(0);\n const [currentGasLimit, toAddr, inOffset, inLength, outOffset, outLength,] = runState.stack.popN(6);\n const toAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(toAddr));\n util_1.subMemUsage(runState, inOffset, inLength);\n util_1.subMemUsage(runState, outOffset, outLength);\n EIP2929_1.accessAddressEIP2929(runState, toAddress);\n const gasLimit = util_1.maxCallGas(currentGasLimit, runState.eei.getGasLeft(), runState); // we set TangerineWhistle or later to true here, as STATICCALL was available from Byzantium (which is after TangerineWhistle)\n let data = Buffer.alloc(0);\n if (!inLength.isZero()) {\n data = runState.memory.read(inOffset.toNumber(), inLength.toNumber());\n }\n const ret = await runState.eei.callStatic(gasLimit, toAddress, value, data);\n // Write return data to memory\n util_1.writeCallOutput(runState, outOffset, outLength);\n runState.stack.push(ret);\n },\n ],\n // 0xf3: RETURN\n [\n 0xf3,\n function (runState) {\n const [offset, length] = runState.stack.popN(2);\n util_1.subMemUsage(runState, offset, length);\n let returnData = Buffer.alloc(0);\n if (!length.isZero()) {\n returnData = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n runState.eei.finish(returnData);\n },\n ],\n // 0xfd: REVERT\n [\n 0xfd,\n function (runState) {\n const [offset, length] = runState.stack.popN(2);\n util_1.subMemUsage(runState, offset, length);\n let returnData = Buffer.alloc(0);\n if (!length.isZero()) {\n returnData = runState.memory.read(offset.toNumber(), length.toNumber());\n }\n runState.eei.revert(returnData);\n },\n ],\n // '0x70', range - other\n // 0xff: SELFDESTRUCT\n [\n 0xff,\n async function (runState) {\n const selfdestructToAddressBN = runState.stack.pop();\n if (runState.eei.isStatic()) {\n util_1.trap(exceptions_1.ERROR.STATIC_STATE_CHANGE);\n }\n const selfdestructToAddress = new ethereumjs_util_1.Address(util_1.addressToBuffer(selfdestructToAddressBN));\n let deductGas = false;\n if (runState._common.gteHardfork('spuriousDragon')) {\n // EIP-161: State Trie Clearing\n const balance = await runState.eei.getExternalBalance(runState.eei.getAddress());\n if (balance.gtn(0)) {\n // This technically checks if account is empty or non-existent\n // TODO: improve on the API here (EEI and StateManager)\n const empty = await runState.eei.isAccountEmpty(selfdestructToAddress);\n if (empty) {\n deductGas = true;\n }\n }\n }\n else if (runState._common.gteHardfork('tangerineWhistle')) {\n // Pre EIP-150 (Tangerine Whistle) gas semantics\n const exists = await runState.stateManager.accountExists(selfdestructToAddress);\n if (!exists) {\n deductGas = true;\n }\n }\n if (deductGas) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'callNewAccount')), ' opcode');\n }\n EIP2929_1.accessAddressEIP2929(runState, selfdestructToAddress, true, true);\n return runState.eei.selfDestruct(selfdestructToAddress);\n },\n ],\n]);\n// Fill in rest of PUSHn, DUPn, SWAPn, LOGn for handlers\nconst pushFn = exports.handlers.get(0x60);\nfor (let i = 0x61; i <= 0x7f; i++) {\n exports.handlers.set(i, pushFn);\n}\nconst dupFn = exports.handlers.get(0x80);\nfor (let i = 0x81; i <= 0x8f; i++) {\n exports.handlers.set(i, dupFn);\n}\nconst swapFn = exports.handlers.get(0x90);\nfor (let i = 0x91; i <= 0x9f; i++) {\n exports.handlers.set(i, swapFn);\n}\nconst logFn = exports.handlers.get(0xa0);\nfor (let i = 0xa1; i <= 0xa4; i++) {\n exports.handlers.set(i, logFn);\n}\n//# sourceMappingURL=functions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLS12_381_ToFp2Point = exports.BLS12_381_ToFpPoint = exports.BLS12_381_ToFrPoint = exports.BLS12_381_FromG2Point = exports.BLS12_381_ToG2Point = exports.BLS12_381_FromG1Point = exports.BLS12_381_ToG1Point = void 0;\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst exceptions_1 = require(\"../../../exceptions\");\n// base field modulus as described in the EIP\nconst fieldModulus = new ethereumjs_util_1.BN('1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab', 16);\n// convert an input Buffer to a mcl G1 point\n// this does /NOT/ do any input checks. the input Buffer needs to be of length 128\n// it does raise an error if the point is not on the curve.\nfunction BLS12_381_ToG1Point(input, mcl) {\n const p_x = input.slice(16, 64).toString('hex');\n const p_y = input.slice(80, 128).toString('hex');\n const ZeroString48Bytes = '0'.repeat(96);\n if (p_x == p_y && p_x == ZeroString48Bytes) {\n return new mcl.G1();\n }\n const Fp_X = new mcl.Fp();\n const Fp_Y = new mcl.Fp();\n const One = new mcl.Fp();\n Fp_X.setStr(p_x, 16);\n Fp_Y.setStr(p_y, 16);\n One.setStr('1', 16);\n const G1 = new mcl.G1();\n G1.setX(Fp_X);\n G1.setY(Fp_Y);\n G1.setZ(One);\n if (!G1.isValidOrder()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n // Check if these coordinates are actually on the curve.\n if (!G1.isValid()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n return G1;\n}\nexports.BLS12_381_ToG1Point = BLS12_381_ToG1Point;\n// input: a mcl G1 point\n// output: a 128-byte Buffer\nfunction BLS12_381_FromG1Point(input) {\n // TODO: figure out if there is a better way to decode these values.\n const decodeStr = input.getStr(16); //return a string of pattern \"1 \"\n const decoded = decodeStr.match(/\"?[0-9a-f]+\"?/g); // match above pattern.\n if (decodeStr == '0') {\n return Buffer.alloc(128, 0);\n }\n // note: decoded[0] == 1\n const xval = ethereumjs_util_1.padToEven(decoded[1]);\n const yval = ethereumjs_util_1.padToEven(decoded[2]);\n // convert to buffers.\n const xBuffer = Buffer.concat([Buffer.alloc(64 - xval.length / 2, 0), Buffer.from(xval, 'hex')]);\n const yBuffer = Buffer.concat([Buffer.alloc(64 - yval.length / 2, 0), Buffer.from(yval, 'hex')]);\n return Buffer.concat([xBuffer, yBuffer]);\n}\nexports.BLS12_381_FromG1Point = BLS12_381_FromG1Point;\n// convert an input Buffer to a mcl G2 point\n// this does /NOT/ do any input checks. the input Buffer needs to be of length 256\nfunction BLS12_381_ToG2Point(input, mcl) {\n const p_x_1 = input.slice(0, 64);\n const p_x_2 = input.slice(64, 128);\n const p_y_1 = input.slice(128, 192);\n const p_y_2 = input.slice(192, 256);\n const ZeroBytes64 = Buffer.alloc(64, 0);\n // check if we have to do with a zero point\n if (p_x_1.equals(p_x_2) &&\n p_x_1.equals(p_y_1) &&\n p_x_1.equals(p_y_2) &&\n p_x_1.equals(ZeroBytes64)) {\n return new mcl.G2();\n }\n const Fp2X = BLS12_381_ToFp2Point(p_x_1, p_x_2, mcl);\n const Fp2Y = BLS12_381_ToFp2Point(p_y_1, p_y_2, mcl);\n const FpOne = new mcl.Fp();\n FpOne.setStr('1', 16);\n const FpZero = new mcl.Fp();\n FpZero.setStr('0', 16);\n const Fp2One = new mcl.Fp2();\n Fp2One.set_a(FpOne);\n Fp2One.set_b(FpZero);\n const mclPoint = new mcl.G2();\n mclPoint.setX(Fp2X);\n mclPoint.setY(Fp2Y);\n mclPoint.setZ(Fp2One);\n if (!mclPoint.isValidOrder()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n if (!mclPoint.isValid()) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE);\n }\n return mclPoint;\n}\nexports.BLS12_381_ToG2Point = BLS12_381_ToG2Point;\n// input: a mcl G2 point\n// output: a 256-byte Buffer\nfunction BLS12_381_FromG2Point(input) {\n // TODO: figure out if there is a better way to decode these values.\n const decodeStr = input.getStr(16); //return a string of pattern \"1 \"\n if (decodeStr == '0') {\n return Buffer.alloc(256, 0);\n }\n const decoded = decodeStr.match(/\"?[0-9a-f]+\"?/g); // match above pattern.\n // note: decoded[0] == 1\n const x_1 = ethereumjs_util_1.padToEven(decoded[1]);\n const x_2 = ethereumjs_util_1.padToEven(decoded[2]);\n const y_1 = ethereumjs_util_1.padToEven(decoded[3]);\n const y_2 = ethereumjs_util_1.padToEven(decoded[4]);\n // convert to buffers.\n const xBuffer1 = Buffer.concat([Buffer.alloc(64 - x_1.length / 2, 0), Buffer.from(x_1, 'hex')]);\n const xBuffer2 = Buffer.concat([Buffer.alloc(64 - x_2.length / 2, 0), Buffer.from(x_2, 'hex')]);\n const yBuffer1 = Buffer.concat([Buffer.alloc(64 - y_1.length / 2, 0), Buffer.from(y_1, 'hex')]);\n const yBuffer2 = Buffer.concat([Buffer.alloc(64 - y_2.length / 2, 0), Buffer.from(y_2, 'hex')]);\n return Buffer.concat([xBuffer1, xBuffer2, yBuffer1, yBuffer2]);\n}\nexports.BLS12_381_FromG2Point = BLS12_381_FromG2Point;\n// input: a 32-byte hex scalar Buffer\n// output: a mcl Fr point\nfunction BLS12_381_ToFrPoint(input, mcl) {\n const mclHex = mcl.fromHexStr(input.toString('hex'));\n const Fr = new mcl.Fr();\n Fr.setBigEndianMod(mclHex);\n return Fr;\n}\nexports.BLS12_381_ToFrPoint = BLS12_381_ToFrPoint;\n// input: a 64-byte buffer\n// output: a mcl Fp point\nfunction BLS12_381_ToFpPoint(fpCoordinate, mcl) {\n // check if point is in field\n if (new ethereumjs_util_1.BN(fpCoordinate).gte(fieldModulus)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_FP_NOT_IN_FIELD);\n }\n const fp = new mcl.Fp();\n fp.setBigEndianMod(mcl.fromHexStr(fpCoordinate.toString('hex')));\n return fp;\n}\nexports.BLS12_381_ToFpPoint = BLS12_381_ToFpPoint;\n// input: two 64-byte buffers\n// output: a mcl Fp2 point\nfunction BLS12_381_ToFp2Point(fpXCoordinate, fpYCoordinate, mcl) {\n // check if the coordinates are in the field\n if (new ethereumjs_util_1.BN(fpXCoordinate).gte(fieldModulus)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_FP_NOT_IN_FIELD);\n }\n if (new ethereumjs_util_1.BN(fpYCoordinate).gte(fieldModulus)) {\n throw new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_FP_NOT_IN_FIELD);\n }\n const fp_x = new mcl.Fp();\n const fp_y = new mcl.Fp();\n const fp2 = new mcl.Fp2();\n fp_x.setStr(fpXCoordinate.slice(16).toString('hex'), 16);\n fp_y.setStr(fpYCoordinate.slice(16).toString('hex'), 16);\n fp2.set_a(fp_x);\n fp2.set_b(fp_y);\n return fp2;\n}\nexports.BLS12_381_ToFp2Point = BLS12_381_ToFp2Point;\n//# sourceMappingURL=bls12_381.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForkTrie = void 0;\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nconst utils_1 = require(\"@ganache/utils\");\nconst trie_1 = require(\"../helpers/trie\");\nconst subleveldown_1 = __importDefault(require(\"subleveldown\"));\nconst lexico = __importStar(require(\"./lexicographic-key-codec\"));\nconst rlp_1 = require(\"@ganache/rlp\");\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst GET_CODE = \"eth_getCode\";\nconst GET_NONCE = \"eth_getTransactionCount\";\nconst GET_BALANCE = \"eth_getBalance\";\nconst GET_STORAGE_AT = \"eth_getStorageAt\";\nconst MetadataSingletons = new WeakMap();\nconst LEVELDOWN_OPTIONS = {\n keyEncoding: \"binary\",\n valueEncoding: \"binary\"\n};\n/**\n * Commits a checkpoint to disk, if current checkpoint is not nested.\n * If nested, only sets the parent checkpoint as current checkpoint.\n * @throws If not during a checkpoint phase\n */\nasync function commit() {\n const { keyValueMap } = this.checkpoints.pop();\n if (!this.isCheckpoint) {\n // This was the final checkpoint, we should now commit and flush everything to disk\n const batchOp = [];\n keyValueMap.forEach(function (value, key) {\n if (value === null) {\n batchOp.push({\n type: \"del\",\n key: Buffer.from(key, \"binary\")\n });\n }\n else {\n batchOp.push({\n type: \"put\",\n key: Buffer.from(key, \"binary\"),\n value\n });\n }\n });\n await this.batch(batchOp);\n }\n else {\n // dump everything into the current (higher level) cache\n const currentKeyValueMap = this.checkpoints[this.checkpoints.length - 1]\n .keyValueMap;\n keyValueMap.forEach((value, key) => currentKeyValueMap.set(key, value));\n }\n}\nclass ForkTrie extends trie_1.GanacheTrie {\n constructor(db, root, blockchain) {\n super(db, root, blockchain);\n this.address = null;\n this.blockNumber = null;\n /**\n * Gets an account from the fork/fallback.\n *\n * @param address the address of the account\n * @param blockNumber the block number at which to query the fork/fallback.\n * @param stateRoot the state root at the given blockNumber\n */\n this.accountFromFallback = async (address, blockNumber) => {\n const { fallback } = this.blockchain;\n const number = this.blockchain.fallback.selectValidForkBlockNumber(blockNumber);\n // get nonce, balance, and code from the fork/fallback\n const codeProm = fallback.request(GET_CODE, [address, number]);\n const promises = [\n fallback.request(GET_NONCE, [address, number]),\n fallback.request(GET_BALANCE, [address, number]),\n null\n ];\n // create an account so we can serialize everything later\n const account = new ethereum_utils_1.Account(address);\n // because code requires additional asynchronous processing, we await and\n // process it ASAP\n const codeHex = await codeProm;\n if (codeHex !== \"0x\") {\n const code = utils_1.Data.from(codeHex).toBuffer();\n // the codeHash is just the keccak hash of the code itself\n account.codeHash = utils_1.keccak(code);\n if (!account.codeHash.equals(ethereumjs_util_1.KECCAK256_NULL)) {\n // insert the code directly into the database with a key of `codeHash`\n promises[2] = this.db.put(account.codeHash, code);\n }\n }\n // finally, set the `nonce` and `balance` on the account before returning\n // the serialized data\n const [nonce, balance] = await Promise.all(promises);\n account.nonce =\n nonce === \"0x0\" ? utils_1.RPCQUANTITY_EMPTY : utils_1.Quantity.from(nonce, true);\n account.balance =\n balance === \"0x0\" ? utils_1.RPCQUANTITY_EMPTY : utils_1.Quantity.from(balance);\n return account.serialize();\n };\n this.storageFromFallback = async (address, key, blockNumber) => {\n const result = await this.blockchain.fallback.request(GET_STORAGE_AT, [\n `0x${address.toString(\"hex\")}`,\n `0x${key.toString(\"hex\")}`,\n this.blockchain.fallback.selectValidForkBlockNumber(blockNumber)\n ]);\n if (!result)\n return null;\n // remove the `0x` and all leading 0 pairs:\n const compressed = result.replace(/^0x(00)*/, \"\");\n const buf = Buffer.from(compressed, \"hex\");\n return rlp_1.encode(buf);\n };\n this.db.commit = commit.bind(this.db);\n this.accounts = blockchain.accounts;\n this.blockNumber = this.blockchain.fallback.blockNumber;\n if (MetadataSingletons.has(db)) {\n this.metadata = MetadataSingletons.get(db);\n }\n else {\n this.metadata = subleveldown_1.default(db, \"f\", LEVELDOWN_OPTIONS);\n MetadataSingletons.set(db, this.metadata);\n }\n }\n set root(value) {\n this._root = value;\n }\n get root() {\n return this._root;\n }\n setContext(stateRoot, address, blockNumber) {\n this._root = stateRoot;\n this.address = address;\n this.blockNumber = blockNumber;\n }\n async put(key, val) {\n return super.put(key, val);\n }\n createDelKey(key) {\n const blockNum = this.blockNumber.toBuffer();\n return lexico.encode([blockNum, this.address, key]);\n }\n async keyWasDeleted(key) {\n return new Promise((resolve, reject) => {\n const selfAddress = this.address === null ? utils_1.BUFFER_EMPTY : this.address;\n let wasDeleted = false;\n const stream = this.metadata\n .createKeyStream({\n lte: this.createDelKey(key),\n reverse: true\n })\n .on(\"data\", data => {\n const delKey = lexico.decode(data);\n // const blockNumber = delKey[0];\n const address = delKey[1];\n const deletedKey = delKey[2];\n if (address.equals(selfAddress) && deletedKey.equals(key)) {\n wasDeleted = true;\n stream.destroy();\n }\n })\n .on(\"close\", () => resolve(wasDeleted))\n .on(\"error\", reject);\n });\n }\n async del(key) {\n await this.lock.wait();\n const hash = utils_1.keccak(key);\n const delKey = this.createDelKey(key);\n const metaDataPutPromise = this.metadata.put(delKey, utils_1.BUFFER_ZERO);\n const { node, stack } = await this.findPath(hash);\n if (node)\n await this._deleteNode(hash, stack);\n await metaDataPutPromise;\n this.lock.signal();\n }\n async get(key) {\n const value = await super.get(key);\n if (value != null) {\n return value;\n }\n if (await this.keyWasDeleted(key)) {\n return null;\n }\n if (this.address === null) {\n // if the trie context's address isn't set, our key represents an address:\n return this.accountFromFallback(ethereum_address_1.Address.from(key), this.blockNumber);\n }\n else {\n // otherwise the key represents storage at the given address:\n return this.storageFromFallback(this.address, key, this.blockNumber);\n }\n }\n /**\n * Returns a copy of the underlying trie with the interface of ForkTrie.\n * @param includeCheckpoints - If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.\n */\n copy() {\n const db = this.db.copy();\n const secureTrie = new ForkTrie(db._leveldb, this.root, this.blockchain);\n secureTrie.accounts = this.accounts;\n secureTrie.address = this.address;\n secureTrie.blockNumber = this.blockNumber;\n return secureTrie;\n }\n}\nexports.ForkTrie = ForkTrie;\n//# sourceMappingURL=trie.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpHandler = void 0;\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\n// TODO: support http2\nconst http_1 = __importStar(require(\"http\"));\nconst https_1 = __importStar(require(\"https\"));\nconst base_handler_1 = require(\"./base-handler\");\nconst deferred_1 = __importDefault(require(\"../deferred\"));\nconst { JSONRPC_PREFIX } = base_handler_1.BaseHandler;\nclass HttpHandler extends base_handler_1.BaseHandler {\n constructor(options, abortSignal) {\n super(options, abortSignal);\n this.url = options.fork.url;\n this.headers.accept = this.headers[\"content-type\"] = \"application/json\";\n if (this.url.protocol === \"http:\") {\n this._request = http_1.default.request;\n this.agent = new http_1.Agent({\n keepAlive: true,\n scheduling: \"fifo\"\n });\n }\n else {\n this._request = https_1.default.request;\n this.agent = new https_1.Agent({\n keepAlive: true,\n scheduling: \"fifo\"\n });\n }\n }\n handleLengthedResponse(res, length) {\n let buffer = Buffer.allocUnsafe(length);\n let offset = 0;\n return new Promise((resolve, reject) => {\n function data(message) {\n const messageLength = message.length;\n // note: Node will NOT send us more data than the content-length header\n // denotes, so we don't have to worry about it.\n message.copy(buffer, offset, 0, messageLength);\n offset += messageLength;\n }\n function end() {\n // note: Node doesn't check if the content-length matches, so we do that\n // here\n if (offset !== buffer.length) {\n // if we didn't receive enough data, throw\n reject(new Error(\"content-length mismatch\"));\n }\n else {\n resolve(buffer);\n }\n }\n res.on(\"data\", data);\n res.on(\"end\", end);\n });\n }\n handleChunkedResponse(res) {\n let buffer;\n return new Promise(resolve => {\n res.on(\"data\", (message) => {\n const chunk = message;\n if (buffer) {\n buffer = Buffer.concat([buffer, chunk], buffer.length + chunk.length);\n }\n else {\n buffer = Buffer.concat([chunk], chunk.length);\n }\n });\n res.on(\"end\", () => {\n resolve(buffer);\n });\n });\n }\n async request(method, params) {\n const data = JSON.stringify({ method, params });\n if (this.requestCache.has(data)) {\n //console.log(\"cache hit: \" + data);\n return this.requestCache.get(data);\n }\n const { protocol, hostname: host, port, pathname, search } = this.url;\n const requestOptions = {\n protocol,\n host,\n port,\n path: pathname + search,\n headers: this.headers,\n method: \"POST\",\n agent: this.agent,\n // Node v15 supports AbortSignals directly\n signal: this.abortSignal\n };\n const send = () => {\n if (this.abortSignal.aborted)\n return Promise.reject(new ethereum_utils_1.AbortError());\n //console.log(\"sending request: \" + data);\n const deferred = deferred_1.default();\n const postData = `${JSONRPC_PREFIX}${this.id++},${data.slice(1)}`;\n this.headers[\"content-length\"] = postData.length;\n const req = this._request(requestOptions);\n req.on(\"response\", res => {\n const { headers } = res;\n let buffer;\n // if we have a transfer-encoding we don't care about \"content-length\"\n // (per HTTP spec). We also don't care about invalid lengths\n if (\"transfer-encoding\" in headers) {\n buffer = this.handleChunkedResponse(res);\n }\n else {\n const length = headers[\"content-length\"] / 1;\n if (isNaN(length) || length <= 0) {\n buffer = this.handleChunkedResponse(res);\n }\n else {\n // we have a content-length; use it to pre-allocate the required memory\n buffer = this.handleLengthedResponse(res, length);\n }\n }\n // TODO: handle invalid JSON (throws on parse)?\n buffer.then(buffer => {\n try {\n deferred.resolve(JSON.parse(buffer));\n }\n catch {\n const resStr = buffer.toString();\n let shortStr;\n if (resStr.length > 340) {\n // truncate long errors so we don't blow up the user's logs\n shortStr = resStr.slice(0, 320) + \"…\";\n }\n else {\n shortStr = resStr;\n }\n let msg = `Invalid JSON response from fork provider:\\n\\n ${shortStr}`;\n if ((resStr.startsWith(\"invalid project id\") ||\n resStr.startsWith(\"project id required in the url\")) &&\n this.url.host.endsWith(\"infura.io\")) {\n msg += `\\n\\nThe provided fork url, ${this.url}, may be an invalid or incorrect Infura endpoint.`;\n msg += `\\nVisit https://infura.io/docs/ethereum for Infura documentation.`;\n }\n deferred.reject(new Error(msg));\n }\n });\n });\n // after 5 seconds of idle abort the request\n req.setTimeout(5000, req.abort.bind(req, null));\n req.on(\"error\", deferred.reject);\n req.write(postData);\n req.end();\n return deferred.promise.finally(() => this.requestCache.delete(data));\n };\n const promise = this.limiter.handle(send).then(result => {\n if (\"result\" in result) {\n return result.result;\n }\n else if (\"error\" in result) {\n throw result.error;\n }\n });\n this.requestCache.set(data, promise);\n return promise;\n }\n close() {\n // no op\n return Promise.resolve();\n }\n}\nexports.HttpHandler = HttpHandler;\n//# sourceMappingURL=http-handler.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _options, _providerOptions, _status, _app_1, _httpServer, _listenSocket_1, _connector, _websocketServer, _initializer;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Server = exports._DefaultServerOptions = exports.ServerStatus = void 0;\nconst options_1 = require(\"./options\");\nconst promise_allsettled_1 = __importDefault(require(\"promise.allsettled\"));\nconst aggregate_error_1 = __importDefault(require(\"aggregate-error\"));\nconst uws_js_unofficial_1 = __importDefault(require(\"@trufflesuite/uws-js-unofficial\"));\nconst flavors_1 = require(\"@ganache/flavors\");\nconst connector_loader_1 = __importDefault(require(\"./connector-loader\"));\nconst ws_server_1 = __importDefault(require(\"./servers/ws-server\"));\nconst http_server_1 = __importDefault(require(\"./servers/http-server\"));\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst DEFAULT_HOST = \"127.0.0.1\";\n/**\n * Server ready state constants.\n *\n * These are bit flags. This means that you can check if the status is:\n * * ready: `status === Status.ready` or `status & Status.ready !== 0`\n * * opening: `status === Status.opening` or `status & Status.opening !== 0`\n * * open: `status === Status.open` or `status & Status.open !== 0`\n * * opening || open: `status & Status.openingOrOpen !== 0` or `status & (Status.opening | Status.open) !== 0`\n * * closing: `status === Status.closing` or `status & Status.closing !== 0`\n * * closed: `status === Status.closed` or `status & Status.closed !== 0`\n * * closing || closed: `status & Status.closingOrClosed !== 0` or `status & (Status.closing | Status.closed) !== 0`\n */\nvar ServerStatus;\n(function (ServerStatus) {\n /**\n * The Server is in an unknown state; perhaps construction didn't succeed\n */\n ServerStatus[ServerStatus[\"unknown\"] = 0] = \"unknown\";\n /**\n * The Server has been constructed and is ready to be opened.\n */\n ServerStatus[ServerStatus[\"ready\"] = 1] = \"ready\";\n /**\n * The Server has started to open, but has not yet finished initialization.\n */\n ServerStatus[ServerStatus[\"opening\"] = 2] = \"opening\";\n /**\n * The Server is open and ready for connection.\n */\n ServerStatus[ServerStatus[\"open\"] = 4] = \"open\";\n /**\n * The Server is either opening or is already open\n */\n ServerStatus[ServerStatus[\"openingOrOpen\"] = 6] = \"openingOrOpen\";\n /**\n * The Server is in the process of closing.\n */\n ServerStatus[ServerStatus[\"closing\"] = 8] = \"closing\";\n /**\n * The Server is closed and not accepting new connections.\n */\n ServerStatus[ServerStatus[\"closed\"] = 16] = \"closed\";\n /**\n * The Server is either opening or is already open\n */\n ServerStatus[ServerStatus[\"closingOrClosed\"] = 24] = \"closingOrClosed\";\n})(ServerStatus = exports.ServerStatus || (exports.ServerStatus = {}));\n/**\n * For private use. May change in the future.\n * I don't don't think these options should be held in this `core` package.\n * @ignore\n */\nexports._DefaultServerOptions = options_1.serverDefaults;\n/**\n * @public\n */\nclass Server extends emittery_1.default {\n constructor(providerAndServerOptions = {\n flavor: flavors_1.DefaultFlavor\n }) {\n super();\n _options.set(this, void 0);\n _providerOptions.set(this, void 0);\n _status.set(this, ServerStatus.unknown);\n _app_1.set(this, null);\n _httpServer.set(this, null);\n _listenSocket_1.set(this, null);\n _connector.set(this, void 0);\n _websocketServer.set(this, null);\n _initializer.set(this, void 0);\n __classPrivateFieldSet(this, _options, options_1.serverOptionsConfig.normalize(providerAndServerOptions));\n __classPrivateFieldSet(this, _providerOptions, providerAndServerOptions);\n __classPrivateFieldSet(this, _status, ServerStatus.ready);\n // we need to start initializing now because `initialize` sets the\n // `provider` property... and someone might want to do:\n // const server = Ganache.server();\n // const provider = server.provider;\n // await server.listen(8545)\n const connector = (__classPrivateFieldSet(this, _connector, connector_loader_1.default.initialize(__classPrivateFieldGet(this, _providerOptions))));\n __classPrivateFieldSet(this, _initializer, this.initialize(connector));\n }\n get provider() {\n return __classPrivateFieldGet(this, _connector).provider;\n }\n get status() {\n return __classPrivateFieldGet(this, _status);\n }\n async initialize(connector) {\n const _app = (__classPrivateFieldSet(this, _app_1, uws_js_unofficial_1.default.App()));\n if (__classPrivateFieldGet(this, _options).server.ws) {\n __classPrivateFieldSet(this, _websocketServer, new ws_server_1.default(_app, connector, __classPrivateFieldGet(this, _options).server));\n }\n __classPrivateFieldSet(this, _httpServer, new http_server_1.default(_app, connector, __classPrivateFieldGet(this, _options).server));\n await connector.once(\"ready\");\n }\n listen(port, host, callback) {\n let hostname = null;\n if (typeof host === \"function\") {\n callback = host;\n hostname = null;\n }\n const callbackIsFunction = typeof callback === \"function\";\n const status = __classPrivateFieldGet(this, _status);\n if (status === ServerStatus.closing) {\n // if closing\n const err = new Error(`Cannot start server while it is closing.`);\n return callbackIsFunction\n ? process.nextTick(callback, err)\n : Promise.reject(err);\n }\n else if ((status & ServerStatus.openingOrOpen) !== 0) {\n // if opening or open\n const err = new Error(`Server is already open, or is opening, on port: ${port}.`);\n return callbackIsFunction\n ? process.nextTick(callback, err)\n : Promise.reject(err);\n }\n __classPrivateFieldSet(this, _status, ServerStatus.opening);\n const initializePromise = __classPrivateFieldGet(this, _initializer);\n // This `shim()` is necessary for `Promise.allSettled` to be shimmed\n // in `node@10`. We cannot use `allSettled([...])` directly due to\n // https://github.com/es-shims/Promise.allSettled/issues/5 without\n // upgrading Typescript. TODO: if Typescript is upgraded to 4.2.3+\n // then this line could be removed and `Promise.allSettled` below\n // could replaced with `allSettled`.\n promise_allsettled_1.default.shim();\n const promise = Promise.allSettled([\n initializePromise,\n new Promise((resolve) => {\n // Make sure we have *exclusive* use of this port.\n // https://github.com/uNetworking/uSockets/commit/04295b9730a4d413895fa3b151a7337797dcb91f#diff-79a34a07b0945668e00f805838601c11R51\n const LIBUS_LISTEN_EXCLUSIVE_PORT = 1;\n hostname\n ? __classPrivateFieldGet(this, _app_1).listen(hostname, port, LIBUS_LISTEN_EXCLUSIVE_PORT, resolve)\n : __classPrivateFieldGet(this, _app_1).listen(port, LIBUS_LISTEN_EXCLUSIVE_PORT, resolve);\n }).then(listenSocket => {\n if (listenSocket) {\n __classPrivateFieldSet(this, _status, ServerStatus.open);\n __classPrivateFieldSet(this, _listenSocket_1, listenSocket);\n }\n else {\n __classPrivateFieldSet(this, _status, ServerStatus.closed);\n const err = new Error(`listen EADDRINUSE: address already in use ${hostname || DEFAULT_HOST}:${port}.`);\n throw err;\n }\n })\n ]).then(async (promiseResults) => {\n const errors = [];\n if (promiseResults[0].status === \"rejected\") {\n errors.push(promiseResults[0].reason);\n }\n if (promiseResults[1].status === \"rejected\") {\n errors.push(promiseResults[1].reason);\n }\n if (errors.length === 0) {\n this.emit(\"open\");\n }\n else {\n __classPrivateFieldSet(this, _status, ServerStatus.unknown);\n try {\n await this.close();\n }\n catch (e) {\n errors.push(e);\n }\n if (errors.length > 1) {\n throw new aggregate_error_1.default(errors);\n }\n else {\n throw errors[0];\n }\n }\n });\n if (callbackIsFunction) {\n promise.then(() => callback(null)).catch(callback);\n }\n else {\n return promise;\n }\n }\n async close() {\n if (__classPrivateFieldGet(this, _status) === ServerStatus.opening) {\n // if opening\n throw new Error(`Cannot close server while it is opening.`);\n }\n else if ((__classPrivateFieldGet(this, _status) & ServerStatus.closingOrClosed) !== 0) {\n // if closing or closed\n throw new Error(`Server is already closing or closed.`);\n }\n __classPrivateFieldSet(this, _status, ServerStatus.closing);\n // clean up the websocket objects\n const _listenSocket = __classPrivateFieldGet(this, _listenSocket_1);\n __classPrivateFieldSet(this, _listenSocket_1, null);\n // close the socket to prevent any more connections\n if (_listenSocket !== null) {\n uws_js_unofficial_1.default.us_listen_socket_close(_listenSocket);\n }\n // close all the connected websockets:\n if (__classPrivateFieldGet(this, _websocketServer) !== null) {\n __classPrivateFieldGet(this, _websocketServer).close();\n }\n // and do all http cleanup, if any\n if (__classPrivateFieldGet(this, _httpServer) !== null) {\n __classPrivateFieldGet(this, _httpServer).close();\n }\n // cleanup the connector, provider, etc.\n if (__classPrivateFieldGet(this, _connector) !== null) {\n await __classPrivateFieldGet(this, _connector).close();\n }\n __classPrivateFieldSet(this, _status, ServerStatus.closed);\n __classPrivateFieldSet(this, _app_1, null);\n await this.emit(\"close\");\n }\n}\nexports.Server = Server;\n_options = new WeakMap(), _providerOptions = new WeakMap(), _status = new WeakMap(), _app_1 = new WeakMap(), _httpServer = new WeakMap(), _listenSocket_1 = new WeakMap(), _connector = new WeakMap(), _websocketServer = new WeakMap(), _initializer = new WeakMap();\nexports.default = Server;\n//# sourceMappingURL=server.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./connector\"), exports);\n__exportStar(require(\"./provider\"), exports);\n__exportStar(require(\"./api\"), exports);\nfunction b() { }\nfunction g(t) {\n return 123;\n}\ng({});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KNOWN_CHAINIDS = exports.WEI = exports.RPCQUANTITY_ONE = exports.RPCQUANTITY_ZERO = exports.RPCQUANTITY_EMPTY = exports.BUFFER_8_ZERO = exports.BUFFER_32_ZERO = exports.BUFFER_ZERO = exports.BUFFER_EMPTY = exports.ACCOUNT_ZERO = exports.BUFFER_256_ZERO = void 0;\nconst json_rpc_quantity_1 = require(\"../things/json-rpc/json-rpc-quantity\");\nexports.BUFFER_256_ZERO = Buffer.allocUnsafe(256).fill(0);\nexports.ACCOUNT_ZERO = exports.BUFFER_256_ZERO.slice(0, 20);\nexports.BUFFER_EMPTY = Buffer.allocUnsafe(0);\nexports.BUFFER_ZERO = exports.BUFFER_256_ZERO.slice(0, 1);\nexports.BUFFER_32_ZERO = exports.BUFFER_256_ZERO.slice(0, 32);\nexports.BUFFER_8_ZERO = exports.BUFFER_256_ZERO.slice(0, 8);\nexports.RPCQUANTITY_EMPTY = json_rpc_quantity_1.Quantity.from(exports.BUFFER_EMPTY, true);\nexports.RPCQUANTITY_ZERO = json_rpc_quantity_1.Quantity.from(exports.BUFFER_ZERO);\nexports.RPCQUANTITY_ONE = json_rpc_quantity_1.Quantity.from(1n);\nexports.WEI = 1000000000000000000n;\nexports.KNOWN_CHAINIDS = new Set([1, 3, 4, 5, 42]);\n//# sourceMappingURL=constants.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\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\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar secp256k1_1 = require(\"secp256k1\");\nvar random_1 = require(\"./random\");\nvar SECP256K1_PRIVATE_KEY_SIZE = 32;\nfunction createPrivateKey() {\n return __awaiter(this, void 0, void 0, function () {\n var pk;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!true) return [3 /*break*/, 2];\n return [4 /*yield*/, random_1.getRandomBytes(SECP256K1_PRIVATE_KEY_SIZE)];\n case 1:\n pk = _a.sent();\n if (secp256k1_1.privateKeyVerify(pk)) {\n return [2 /*return*/, pk];\n }\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n });\n}\nexports.createPrivateKey = createPrivateKey;\nfunction createPrivateKeySync() {\n while (true) {\n var pk = random_1.getRandomBytesSync(SECP256K1_PRIVATE_KEY_SIZE);\n if (secp256k1_1.privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\nexports.createPrivateKeySync = createPrivateKeySync;\n__export(require(\"secp256k1\"));\n//# sourceMappingURL=secp256k1.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar secp256k1_1 = require(\"secp256k1\");\nvar random_1 = require(\"./random\");\nvar SECP256K1_PRIVATE_KEY_SIZE = 32;\nfunction createPrivateKey() {\n return __awaiter(this, void 0, void 0, function () {\n var pk;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!true) return [3 /*break*/, 2];\n return [4 /*yield*/, random_1.getRandomBytes(SECP256K1_PRIVATE_KEY_SIZE)];\n case 1:\n pk = _a.sent();\n if (secp256k1_1.privateKeyVerify(pk)) {\n return [2 /*return*/, pk];\n }\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n });\n}\nexports.createPrivateKey = createPrivateKey;\nfunction createPrivateKeySync() {\n while (true) {\n var pk = random_1.getRandomBytesSync(SECP256K1_PRIVATE_KEY_SIZE);\n if (secp256k1_1.privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\nexports.createPrivateKeySync = createPrivateKeySync;\n__export(require(\"secp256k1\"));\n//# sourceMappingURL=secp256k1.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","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\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _hdKey, _randomRng, _randomBytes, _initializeAccounts, _lockAccount;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst secp256k1_1 = __importDefault(require(\"secp256k1\"));\nconst bip39_1 = require(\"bip39\");\nconst hdkey_1 = __importDefault(require(\"hdkey\"));\nconst seedrandom_1 = require(\"seedrandom\");\nconst crypto_1 = __importDefault(require(\"crypto\"));\nconst keccak_1 = __importDefault(require(\"keccak\"));\nconst fs_1 = require(\"fs\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\n//#region Constants\nconst SCRYPT_PARAMS = {\n dklen: 32,\n n: 1024,\n p: 8,\n r: 1\n};\nconst CIPHER = \"aes-128-ctr\";\nconst scrypt = (...args) => {\n return new Promise((resolve, reject) => {\n crypto_1.default.scrypt.call(crypto_1.default, ...args, (err, derivedKey) => {\n if (err) {\n return void reject(err);\n }\n return resolve(derivedKey);\n });\n });\n};\nconst uncompressedPublicKeyToAddress = (uncompressedPublicKey) => {\n const compresedPublicKey = secp256k1_1.default\n .publicKeyConvert(uncompressedPublicKey, false)\n .slice(1);\n const hasher = keccak_1.default(\"keccak256\");\n hasher._state.absorb(compresedPublicKey);\n return ethereum_address_1.Address.from(hasher.digest().slice(-20));\n};\nconst asUUID = (uuid) => {\n return `${uuid.toString(\"hex\", 0, 4)}-${uuid.toString(\"hex\", 4, 6)}-${uuid.toString(\"hex\", 6, 8)}-${uuid.toString(\"hex\", 8, 10)}-${uuid.toString(\"hex\", 10)}`;\n};\nclass Wallet {\n constructor(opts) {\n this.knownAccounts = new Set();\n this.encryptedKeyFiles = new Map();\n this.unlockedAccounts = new Map();\n this.lockTimers = new Map();\n _hdKey.set(this, void 0);\n _randomRng.set(this, void 0);\n _randomBytes.set(this, (length) => {\n // Since this is a mock RPC library, the rng doesn't need to be\n // cryptographically secure, and determinism is desired.\n const buf = Buffer.allocUnsafe(length);\n const rand = __classPrivateFieldGet(this, _randomRng);\n for (let i = 0; i < length; i++) {\n buf[i] = (rand() * 256) | 0; // generates a random number from 0 to 255\n }\n return buf;\n });\n _initializeAccounts.set(this, (options) => {\n // convert a potentially fractional balance of Ether to WEI\n const balanceParts = options.defaultBalance.toString().split(\".\", 2);\n const significand = BigInt(balanceParts[0]);\n const fractionalStr = balanceParts[1] || \"0\";\n const fractional = BigInt(fractionalStr);\n const magnitude = 10n ** BigInt(fractionalStr.length);\n const defaultBalanceInWei = utils_1.WEI * significand + fractional * (utils_1.WEI / magnitude);\n const etherInWei = utils_1.Quantity.from(defaultBalanceInWei);\n let accounts;\n let givenAccounts = options.accounts;\n let accountsLength;\n if (givenAccounts && (accountsLength = givenAccounts.length) !== 0) {\n const hdKey = __classPrivateFieldGet(this, _hdKey);\n const hdPath = options.hdPath;\n accounts = Array(accountsLength);\n for (let i = 0; i < accountsLength; i++) {\n const account = givenAccounts[i];\n const secretKey = account.secretKey;\n let privateKey;\n let address;\n if (!secretKey) {\n const acct = hdKey.derive(hdPath + i);\n address = uncompressedPublicKeyToAddress(acct.publicKey);\n privateKey = utils_1.Data.from(acct.privateKey);\n accounts[i] = Wallet.createAccount(utils_1.Quantity.from(account.balance), privateKey, address);\n }\n else {\n privateKey = utils_1.Data.from(secretKey);\n const a = (accounts[i] = Wallet.createAccountFromPrivateKey(privateKey));\n a.balance = utils_1.Quantity.from(account.balance);\n }\n }\n }\n else {\n const numerOfAccounts = options.totalAccounts;\n if (numerOfAccounts) {\n accounts = Array(numerOfAccounts);\n const hdPath = options.hdPath;\n const hdKey = __classPrivateFieldGet(this, _hdKey);\n for (let index = 0; index < numerOfAccounts; index++) {\n const acct = hdKey.derive(hdPath + index);\n const address = uncompressedPublicKeyToAddress(acct.publicKey);\n const privateKey = utils_1.Data.from(acct.privateKey);\n accounts[index] = Wallet.createAccount(etherInWei, privateKey, address);\n }\n }\n else {\n throw new Error(\"Cannot initialize chain: either options.accounts or options.total_accounts must be specified\");\n }\n }\n return accounts;\n });\n _lockAccount.set(this, (lowerAddress) => {\n this.lockTimers.delete(lowerAddress);\n this.unlockedAccounts.delete(lowerAddress);\n return true;\n });\n __classPrivateFieldSet(this, _hdKey, hdkey_1.default.fromMasterSeed(bip39_1.mnemonicToSeedSync(opts.mnemonic, null)));\n // create a RNG from our initial starting conditions (opts.mnemonic)\n __classPrivateFieldSet(this, _randomRng, seedrandom_1.alea(\"ganache \" + opts.mnemonic));\n const initialAccounts = (this.initialAccounts = __classPrivateFieldGet(this, _initializeAccounts).call(this, opts));\n const l = initialAccounts.length;\n const knownAccounts = this.knownAccounts;\n const unlockedAccounts = this.unlockedAccounts;\n //#region Unlocked Accounts\n const givenUnlockedAccounts = opts.unlockedAccounts;\n if (givenUnlockedAccounts) {\n const ul = givenUnlockedAccounts.length;\n for (let i = 0; i < ul; i++) {\n let arg = givenUnlockedAccounts[i];\n let address;\n switch (typeof arg) {\n case \"string\":\n // `toLowerCase` so we handle uppercase `0X` formats\n const addressOrIndex = arg.toLowerCase();\n if (addressOrIndex.indexOf(\"0x\") === 0) {\n address = addressOrIndex;\n break;\n }\n else {\n // try to convert the arg string to a number.\n // don't use parseInt because strings like `\"123abc\"` parse\n // to `123`, and there is probably an error on the user's side we'd\n // want to uncover.\n const index = arg - 0;\n // if we don't have a valid number, or the number isn't a valid JS\n // integer (no bigints or decimals, please), throw an error.\n if (!Number.isSafeInteger(index)) {\n throw new Error(`Invalid value in wallet.unlockedAccounts: ${arg}`);\n }\n arg = index;\n // not `break`ing here because I want this to fall through to the\n // `\"number\"` case below.\n // Refactor it if you want.\n // break; // no break, please.\n }\n case \"number\":\n const account = initialAccounts[arg];\n if (account == null) {\n throw new Error(`Account at index ${arg} not found. Max index available is ${l - 1}.`);\n }\n address = account.address.toString().toLowerCase();\n break;\n default:\n throw new Error(`Invalid value specified in unlocked_accounts`);\n }\n if (unlockedAccounts.has(address))\n continue;\n // if we don't have the secretKey for an account we use `null`\n unlockedAccounts.set(address, null);\n }\n }\n //#endregion\n //#region Configure Known + Unlocked Accounts\n const accountsCache = (this.addresses = Array(l));\n for (let i = 0; i < l; i++) {\n const account = initialAccounts[i];\n const address = account.address;\n const strAddress = address.toString();\n accountsCache[i] = strAddress;\n knownAccounts.add(strAddress);\n // if the `secure` option has been set do NOT add these accounts to the\n // unlockedAccounts, unless the account was already added to\n // unlockedAccounts, in which case we need to add the account's private\n // key.\n if (opts.secure && !unlockedAccounts.has(strAddress))\n continue;\n unlockedAccounts.set(strAddress, account.privateKey);\n }\n //#endregion\n //#region save accounts to disk\n if (opts.accountKeysPath != null) {\n const fileData = {\n addresses: {},\n private_keys: {}\n };\n unlockedAccounts.forEach((privateKey, address) => {\n fileData.addresses[address] = address;\n fileData.private_keys[address] = privateKey;\n });\n // WARNING: Do not turn this to an async method without\n // making a Wallet.initialize() function and calling it via\n // Provider.initialize(). No async methods in constructors.\n // writeFileSync here is acceptable.\n fs_1.writeFileSync(opts.accountKeysPath, JSON.stringify(fileData));\n }\n //#endregion\n }\n async encrypt(privateKey, passphrase) {\n const random = __classPrivateFieldGet(this, _randomBytes).call(this, 32 + 16 + 16);\n const salt = random.slice(0, 32); // first 32 bytes\n const iv = random.slice(32, 32 + 16); // next 16 bytes\n const uuid = random.slice(32 + 16); // last 16 bytes\n const derivedKey = await scrypt(passphrase, salt, SCRYPT_PARAMS.dklen, {\n ...SCRYPT_PARAMS,\n N: SCRYPT_PARAMS.n\n });\n const cipher = crypto_1.default.createCipheriv(CIPHER, derivedKey.slice(0, 16), iv);\n const ciphertext = Buffer.concat([\n cipher.update(privateKey.toBuffer()),\n cipher.final()\n ]);\n const mac = keccak_1.default(\"keccak256\")\n .update(Buffer.concat([derivedKey.slice(16, 32), ciphertext]))\n .digest();\n return {\n crypto: {\n cipher: CIPHER,\n ciphertext: utils_1.Data.from(ciphertext),\n cipherparams: {\n iv: utils_1.Data.from(iv)\n },\n kdf: \"scrypt\",\n kdfParams: {\n ...SCRYPT_PARAMS,\n salt: utils_1.Data.from(salt)\n },\n mac: utils_1.Data.from(mac)\n },\n id: asUUID(uuid),\n version: 3\n };\n }\n async decrypt(keyfile, passphrase) {\n const crypt = keyfile.crypto;\n if (crypt.cipher !== CIPHER) {\n throw new Error(`keyfile cypher must be \"${CIPHER}\"`);\n }\n if (crypt.kdf !== \"scrypt\") {\n throw new Error(`keyfile kdf must be \"script\"`);\n }\n const kdfParams = crypt.kdfParams;\n const salt = kdfParams.salt;\n const mac = crypt.mac;\n const ciphertext = crypt.ciphertext.toBuffer();\n let derivedKey;\n let localMac;\n if (passphrase != null) {\n try {\n derivedKey = await scrypt(passphrase, salt.toBuffer(), kdfParams.dklen, { ...kdfParams, N: kdfParams.n });\n localMac = keccak_1.default(\"keccak256\")\n .update(Buffer.concat([derivedKey.slice(16, 32), ciphertext]))\n .digest();\n }\n catch {\n localMac = null;\n }\n }\n if (!localMac || !mac.toBuffer().equals(localMac)) {\n throw new Error(\"could not decrypt key with given password\");\n }\n const decipher = crypto_1.default.createDecipheriv(crypt.cipher, derivedKey.slice(0, 16), crypt.cipherparams.iv.toBuffer());\n const plaintext = decipher.update(ciphertext);\n return plaintext;\n }\n static createAccount(balance, privateKey, address) {\n const account = new ethereum_utils_1.Account(address);\n account.privateKey = privateKey;\n account.balance = balance;\n return account;\n }\n static createAccountFromPrivateKey(privateKey) {\n const address = ethereum_address_1.Address.from(ethereumjs_util_1.privateToAddress(privateKey.toBuffer()));\n const account = new ethereum_utils_1.Account(address);\n account.privateKey = privateKey;\n return account;\n }\n createRandomAccount() {\n // create some seeded deterministic psuedo-randomness based on the chain's\n // initial starting conditions\n const seed = __classPrivateFieldGet(this, _randomBytes).call(this, 128);\n const acct = hdkey_1.default.fromMasterSeed(seed);\n const address = uncompressedPublicKeyToAddress(acct.publicKey);\n const privateKey = utils_1.Data.from(acct.privateKey);\n return Wallet.createAccount(utils_1.RPCQUANTITY_ZERO, privateKey, address);\n }\n async unlockAccount(lowerAddress, passphrase, duration) {\n const encryptedKeyFile = this.encryptedKeyFiles.get(lowerAddress);\n if (encryptedKeyFile == null) {\n return false;\n }\n const secretKey = await this.decrypt(encryptedKeyFile, passphrase);\n const existingTimer = this.lockTimers.get(lowerAddress);\n if (existingTimer) {\n clearTimeout(existingTimer);\n }\n // a duration <= 0 will remain unlocked\n const durationMs = (duration * 1000) | 0;\n if (durationMs > 0) {\n const timeout = setTimeout(__classPrivateFieldGet(this, _lockAccount), durationMs, lowerAddress);\n utils_1.unref(timeout);\n this.lockTimers.set(lowerAddress, timeout);\n }\n this.unlockedAccounts.set(lowerAddress, utils_1.Data.from(secretKey));\n return true;\n }\n async unlockUnknownAccount(lowerAddress, duration) {\n if (this.unlockedAccounts.has(lowerAddress)) {\n // already unlocked, return `false` since we didn't do anything\n return false;\n }\n // if we \"know\" about this account, it cannot be unlocked this way\n if (this.knownAccounts.has(lowerAddress)) {\n throw new Error(\"cannot unlock known/personal account\");\n }\n // a duration <= 0 will remain unlocked\n const durationMs = (duration * 1000) | 0;\n if (durationMs > 0) {\n const timeout = setTimeout(__classPrivateFieldGet(this, _lockAccount), durationMs, lowerAddress);\n utils_1.unref(timeout);\n this.lockTimers.set(lowerAddress, timeout);\n }\n // otherwise, unlock it!\n this.unlockedAccounts.set(lowerAddress, null);\n return true;\n }\n lockAccount(lowerAddress) {\n if (!this.unlockedAccounts.has(lowerAddress))\n return false;\n clearTimeout(this.lockTimers.get(lowerAddress));\n return __classPrivateFieldGet(this, _lockAccount).call(this, lowerAddress);\n }\n}\nexports.default = Wallet;\n_hdKey = new WeakMap(), _randomRng = new WeakMap(), _randomBytes = new WeakMap(), _initializeAccounts = new WeakMap(), _lockAccount = new WeakMap();\n//# sourceMappingURL=wallet.js.map","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _state, _miner, _blockBeingSavedPromise, _timer, _database, _options, _instamine, _saveNewBlock, _emitNewBlock, _getTransactionLogOutput, _handleNewBlockData, _readyNextBlock, _isPaused, _commitAccounts, _initializeGenesisBlock, _timeAdjustment, _currentTime, _deleteBlockData, _snapshots, _traceTransaction, _prepareNextBlock;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Status = void 0;\nconst os_1 = require(\"os\");\nconst miner_1 = __importDefault(require(\"./miner/miner\"));\nconst database_1 = __importDefault(require(\"./database\"));\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst common_1 = __importDefault(require(\"@ethereumjs/common\"));\nconst vm_1 = __importDefault(require(\"@ethereumjs/vm\"));\nconst exceptions_1 = require(\"@ethereumjs/vm/dist/exceptions\");\nconst utils_1 = require(\"@ganache/utils\");\nconst account_manager_1 = __importDefault(require(\"./data-managers/account-manager\"));\nconst block_manager_1 = __importDefault(require(\"./data-managers/block-manager\"));\nconst blocklog_manager_1 = __importDefault(require(\"./data-managers/blocklog-manager\"));\nconst transaction_manager_1 = __importDefault(require(\"./data-managers/transaction-manager\"));\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nconst ethereum_transaction_1 = require(\"@ganache/ethereum-transaction\");\nconst ethereum_block_1 = require(\"@ganache/ethereum-block\");\nconst run_transactions_1 = require(\"./helpers/run-transactions\");\nconst state_manager_1 = require(\"./forking/state-manager\");\nconst index_1 = require(\"@ethereumjs/vm/dist/state/index\");\nconst trie_1 = require(\"./helpers/trie\");\nconst trie_2 = require(\"./forking/trie\");\nconst precompiles_1 = require(\"./helpers/precompiles\");\nconst transaction_receipt_manager_1 = __importDefault(require(\"./data-managers/transaction-receipt-manager\"));\nvar Status;\n(function (Status) {\n // Flags\n Status[Status[\"started\"] = 1] = \"started\";\n Status[Status[\"starting\"] = 2] = \"starting\";\n Status[Status[\"stopped\"] = 4] = \"stopped\";\n Status[Status[\"stopping\"] = 8] = \"stopping\";\n Status[Status[\"paused\"] = 16] = \"paused\"; // 0001 0000\n})(Status = exports.Status || (exports.Status = {}));\n/**\n * Sets the provided VM state manager's state root *without* first\n * checking for checkpoints or flushing the existing cache.\n *\n * Useful if you know the state manager is not in a checkpoint and its internal\n * cache is safe to discard.\n *\n * @param stateManager\n * @param stateRoot\n */\nfunction setStateRootSync(stateManager, stateRoot) {\n stateManager._trie.root = stateRoot;\n stateManager._cache.clear();\n stateManager._storageTries = {};\n}\nfunction makeTrie(blockchain, db, root) {\n if (blockchain.fallback) {\n return new trie_2.ForkTrie(db, root ? root.toBuffer() : null, blockchain);\n }\n else {\n return new trie_1.GanacheTrie(db, root ? root.toBuffer() : null, blockchain);\n }\n}\nfunction createCommon(chainId, networkId, hardfork) {\n const common = common_1.default.forCustomChain(\n // if we were given a chain id that matches a real chain, use it\n // NOTE: I don't think Common serves a purpose other than instructing the\n // VM what hardfork is in use. But just incase things change in the future\n // its configured \"more correctly\" here.\n utils_1.KNOWN_CHAINIDS.has(chainId) ? chainId : 1, {\n name: \"ganache\",\n networkId: networkId,\n chainId: chainId,\n comment: \"Local test network\"\n }, hardfork);\n // the VM likes to listen to \"hardforkChanged\" events from common, but:\n // a) we don't currently support changing hardforks\n // b) it can cause `MaxListenersExceededWarning`.\n // Since we don't need it we overwrite .on to make it be quiet.\n common.on = () => { };\n return common;\n}\nclass Blockchain extends emittery_1.default.Typed {\n /**\n * Initializes the underlying Database and handles synchronization between\n * the API and the database.\n *\n * Emits a `ready` event once the database and all dependencies are fully\n * initialized.\n * @param options\n */\n constructor(options, coinbase, fallback) {\n super();\n _state.set(this, Status.starting);\n _miner.set(this, void 0);\n _blockBeingSavedPromise.set(this, void 0);\n /**\n * When not instamining (blockTime > 0) this value holds the timeout timer.\n */\n _timer.set(this, null);\n _database.set(this, void 0);\n _options.set(this, void 0);\n _instamine.set(this, void 0);\n _saveNewBlock.set(this, ({ block, serialized, storageKeys, transactions }) => {\n const { blocks } = this;\n blocks.latest = block;\n return __classPrivateFieldGet(this, _database).batch(() => {\n const blockHash = block.hash();\n const blockHeader = block.header;\n const blockNumberQ = blockHeader.number;\n const blockNumber = blockNumberQ.toBuffer();\n const blockLogs = ethereum_utils_1.BlockLogs.create(blockHash);\n const timestamp = blockHeader.timestamp;\n const timestampStr = new Date(timestamp.toNumber() * 1000).toString();\n const logOutput = [];\n transactions.forEach((tx, i) => {\n const hash = tx.hash.toBuffer();\n const index = utils_1.Quantity.from(i);\n // save transaction to the database\n const serialized = tx.serializeForDb(blockHash, blockNumberQ, index);\n this.transactions.set(hash, serialized);\n // save receipt to the database\n const receipt = tx.getReceipt();\n const encodedReceipt = receipt.serialize(true);\n this.transactionReceipts.set(hash, encodedReceipt);\n // collect block logs\n tx.getLogs().forEach(blockLogs.append.bind(blockLogs, index, tx.hash));\n // prepare log output\n logOutput.push(__classPrivateFieldGet(this, _getTransactionLogOutput).call(this, hash, receipt, blockHeader.number, timestampStr, tx.execException));\n });\n // save storage keys to the database\n storageKeys.forEach(value => {\n this.storageKeys.put(value.hashedKey, value.key);\n });\n blockLogs.blockNumber = blockHeader.number;\n // save block logs to the database\n this.blockLogs.set(blockNumber, blockLogs.serialize());\n // save block to the database\n blocks.putBlock(blockNumber, blockHash, serialized);\n // output to the log, if we have data to output\n if (logOutput.length > 0)\n __classPrivateFieldGet(this, _options).logging.logger.log(logOutput.join(os_1.EOL));\n return { block, blockLogs, transactions };\n });\n });\n _emitNewBlock.set(this, async (blockInfo) => {\n const options = __classPrivateFieldGet(this, _options);\n const { block, blockLogs, transactions } = blockInfo;\n // emit the block once everything has been fully saved to the database\n transactions.forEach(transaction => {\n transaction.finalize(\"confirmed\", transaction.execException);\n });\n if (__classPrivateFieldGet(this, _instamine) && options.miner.legacyInstamine) {\n // in legacy instamine mode we must delay the broadcast of new blocks\n await new Promise(resolve => {\n process.nextTick(async () => {\n // emit block logs first so filters can pick them up before\n // block listeners are notified\n await Promise.all([\n this.emit(\"blockLogs\", blockLogs),\n this.emit(\"block\", block)\n ]);\n resolve(void 0);\n });\n });\n }\n else {\n // emit block logs first so filters can pick them up before\n // block listeners are notified\n await Promise.all([\n this.emit(\"blockLogs\", blockLogs),\n this.emit(\"block\", block)\n ]);\n }\n return blockInfo;\n });\n _getTransactionLogOutput.set(this, (hash, receipt, blockNumber, timestamp, error) => {\n let str = `${os_1.EOL} Transaction: ${utils_1.Data.from(hash)}${os_1.EOL}`;\n const contractAddress = receipt.contractAddress;\n if (contractAddress != null) {\n str += ` Contract created: ${ethereum_address_1.Address.from(contractAddress)}${os_1.EOL}`;\n }\n str += ` Gas usage: ${utils_1.Quantity.from(receipt.raw[1]).toNumber()}${os_1.EOL}\n Block number: ${blockNumber.toNumber()}${os_1.EOL}\n Block time: ${timestamp}${os_1.EOL}`;\n if (error) {\n str += ` Runtime error: ${error.data.message}${os_1.EOL}`;\n if (error.data.reason) {\n str += ` Revert reason: ${error.data.reason}${os_1.EOL}`;\n }\n }\n return str;\n });\n _handleNewBlockData.set(this, async (blockData) => {\n __classPrivateFieldSet(this, _blockBeingSavedPromise, __classPrivateFieldGet(this, _blockBeingSavedPromise).then(() => __classPrivateFieldGet(this, _saveNewBlock).call(this, blockData))\n .then(__classPrivateFieldGet(this, _emitNewBlock)));\n return __classPrivateFieldGet(this, _blockBeingSavedPromise);\n });\n _readyNextBlock.set(this, (previousBlock, timestamp) => {\n const previousHeader = previousBlock.header;\n const previousNumber = previousHeader.number.toBigInt() || 0n;\n return new ethereum_block_1.RuntimeBlock(utils_1.Quantity.from(previousNumber + 1n), previousBlock.hash(), this.coinbase, __classPrivateFieldGet(this, _options).miner.blockGasLimit.toBuffer(), utils_1.Quantity.from(timestamp == null ? __classPrivateFieldGet(this, _currentTime).call(this) : timestamp), __classPrivateFieldGet(this, _options).miner.difficulty, previousBlock.header.totalDifficulty);\n });\n this.isStarted = () => {\n return __classPrivateFieldGet(this, _state) === Status.started;\n };\n this.mine = async (maxTransactions, timestamp, onlyOneBlock = false) => {\n await __classPrivateFieldGet(this, _blockBeingSavedPromise);\n const nextBlock = __classPrivateFieldGet(this, _readyNextBlock).call(this, this.blocks.latest, timestamp);\n return __classPrivateFieldGet(this, _miner).mine(nextBlock, maxTransactions, onlyOneBlock);\n };\n _isPaused.set(this, () => {\n return (__classPrivateFieldGet(this, _state) & Status.paused) !== 0;\n });\n this.createVmFromStateTrie = async (stateTrie, allowUnlimitedContractSize, activatePrecompile) => {\n const blocks = this.blocks;\n // ethereumjs vm doesn't use the callback style anymore\n const blockchain = {\n getBlock: async (number) => {\n const block = await blocks.get(number.toBuffer()).catch(_ => null);\n return block ? { hash: () => block.hash().toBuffer() } : null;\n }\n };\n const common = this.common;\n const vm = await vm_1.default.create({\n state: stateTrie,\n activatePrecompiles: false,\n common,\n allowUnlimitedContractSize,\n blockchain,\n stateManager: this.fallback\n ? new state_manager_1.ForkStateManager({ common, trie: stateTrie })\n : new index_1.DefaultStateManager({ common, trie: stateTrie })\n });\n if (activatePrecompile) {\n await precompiles_1.activatePrecompiles(vm.stateManager);\n }\n return vm;\n };\n _commitAccounts.set(this, (accounts) => {\n return Promise.all(accounts.map(account => this.trie.put(account.address.toBuffer(), account.serialize())));\n });\n _initializeGenesisBlock.set(this, async (timestamp, blockGasLimit, initialAccounts) => {\n if (this.fallback != null) {\n // commit accounts, but for forking.\n const sm = this.vm.stateManager;\n this.vm.stateManager.checkpoint();\n initialAccounts.forEach(acc => {\n const a = { buf: acc.address.toBuffer() };\n sm._cache.put(a, acc);\n sm.touchAccount(a);\n });\n await this.vm.stateManager.commit();\n // create the genesis block\n const genesis = new ethereum_block_1.RuntimeBlock(utils_1.Quantity.from(this.fallback.block.header.number.toBigInt() + 1n), this.fallback.block.hash(), this.coinbase, blockGasLimit.toBuffer(), utils_1.Quantity.from(timestamp), __classPrivateFieldGet(this, _options).miner.difficulty, this.fallback.block.header.totalDifficulty);\n // store the genesis block in the database\n const { block, serialized } = genesis.finalize(ethereumjs_util_1.KECCAK256_RLP, ethereumjs_util_1.KECCAK256_RLP, utils_1.BUFFER_256_ZERO, this.trie.root, 0n, __classPrivateFieldGet(this, _options).miner.extraData, [], new Map());\n const hash = block.hash();\n return this.blocks\n .putBlock(block.header.number.toBuffer(), hash, serialized)\n .then(_ => ({\n block,\n blockLogs: ethereum_utils_1.BlockLogs.create(hash)\n }));\n }\n await __classPrivateFieldGet(this, _commitAccounts).call(this, initialAccounts);\n // README: block `0` is weird in that a `0` _should_ be hashed as `[]`,\n // instead of `[0]`, so we set it to `RPCQUANTITY_EMPTY` instead of\n // `RPCQUANTITY_ZERO` here. A few lines down in this function we swap\n // this `RPCQUANTITY_EMPTY` for `RPCQUANTITY_ZERO`. This is all so we don't\n // have to have a \"treat empty as 0` check in every function that uses the\n // \"latest\" block (which this genesis block will be for brief moment).\n const rawBlockNumber = utils_1.RPCQUANTITY_EMPTY;\n // create the genesis block\n const genesis = new ethereum_block_1.RuntimeBlock(rawBlockNumber, utils_1.Quantity.from(utils_1.BUFFER_32_ZERO), this.coinbase, blockGasLimit.toBuffer(), utils_1.Quantity.from(timestamp), __classPrivateFieldGet(this, _options).miner.difficulty, utils_1.RPCQUANTITY_ZERO // we start the totalDifficulty at 0\n );\n // store the genesis block in the database\n const { block, serialized } = genesis.finalize(ethereumjs_util_1.KECCAK256_RLP, ethereumjs_util_1.KECCAK256_RLP, utils_1.BUFFER_256_ZERO, this.trie.root, 0n, __classPrivateFieldGet(this, _options).miner.extraData, [], new Map());\n // README: set the block number to an actual 0 now.\n block.header.number = utils_1.RPCQUANTITY_ZERO;\n const hash = block.hash();\n return this.blocks\n .putBlock(block.header.number.toBuffer(), hash, serialized)\n .then(_ => ({\n block,\n blockLogs: ethereum_utils_1.BlockLogs.create(hash)\n }));\n });\n _timeAdjustment.set(this, 0);\n /**\n * Returns the timestamp, adjusted by the timeAdjustment offset, in seconds.\n */\n _currentTime.set(this, () => {\n return Math.floor((Date.now() + __classPrivateFieldGet(this, _timeAdjustment)) / 1000);\n });\n _deleteBlockData.set(this, (blocksToDelete) => {\n return __classPrivateFieldGet(this, _database).batch(() => {\n const { blocks, transactions, transactionReceipts, blockLogs } = this;\n blocksToDelete.forEach(block => {\n block.getTransactions().forEach(tx => {\n const txHash = tx.hash.toBuffer();\n transactions.del(txHash);\n transactionReceipts.del(txHash);\n });\n const blockNum = block.header.number.toBuffer();\n blocks.del(blockNum);\n blocks.del(block.hash().toBuffer());\n blockLogs.del(blockNum);\n });\n });\n });\n // TODO(stability): this.#snapshots is a potential unbound memory suck. Caller\n // could call `evm_snapshot` over and over to grow the snapshot stack\n // indefinitely. `this.#snapshots.blocks` is even worse. To solve this we\n // might need to store in the db. An unlikely real problem, but possible.\n _snapshots.set(this, {\n snaps: [],\n blocks: null,\n unsubscribeFromBlocks: null\n });\n _traceTransaction.set(this, async (trie, newBlock, options, keys, contractAddress) => {\n let currentDepth = -1;\n const storageStack = [];\n const blocks = this.blocks;\n // ethereumjs vm doesn't use the callback style anymore\n const blockchain = {\n getBlock: async (number) => {\n const block = await blocks.get(number.toBuffer()).catch(_ => null);\n return block ? { hash: () => block.hash().toBuffer() } : null;\n }\n };\n const common = this.common;\n const vm = await vm_1.default.create({\n state: trie,\n activatePrecompiles: false,\n common,\n allowUnlimitedContractSize: this.vm.allowUnlimitedContractSize,\n blockchain,\n stateManager: this.fallback\n ? new state_manager_1.ForkStateManager({ common, trie: trie })\n : new index_1.DefaultStateManager({ common, trie: trie })\n });\n const storage = {};\n const transaction = newBlock.transactions[newBlock.transactions.length - 1];\n // TODO: gas could go theoretically go over Number.MAX_SAFE_INTEGER.\n // (Ganache v2 didn't handle this possibility either, so it hasn't been\n // updated yet)\n let gas = 0;\n const structLogs = [];\n const TraceData = ethereum_utils_1.TraceDataFactory();\n const stepListener = async (event, next) => {\n // See these docs:\n // https://github.com/ethereum/go-ethereum/wiki/Management-APIs\n const gasLeft = event.gasLeft.toNumber();\n const totalGasUsedAfterThisStep = transaction.gasLimit.toNumber() - gasLeft;\n const gasUsedPreviousStep = totalGasUsedAfterThisStep - gas;\n gas += gasUsedPreviousStep;\n const memory = [];\n if (options.disableMemory !== true) {\n // We get the memory as one large array.\n // Let's cut it up into 32 byte chunks as required by the spec.\n let index = 0;\n while (index < event.memory.length) {\n const slice = event.memory.slice(index, index + 32);\n memory.push(TraceData.from(Buffer.from(slice)));\n index += 32;\n }\n }\n const stack = [];\n if (options.disableStack !== true) {\n for (const stackItem of event.stack) {\n stack.push(TraceData.from(stackItem.toArrayLike(Buffer)));\n }\n }\n const structLog = {\n depth: event.depth,\n error: \"\",\n gas: gasLeft,\n gasCost: 0,\n memory,\n op: event.opcode.name,\n pc: event.pc,\n stack,\n storage: null\n };\n // The gas difference calculated for each step is indicative of gas consumed in\n // the previous step. Gas consumption in the final step will always be zero.\n if (structLogs.length) {\n structLogs[structLogs.length - 1].gasCost = gasUsedPreviousStep;\n }\n if (options.disableStorage === true) {\n // Add the struct log as is - nothing more to do.\n structLogs.push(structLog);\n next();\n }\n else {\n const { depth: eventDepth } = event;\n if (currentDepth > eventDepth) {\n storageStack.pop();\n }\n else if (currentDepth < eventDepth) {\n storageStack.push(new ethereum_utils_1.TraceStorageMap());\n }\n currentDepth = eventDepth;\n switch (event.opcode.name) {\n case \"SSTORE\": {\n const key = stack[stack.length - 1];\n const value = stack[stack.length - 2];\n // new TraceStorageMap() here creates a shallow clone, to prevent other steps from overwriting\n structLog.storage = new ethereum_utils_1.TraceStorageMap(storageStack[eventDepth]);\n // Tell vm to move on to the next instruction. See below.\n structLogs.push(structLog);\n next();\n // assign after callback because this storage change actually takes\n // effect _after_ this opcode executes\n storageStack[eventDepth].set(key, value);\n break;\n }\n case \"SLOAD\": {\n const key = stack[stack.length - 1];\n const result = await vm.stateManager.getContractStorage(event.address, key.toBuffer());\n const value = TraceData.from(result);\n storageStack[eventDepth].set(key, value);\n // new TraceStorageMap() here creates a shallow clone, to prevent other steps from overwriting\n structLog.storage = new ethereum_utils_1.TraceStorageMap(storageStack[eventDepth]);\n structLogs.push(structLog);\n next();\n break;\n }\n default:\n // new TraceStorageMap() here creates a shallow clone, to prevent other steps from overwriting\n structLog.storage = new ethereum_utils_1.TraceStorageMap(storageStack[eventDepth]);\n structLogs.push(structLog);\n next();\n }\n }\n };\n const beforeTxListener = async (tx) => {\n if (tx === transaction) {\n if (keys && contractAddress) {\n const database = __classPrivateFieldGet(this, _database);\n return Promise.all(keys.map(async (key) => {\n // get the raw key using the hashed key\n let rawKey = await database.storageKeys.get(key);\n const result = await vm.stateManager.getContractStorage({ buf: ethereum_address_1.Address.from(contractAddress).toBuffer() }, rawKey);\n storage[utils_1.Data.from(key, key.length).toString()] = {\n key: utils_1.Data.from(rawKey, rawKey.length),\n value: utils_1.Data.from(result, 32)\n };\n }));\n }\n vm.on(\"step\", stepListener);\n }\n };\n const removeListeners = () => {\n vm.removeListener(\"step\", stepListener);\n vm.removeListener(\"beforeTx\", beforeTxListener);\n };\n // Listen to beforeTx so we know when our target transaction\n // is processing. This event will add the event listener for getting the trace data.\n vm.on(\"beforeTx\", beforeTxListener);\n // Don't even let the vm try to flush the block's _cache to the stateTrie.\n // When forking some of the data that the traced function may request will\n // exist only on the main chain. Because we pretty much lie to the VM by\n // telling it we DO have data in our Trie, when we really don't, it gets\n // lost during the commit phase when it traverses the \"borrowed\" datum's\n // trie (as it may not have a valid root). Because this is a trace, and we\n // don't need to commit the data, duck punching the `flush` method (the\n // simplest method I could find) is fine.\n // Remove this and you may see the infamous\n // `Uncaught TypeError: Cannot read property 'pop' of undefined` error!\n vm.stateManager._cache.flush = () => { };\n // Process the block without committing the data.\n // The vmerr key on the result appears to be removed.\n // The previous implementation had specific error handling.\n // It's possible we've removed handling specific cases in this implementation.\n // e.g., the previous incantation of RuntimeError\n await run_transactions_1.runTransactions(vm, newBlock.transactions, newBlock);\n // Just to be safe\n removeListeners();\n // send state results back\n return {\n gas,\n structLogs,\n returnValue: \"\",\n storage\n };\n });\n _prepareNextBlock.set(this, (targetBlock, parentBlock, transactionHash) => {\n // Prepare the \"next\" block with necessary transactions\n const newBlock = new ethereum_block_1.RuntimeBlock(utils_1.Quantity.from((parentBlock.header.number.toBigInt() || 0n) + 1n), parentBlock.hash(), parentBlock.header.miner, parentBlock.header.gasLimit.toBuffer(), \n // make sure we use the same timestamp as the target block\n targetBlock.header.timestamp, __classPrivateFieldGet(this, _options).miner.difficulty, parentBlock.header.totalDifficulty);\n newBlock.transactions = [];\n newBlock.uncleHeaders = [];\n const transactions = targetBlock.getTransactions();\n for (const tx of transactions) {\n newBlock.transactions.push(tx.toVmTransaction());\n // After including the target transaction, that's all we need to do.\n if (tx.hash.toBuffer().equals(transactionHash)) {\n break;\n }\n }\n return newBlock;\n });\n __classPrivateFieldSet(this, _options, options);\n this.fallback = fallback;\n const instamine = (__classPrivateFieldSet(this, _instamine, !options.miner.blockTime || options.miner.blockTime <= 0));\n const legacyInstamine = options.miner.legacyInstamine;\n {\n // warnings and errors\n if (legacyInstamine) {\n console.info(\"Legacy instamining, where transactions are fully mined before the hash is returned, is deprecated and will be removed in the future.\");\n }\n if (!instamine) {\n if (legacyInstamine) {\n console.info(\"Setting `legacyInstamine` to `true` has no effect when blockTime is non-zero\");\n }\n if (options.chain.vmErrorsOnRPCResponse) {\n console.info(\"Setting `vmErrorsOnRPCResponse` to `true` has no effect on transactions when blockTime is non-zero\");\n }\n }\n }\n this.coinbase = coinbase;\n __classPrivateFieldSet(this, _database, new database_1.default(options.database, this));\n }\n async initialize(initialAccounts) {\n const database = __classPrivateFieldGet(this, _database);\n const options = __classPrivateFieldGet(this, _options);\n const instamine = __classPrivateFieldGet(this, _instamine);\n let common;\n if (this.fallback) {\n await Promise.all([database.initialize(), this.fallback.initialize()]);\n common = this.common = this.fallback.common;\n options.fork.blockNumber = this.fallback.blockNumber.toNumber();\n options.chain.networkId = common.networkId();\n options.chain.chainId = common.chainId();\n }\n else {\n await database.initialize();\n common = this.common = createCommon(options.chain.chainId, options.chain.networkId, options.chain.hardfork);\n }\n const blocks = (this.blocks = await block_manager_1.default.initialize(this, common, database.blockIndexes, database.blocks));\n this.blockLogs = new blocklog_manager_1.default(database.blockLogs, this);\n this.transactions = new transaction_manager_1.default(options.miner, common, this, database.transactions);\n this.transactionReceipts = new transaction_receipt_manager_1.default(database.transactionReceipts, this);\n this.accounts = new account_manager_1.default(this);\n this.storageKeys = database.storageKeys;\n // if we have a latest block, use it to set up the trie.\n const { latest } = blocks;\n {\n let stateRoot;\n if (latest) {\n __classPrivateFieldSet(this, _blockBeingSavedPromise, Promise.resolve({\n block: latest,\n blockLogs: null\n }));\n ({ stateRoot } = latest.header);\n }\n else {\n stateRoot = null;\n }\n this.trie = makeTrie(this, database.trie, stateRoot);\n }\n // create VM and listen to step events\n this.vm = await this.createVmFromStateTrie(this.trie, options.chain.allowUnlimitedContractSize, true);\n {\n // create first block\n let firstBlockTime;\n if (options.chain.time != null) {\n // If we were given a timestamp, use it instead of the `_currentTime`\n const t = options.chain.time.getTime();\n firstBlockTime = Math.floor(t / 1000);\n this.setTime(t);\n }\n else {\n firstBlockTime = __classPrivateFieldGet(this, _currentTime).call(this);\n }\n // if we don't already have a latest block, create a genesis block!\n if (!latest) {\n __classPrivateFieldSet(this, _blockBeingSavedPromise, __classPrivateFieldGet(this, _initializeGenesisBlock).call(this, firstBlockTime, options.miner.blockGasLimit, initialAccounts));\n blocks.earliest = blocks.latest = await __classPrivateFieldGet(this, _blockBeingSavedPromise).then(({ block }) => block);\n }\n }\n {\n // configure and start miner\n const txPool = this.transactions.transactionPool;\n const minerOpts = options.miner;\n const miner = (__classPrivateFieldSet(this, _miner, new miner_1.default(minerOpts, txPool.executables, instamine, this.vm, __classPrivateFieldGet(this, _readyNextBlock))));\n //#region automatic mining\n const nullResolved = Promise.resolve(null);\n const mineAll = (maxTransactions) => __classPrivateFieldGet(this, _isPaused).call(this) ? nullResolved : this.mine(maxTransactions);\n if (instamine) {\n // insta mining\n // whenever the transaction pool is drained mine the txs into blocks\n txPool.on(\"drain\", mineAll.bind(null, 1));\n }\n else {\n // interval mining\n const wait = () => \n // unref, so we don't hold the chain open if nothing can interact with it\n utils_1.unref((__classPrivateFieldSet(this, _timer, setTimeout(next, minerOpts.blockTime * 1e3))));\n const next = () => mineAll(-1).then(wait);\n wait();\n }\n //#endregion\n miner.on(\"block\", __classPrivateFieldGet(this, _handleNewBlockData));\n this.once(\"stop\").then(() => miner.clearListeners());\n }\n __classPrivateFieldSet(this, _state, Status.started);\n this.emit(\"ready\");\n }\n pause() {\n __classPrivateFieldSet(this, _state, __classPrivateFieldGet(this, _state) | Status.paused);\n }\n resume(_threads = 1) {\n if (!__classPrivateFieldGet(this, _isPaused).call(this)) {\n console.log(\"Warning: startMining called when miner was already started\");\n return;\n }\n // toggles the `paused` bit\n __classPrivateFieldSet(this, _state, __classPrivateFieldGet(this, _state) ^ Status.paused);\n // if we are instamining mine a block right away\n if (__classPrivateFieldGet(this, _instamine)) {\n return this.mine(-1);\n }\n }\n /**\n * @param seconds\n * @returns the total time offset *in milliseconds*\n */\n increaseTime(seconds) {\n if (seconds < 0) {\n seconds = 0;\n }\n return (__classPrivateFieldSet(this, _timeAdjustment, __classPrivateFieldGet(this, _timeAdjustment) + seconds));\n }\n /**\n * @param seconds\n * @returns the total time offset *in milliseconds*\n */\n setTime(timestamp) {\n return (__classPrivateFieldSet(this, _timeAdjustment, timestamp - Date.now()));\n }\n snapshot() {\n const snapshots = __classPrivateFieldGet(this, _snapshots);\n const snaps = snapshots.snaps;\n // Subscription ids are based on the number of active snapshots. Weird? Yes.\n // But it's the way it's been since the beginning so it just hasn't been\n // changed. Feel free to change it so ids are unique if it bothers you\n // enough.\n const id = snaps.push({\n block: this.blocks.latest,\n timeAdjustment: __classPrivateFieldGet(this, _timeAdjustment)\n });\n // start listening to new blocks if this is the first snapshot\n if (id === 1) {\n snapshots.unsubscribeFromBlocks = this.on(\"block\", block => {\n snapshots.blocks = {\n current: block.hash().toBuffer(),\n next: snapshots.blocks\n };\n });\n }\n __classPrivateFieldGet(this, _options).logging.logger.log(\"Saved snapshot #\" + id);\n return id;\n }\n async revert(snapshotId) {\n const rawValue = snapshotId.valueOf();\n if (rawValue === null || rawValue === undefined) {\n throw new Error(\"invalid snapshotId\");\n }\n __classPrivateFieldGet(this, _options).logging.logger.log(\"Reverting to snapshot #\" + snapshotId);\n // snapshot ids can't be < 1, so we do a quick sanity check here\n if (rawValue < 1n) {\n return false;\n }\n const snapshots = __classPrivateFieldGet(this, _snapshots);\n const snaps = snapshots.snaps;\n const snapshotIndex = Number(rawValue - 1n);\n const snapshot = snaps[snapshotIndex];\n if (!snapshot) {\n return false;\n }\n // pause processing new transactions...\n await this.transactions.pause();\n // then pause the miner, too.\n await __classPrivateFieldGet(this, _miner).pause();\n // wait for anything in the process of being saved to finish up\n await __classPrivateFieldGet(this, _blockBeingSavedPromise);\n // Pending transactions are always removed when you revert, even if they\n // were present before the snapshot was created. Ideally, we'd remove only\n // the new transactions.. but we'll leave that for another day.\n this.transactions.clear();\n const blocks = this.blocks;\n const currentHash = blocks.latest.hash().toBuffer();\n const snapshotBlock = snapshot.block;\n const snapshotHeader = snapshotBlock.header;\n const snapshotHash = snapshotBlock.hash().toBuffer();\n // remove this and all stored snapshots after this snapshot\n snaps.splice(snapshotIndex);\n // if there are no more listeners, stop listening to new blocks\n if (snaps.length === 0) {\n snapshots.unsubscribeFromBlocks();\n }\n // if the snapshot's hash is different than the latest block's hash we've\n // got new blocks to clean up.\n if (!currentHash.equals(snapshotHash)) {\n // if we've added blocks since we snapshotted we need to delete them and put\n // some things back the way they were.\n const blockPromises = [];\n let blockList = snapshots.blocks;\n while (blockList !== null) {\n if (blockList.current.equals(snapshotHash))\n break;\n blockPromises.push(blocks.getByHash(blockList.current));\n blockList = blockList.next;\n }\n snapshots.blocks = blockList;\n await Promise.all(blockPromises).then(__classPrivateFieldGet(this, _deleteBlockData));\n setStateRootSync(this.vm.stateManager, snapshotHeader.stateRoot.toBuffer());\n blocks.latest = snapshotBlock;\n }\n // put our time adjustment back\n __classPrivateFieldSet(this, _timeAdjustment, snapshot.timeAdjustment);\n // resume mining\n __classPrivateFieldGet(this, _miner).resume();\n // resume processing transactions\n this.transactions.resume();\n return true;\n }\n async queueTransaction(transaction, secretKey) {\n // NOTE: this.transactions.add *must* be awaited before returning the\n // `transaction.hash()`, as the transactionPool may change the transaction\n // (and thus its hash!)\n // It may also throw Errors that must be returned to the caller.\n const isExecutable = (await this.transactions.add(transaction, secretKey)) === true;\n if (isExecutable) {\n process.nextTick(this.emit.bind(this), \"pendingTransaction\", transaction);\n }\n const hash = transaction.hash;\n if (__classPrivateFieldGet(this, _isPaused).call(this) || !__classPrivateFieldGet(this, _instamine)) {\n return hash;\n }\n else {\n if (__classPrivateFieldGet(this, _instamine) && __classPrivateFieldGet(this, _options).miner.legacyInstamine) {\n // in legacyInstamine mode we must wait for the transaction to be saved\n // before we can return the hash\n const { status, error } = await transaction.once(\"finalized\");\n // in legacyInstamine mode we must throw on all rejected transaction\n // errors. We must also throw on `confirmed` transactions when\n // vmErrorsOnRPCResponse is enabled.\n if (error &&\n (status === \"rejected\" || __classPrivateFieldGet(this, _options).chain.vmErrorsOnRPCResponse))\n throw error;\n }\n return hash;\n }\n }\n async simulateTransaction(transaction, parentBlock) {\n let result;\n const data = transaction.data;\n let gasLeft = transaction.gas.toBigInt();\n // subtract out the transaction's base fee from the gas limit before\n // simulating the tx, because `runCall` doesn't account for raw gas costs.\n const hasToAddress = transaction.to != null;\n let to = null;\n if (hasToAddress) {\n const toBuf = transaction.to.toBuffer();\n to = {\n equals: (a) => toBuf.equals(a.buf),\n buf: toBuf\n };\n }\n else {\n to = null;\n }\n gasLeft -= ethereum_transaction_1.calculateIntrinsicGas(data, hasToAddress, this.common);\n if (gasLeft >= 0n) {\n const stateTrie = this.trie.copy(false);\n stateTrie.setContext(parentBlock.header.stateRoot.toBuffer(), null, parentBlock.header.number);\n const vm = await this.createVmFromStateTrie(stateTrie, __classPrivateFieldGet(this, _options).chain.allowUnlimitedContractSize, false);\n // take a checkpoint so the `runCall` never writes to the trie. We don't\n // commit/revert later because this stateTrie is ephemeral anyway.\n vm.stateManager.checkpoint();\n const caller = transaction.from.toBuffer();\n result = await vm.runCall({\n caller: {\n buf: caller,\n equals: (a) => caller.equals(a.buf)\n },\n data: transaction.data && transaction.data.toBuffer(),\n gasPrice: new ethereumjs_util_1.BN(transaction.gasPrice.toBuffer()),\n gasLimit: new ethereumjs_util_1.BN(utils_1.Quantity.from(gasLeft).toBuffer()),\n to,\n value: transaction.value == null\n ? new ethereumjs_util_1.BN(0)\n : new ethereumjs_util_1.BN(transaction.value.toBuffer()),\n block: transaction.block\n });\n }\n else {\n result = {\n execResult: {\n runState: { programCounter: 0 },\n exceptionError: new exceptions_1.VmError(exceptions_1.ERROR.OUT_OF_GAS),\n returnValue: utils_1.BUFFER_EMPTY\n }\n };\n }\n if (result.execResult.exceptionError) {\n if (__classPrivateFieldGet(this, _options).chain.vmErrorsOnRPCResponse) {\n // eth_call transactions don't really have a transaction hash\n const hash = utils_1.RPCQUANTITY_EMPTY;\n throw new ethereum_utils_1.RuntimeError(hash, result, ethereum_utils_1.RETURN_TYPES.RETURN_VALUE);\n }\n else {\n return utils_1.Data.from(result.execResult.returnValue || \"0x\");\n }\n }\n else {\n return utils_1.Data.from(result.execResult.returnValue || \"0x\");\n }\n }\n /**\n * traceTransaction\n *\n * Run a previously-run transaction in the same state in which it occurred at the time it was run.\n * This will return the vm-level trace output for debugging purposes.\n *\n * Strategy:\n *\n * 1. Find block where transaction occurred\n * 2. Set state root of that block\n * 3. Rerun every transaction in that block prior to and including the requested transaction\n * 4. Send trace results back.\n *\n * @param transactionHash\n * @param options\n */\n async traceTransaction(transactionHash, options) {\n const transactionHashBuffer = utils_1.Data.from(transactionHash).toBuffer();\n // #1 - get block via transaction object\n const transaction = await this.transactions.get(transactionHashBuffer);\n if (!transaction) {\n throw new Error(\"Unknown transaction \" + transactionHash);\n }\n const targetBlock = await this.blocks.get(transaction.blockNumber.toBuffer());\n const parentBlock = await this.blocks.getByHash(targetBlock.header.parentHash.toBuffer());\n const newBlock = __classPrivateFieldGet(this, _prepareNextBlock).call(this, targetBlock, parentBlock, transactionHashBuffer);\n // #2 - Set state root of original block\n //\n // TODO: Forking needs the forked block number passed during this step:\n // https://github.com/trufflesuite/ganache-core/blob/develop/lib/blockchain_double.js#L917\n const trie = this.trie.copy();\n trie.setContext(parentBlock.header.stateRoot.toBuffer(), null, parentBlock.header.number);\n // #3 - Rerun every transaction in block prior to and including the requested transaction\n const { gas, structLogs, returnValue } = await __classPrivateFieldGet(this, _traceTransaction).call(this, trie, newBlock, options);\n // #4 - Send results back\n return { gas, structLogs, returnValue };\n }\n /**\n * storageRangeAt\n *\n * Returns a contract's storage given a starting key and max number of\n * entries to return.\n *\n * Strategy:\n *\n * 1. Find block where transaction occurred\n * 2. Set state root of that block\n * 3. Use contract address storage trie to get the storage keys from the transaction\n * 4. Sort and filter storage keys using the startKey and maxResult\n * 5. Rerun every transaction in that block prior to and including the requested transaction\n * 6. Send storage results back\n *\n * @param blockHash\n * @param txIndex\n * @param contractAddress\n * @param startKey\n * @param maxResult\n */\n async storageRangeAt(blockHash, txIndex, contractAddress, startKey, maxResult) {\n // #1 - get block information\n const targetBlock = await this.blocks.getByHash(blockHash);\n // get transaction using txIndex\n const transactions = targetBlock.getTransactions();\n const transaction = transactions[utils_1.Quantity.from(txIndex).toNumber()];\n if (!transaction) {\n throw new Error(`transaction index ${txIndex} is out of range for block ${blockHash}`);\n }\n // #2 - set state root of block\n const parentBlock = await this.blocks.getByHash(targetBlock.header.parentHash.toBuffer());\n const trie = makeTrie(this, __classPrivateFieldGet(this, _database).trie, parentBlock.header.stateRoot);\n // get the contractAddress account storage trie\n const contractAddressBuffer = ethereum_address_1.Address.from(contractAddress).toBuffer();\n const addressData = await trie.get(contractAddressBuffer);\n if (!addressData) {\n throw new Error(`account ${contractAddress} doesn't exist`);\n }\n // #3 - use the contractAddress storage trie to get relevant hashed keys\n const getStorageKeys = () => {\n const storageTrie = trie.copy(false);\n // An address's stateRoot is stored in the 3rd rlp entry\n storageTrie.setContext(rlp_1.decode(addressData)[2], contractAddressBuffer, parentBlock.header.number);\n return new Promise((resolve, reject) => {\n const startKeyBuffer = utils_1.Data.from(startKey).toBuffer();\n const compare = (a, b) => a.compare(b) < 0;\n const keys = [];\n const handleData = ({ key }) => {\n // ignore anything that comes before our starting point\n if (startKeyBuffer.compare(key) > 0)\n return;\n // #4 - sort and filter keys\n // insert the key exactly where it needs to go in the array\n const position = utils_1.findInsertPosition(keys, key, compare);\n // ignore if the value couldn't possibly be relevant\n if (position > maxResult)\n return;\n keys.splice(position, 0, key);\n };\n const handleEnd = () => {\n if (keys.length > maxResult) {\n // we collected too much data, so we've got to trim it a bit\n resolve({\n // only take the maximum number of entries requested\n keys: keys.slice(0, maxResult),\n // assign nextKey\n nextKey: utils_1.Data.from(keys[maxResult])\n });\n }\n else {\n resolve({\n keys,\n nextKey: null\n });\n }\n };\n const rs = storageTrie.createReadStream();\n rs.on(\"data\", handleData).on(\"error\", reject).on(\"end\", handleEnd);\n });\n };\n const { keys, nextKey } = await getStorageKeys();\n // #5 - rerun every transaction in that block prior to and including the requested transaction\n // prepare block to be run in traceTransaction\n const transactionHashBuffer = transaction.hash.toBuffer();\n const newBlock = __classPrivateFieldGet(this, _prepareNextBlock).call(this, targetBlock, parentBlock, transactionHashBuffer);\n // get storage data given a set of keys\n const options = {\n disableMemory: true,\n disableStack: true,\n disableStorage: false\n };\n const { storage } = await __classPrivateFieldGet(this, _traceTransaction).call(this, trie, newBlock, options, keys, contractAddressBuffer);\n // #6 - send back results\n return {\n storage,\n nextKey\n };\n }\n /**\n * Gracefully shuts down the blockchain service and all of its dependencies.\n */\n async stop() {\n // If the blockchain is still initalizing we don't want to shut down\n // yet because there may still be database calls in flight. Leveldb may\n // cause a segfault due to a race condition between a db write and the close\n // call.\n if (__classPrivateFieldGet(this, _state) === Status.starting) {\n await this.once(\"ready\");\n }\n // stop the polling miner, if necessary\n clearTimeout(__classPrivateFieldGet(this, _timer));\n // clean up listeners\n this.vm.removeAllListeners();\n // pause processing new transactions...\n await this.transactions.pause();\n // then pause the miner, too.\n await __classPrivateFieldGet(this, _miner).pause();\n // wait for anything in the process of being saved to finish up\n await __classPrivateFieldGet(this, _blockBeingSavedPromise);\n this.fallback && (await this.fallback.close());\n await this.emit(\"stop\");\n if (__classPrivateFieldGet(this, _state) === Status.started) {\n __classPrivateFieldSet(this, _state, Status.stopping);\n await __classPrivateFieldGet(this, _database).close();\n __classPrivateFieldSet(this, _state, Status.stopped);\n }\n }\n}\nexports.default = Blockchain;\n_state = new WeakMap(), _miner = new WeakMap(), _blockBeingSavedPromise = new WeakMap(), _timer = new WeakMap(), _database = new WeakMap(), _options = new WeakMap(), _instamine = new WeakMap(), _saveNewBlock = new WeakMap(), _emitNewBlock = new WeakMap(), _getTransactionLogOutput = new WeakMap(), _handleNewBlockData = new WeakMap(), _readyNextBlock = new WeakMap(), _isPaused = new WeakMap(), _commitAccounts = new WeakMap(), _initializeGenesisBlock = new WeakMap(), _timeAdjustment = new WeakMap(), _currentTime = new WeakMap(), _deleteBlockData = new WeakMap(), _snapshots = new WeakMap(), _traceTransaction = new WeakMap(), _prepareNextBlock = new WeakMap();\n//# sourceMappingURL=blockchain.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalkController = void 0;\nvar prioritizedTaskExecutor_1 = require(\"../prioritizedTaskExecutor\");\nvar trieNode_1 = require(\"../trieNode\");\n/**\n * WalkController is an interface to control how the trie is being traversed.\n */\nvar WalkController = /** @class */ (function () {\n /**\n * Creates a new WalkController\n * @param onNode - The `FoundNodeFunction` to call if a node is found.\n * @param trie - The `Trie` to walk on.\n * @param poolSize - The size of the task queue.\n */\n function WalkController(onNode, trie, poolSize) {\n this.onNode = onNode;\n this.taskExecutor = new prioritizedTaskExecutor_1.PrioritizedTaskExecutor(poolSize);\n this.trie = trie;\n this.resolve = function () { };\n }\n /**\n * Async function to create and start a new walk over a trie.\n * @param onNode - The `FoundNodeFunction to call if a node is found.\n * @param trie - The trie to walk on.\n * @param root - The root key to walk on.\n * @param poolSize - Task execution pool size to prevent OOM errors. Defaults to 500.\n */\n WalkController.newWalk = function (onNode, trie, root, poolSize) {\n return __awaiter(this, void 0, void 0, function () {\n var strategy;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n strategy = new WalkController(onNode, trie, poolSize !== null && poolSize !== void 0 ? poolSize : 500);\n return [4 /*yield*/, strategy.startWalk(root)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WalkController.prototype.startWalk = function (root) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {\n var node;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.resolve = resolve;\n return [4 /*yield*/, this.trie._lookupNode(root)];\n case 1:\n node = _a.sent();\n this.processNode(root, node, []);\n return [2 /*return*/];\n }\n });\n }); })];\n case 1: \n // eslint-disable-next-line no-async-promise-executor\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Run all children of a node. Priority of these nodes are the key length of the children.\n * @param node - Node to get all children of and call onNode on.\n * @param key - The current `key` which would yield the `node` when trying to get this node with a `get` operation.\n */\n WalkController.prototype.allChildren = function (node, key) {\n var e_1, _a;\n if (key === void 0) { key = []; }\n if (node instanceof trieNode_1.LeafNode) {\n return;\n }\n var children;\n if (node instanceof trieNode_1.ExtensionNode) {\n children = [[node.key, node.value]];\n }\n else if (node instanceof trieNode_1.BranchNode) {\n children = node.getChildren().map(function (b) { return [[b[0]], b[1]]; });\n }\n if (!children) {\n return;\n }\n try {\n for (var children_1 = __values(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n var keyExtension = child[0];\n var childRef = child[1];\n var childKey = key.concat(keyExtension);\n var priority = childKey.length;\n this.pushNodeToQueue(childRef, childKey, priority);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Push a node to the queue. If the queue has places left for tasks, the node is executed immediately, otherwise it is queued.\n * @param nodeRef - Push a node reference to the event queue. This reference is a 32-byte keccak hash of the value corresponding to the `key`.\n * @param key - The current key.\n * @param priority - Optional priority, defaults to key length\n */\n WalkController.prototype.pushNodeToQueue = function (nodeRef, key, priority) {\n var _this = this;\n if (key === void 0) { key = []; }\n this.taskExecutor.executeOrQueue(priority !== null && priority !== void 0 ? priority : key.length, function (taskFinishedCallback) { return __awaiter(_this, void 0, void 0, function () {\n var childNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.trie._lookupNode(nodeRef)];\n case 1:\n childNode = _a.sent();\n taskFinishedCallback(); // this marks the current task as finished. If there are any tasks left in the queue, this will immediately execute the first task.\n this.processNode(nodeRef, childNode, key);\n return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Push a branch of a certain BranchNode to the event queue.\n * @param node - The node to select a branch on. Should be a BranchNode.\n * @param key - The current key which leads to the corresponding node.\n * @param childIndex - The child index to add to the event queue.\n * @param priority - Optional priority of the event, defaults to the total key length.\n */\n WalkController.prototype.onlyBranchIndex = function (node, key, childIndex, priority) {\n if (key === void 0) { key = []; }\n if (!(node instanceof trieNode_1.BranchNode)) {\n throw new Error('Expected branch node');\n }\n var childRef = node.getBranch(childIndex);\n if (!childRef) {\n throw new Error('Could not get branch of childIndex');\n }\n var childKey = key.slice(); // This copies the key to a new array.\n childKey.push(childIndex);\n var prio = priority !== null && priority !== void 0 ? priority : childKey.length;\n this.pushNodeToQueue(childRef, childKey, prio);\n };\n WalkController.prototype.processNode = function (nodeRef, node, key) {\n if (key === void 0) { key = []; }\n this.onNode(nodeRef, node, key, this);\n if (this.taskExecutor.finished()) {\n // onNode should schedule new tasks. If no tasks was added and the queue is empty, then we have finished our walk.\n this.resolve();\n }\n };\n return WalkController;\n}());\nexports.WalkController = WalkController;\n//# sourceMappingURL=walkController.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar block_1 = require(\"./block\");\nObject.defineProperty(exports, \"Block\", { enumerable: true, get: function () { return block_1.Block; } });\nvar header_1 = require(\"./header\");\nObject.defineProperty(exports, \"BlockHeader\", { enumerable: true, get: function () { return header_1.BlockHeader; } });\n__exportStar(require(\"./types\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalkController = void 0;\nvar prioritizedTaskExecutor_1 = require(\"../prioritizedTaskExecutor\");\nvar trieNode_1 = require(\"../trieNode\");\n/**\n * WalkController is an interface to control how the trie is being traversed.\n */\nvar WalkController = /** @class */ (function () {\n /**\n * Creates a new WalkController\n * @param onNode - The `FoundNodeFunction` to call if a node is found.\n * @param trie - The `Trie` to walk on.\n * @param poolSize - The size of the task queue.\n */\n function WalkController(onNode, trie, poolSize) {\n this.onNode = onNode;\n this.taskExecutor = new prioritizedTaskExecutor_1.PrioritizedTaskExecutor(poolSize);\n this.trie = trie;\n this.resolve = function () { };\n }\n /**\n * Async function to create and start a new walk over a trie.\n * @param onNode - The `FoundNodeFunction to call if a node is found.\n * @param trie - The trie to walk on.\n * @param root - The root key to walk on.\n * @param poolSize - Task execution pool size to prevent OOM errors. Defaults to 500.\n */\n WalkController.newWalk = function (onNode, trie, root, poolSize) {\n return __awaiter(this, void 0, void 0, function () {\n var strategy;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n strategy = new WalkController(onNode, trie, poolSize !== null && poolSize !== void 0 ? poolSize : 500);\n return [4 /*yield*/, strategy.startWalk(root)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WalkController.prototype.startWalk = function (root) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {\n var node;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.resolve = resolve;\n return [4 /*yield*/, this.trie._lookupNode(root)];\n case 1:\n node = _a.sent();\n this.processNode(root, node, []);\n return [2 /*return*/];\n }\n });\n }); })];\n case 1: \n // eslint-disable-next-line no-async-promise-executor\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Run all children of a node. Priority of these nodes are the key length of the children.\n * @param node - Node to get all children of and call onNode on.\n * @param key - The current `key` which would yield the `node` when trying to get this node with a `get` operation.\n */\n WalkController.prototype.allChildren = function (node, key) {\n var e_1, _a;\n if (key === void 0) { key = []; }\n if (node instanceof trieNode_1.LeafNode) {\n return;\n }\n var children;\n if (node instanceof trieNode_1.ExtensionNode) {\n children = [[node.key, node.value]];\n }\n else if (node instanceof trieNode_1.BranchNode) {\n children = node.getChildren().map(function (b) { return [[b[0]], b[1]]; });\n }\n if (!children) {\n return;\n }\n try {\n for (var children_1 = __values(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n var keyExtension = child[0];\n var childRef = child[1];\n var childKey = key.concat(keyExtension);\n var priority = childKey.length;\n this.pushNodeToQueue(childRef, childKey, priority);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Push a node to the queue. If the queue has places left for tasks, the node is executed immediately, otherwise it is queued.\n * @param nodeRef - Push a node reference to the event queue. This reference is a 32-byte keccak hash of the value corresponding to the `key`.\n * @param key - The current key.\n * @param priority - Optional priority, defaults to key length\n */\n WalkController.prototype.pushNodeToQueue = function (nodeRef, key, priority) {\n var _this = this;\n if (key === void 0) { key = []; }\n this.taskExecutor.executeOrQueue(priority !== null && priority !== void 0 ? priority : key.length, function (taskFinishedCallback) { return __awaiter(_this, void 0, void 0, function () {\n var childNode;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.trie._lookupNode(nodeRef)];\n case 1:\n childNode = _a.sent();\n taskFinishedCallback(); // this marks the current task as finished. If there are any tasks left in the queue, this will immediately execute the first task.\n this.processNode(nodeRef, childNode, key);\n return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Push a branch of a certain BranchNode to the event queue.\n * @param node - The node to select a branch on. Should be a BranchNode.\n * @param key - The current key which leads to the corresponding node.\n * @param childIndex - The child index to add to the event queue.\n * @param priority - Optional priority of the event, defaults to the total key length.\n */\n WalkController.prototype.onlyBranchIndex = function (node, key, childIndex, priority) {\n if (key === void 0) { key = []; }\n if (!(node instanceof trieNode_1.BranchNode)) {\n throw new Error('Expected branch node');\n }\n var childRef = node.getBranch(childIndex);\n if (!childRef) {\n throw new Error('Could not get branch of childIndex');\n }\n var childKey = key.slice(); // This copies the key to a new array.\n childKey.push(childIndex);\n var prio = priority !== null && priority !== void 0 ? priority : childKey.length;\n this.pushNodeToQueue(childRef, childKey, prio);\n };\n WalkController.prototype.processNode = function (nodeRef, node, key) {\n if (key === void 0) { key = []; }\n this.onNode(nodeRef, node, key, this);\n if (this.taskExecutor.finished()) {\n // onNode should schedule new tasks. If no tasks was added and the queue is empty, then we have finished our walk.\n this.resolve();\n }\n };\n return WalkController;\n}());\nexports.WalkController = WalkController;\n//# sourceMappingURL=walkController.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseTransaction = void 0;\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\n/**\n * This base class will likely be subject to further\n * refactoring along the introduction of additional tx types\n * on the Ethereum network.\n *\n * It is therefore not recommended to use directly.\n */\nvar BaseTransaction = /** @class */ (function () {\n function BaseTransaction(txData, txOptions) {\n if (txOptions === void 0) { txOptions = {}; }\n var _a, _b;\n var nonce = txData.nonce, gasLimit = txData.gasLimit, gasPrice = txData.gasPrice, to = txData.to, value = txData.value, data = txData.data, v = txData.v, r = txData.r, s = txData.s;\n this.nonce = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(nonce));\n this.gasPrice = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasPrice));\n this.gasLimit = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasLimit));\n this.to = to ? new ethereumjs_util_1.Address(ethereumjs_util_1.toBuffer(to)) : undefined;\n this.value = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(value));\n this.data = ethereumjs_util_1.toBuffer(data);\n this.v = v ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(v)) : undefined;\n this.r = r ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(r)) : undefined;\n this.s = s ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(s)) : undefined;\n this._validateCannotExceedMaxInteger({\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n value: this.value,\n });\n this.common = (_b = (_a = txOptions.common) === null || _a === void 0 ? void 0 : _a.copy()) !== null && _b !== void 0 ? _b : new common_1.default({ chain: 'mainnet' });\n }\n BaseTransaction.prototype.validate = function (stringError) {\n if (stringError === void 0) { stringError = false; }\n var errors = [];\n if (this.getBaseFee().gt(this.gasLimit)) {\n errors.push(\"gasLimit is too low. given \" + this.gasLimit + \", need at least \" + this.getBaseFee());\n }\n if (this.isSigned() && !this.verifySignature()) {\n errors.push('Invalid Signature');\n }\n return stringError ? errors : errors.length === 0;\n };\n /**\n * The minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n */\n BaseTransaction.prototype.getBaseFee = function () {\n var fee = this.getDataFee().addn(this.common.param('gasPrices', 'tx'));\n if (this.common.gteHardfork('homestead') && this.toCreationAddress()) {\n fee.iaddn(this.common.param('gasPrices', 'txCreation'));\n }\n return fee;\n };\n /**\n * The amount of gas paid for the data in this tx\n */\n BaseTransaction.prototype.getDataFee = function () {\n var txDataZero = this.common.param('gasPrices', 'txDataZero');\n var txDataNonZero = this.common.param('gasPrices', 'txDataNonZero');\n var cost = 0;\n for (var i = 0; i < this.data.length; i++) {\n this.data[i] === 0 ? (cost += txDataZero) : (cost += txDataNonZero);\n }\n return new ethereumjs_util_1.BN(cost);\n };\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n BaseTransaction.prototype.getUpfrontCost = function () {\n return this.gasLimit.mul(this.gasPrice).add(this.value);\n };\n /**\n * If the tx's `to` is to the creation address\n */\n BaseTransaction.prototype.toCreationAddress = function () {\n return this.to === undefined || this.to.buf.length === 0;\n };\n BaseTransaction.prototype.isSigned = function () {\n var _a = this, v = _a.v, r = _a.r, s = _a.s;\n return !!v && !!r && !!s;\n };\n /**\n * Determines if the signature is valid\n */\n BaseTransaction.prototype.verifySignature = function () {\n try {\n // Main signature verification is done in `getSenderPublicKey()`\n var publicKey = this.getSenderPublicKey();\n return ethereumjs_util_1.unpadBuffer(publicKey).length !== 0;\n }\n catch (e) {\n return false;\n }\n };\n /**\n * Returns the sender's address\n */\n BaseTransaction.prototype.getSenderAddress = function () {\n return new ethereumjs_util_1.Address(ethereumjs_util_1.publicToAddress(this.getSenderPublicKey()));\n };\n /**\n * Signs a tx and returns a new signed tx object\n */\n BaseTransaction.prototype.sign = function (privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('Private key must be 32 bytes in length.');\n }\n var msgHash = this.getMessageToSign();\n var _a = ethereumjs_util_1.ecsign(msgHash, privateKey), v = _a.v, r = _a.r, s = _a.s;\n return this._processSignature(v, r, s);\n };\n BaseTransaction.prototype._validateCannotExceedMaxInteger = function (values) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.entries(values)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n if (value === null || value === void 0 ? void 0 : value.gt(ethereumjs_util_1.MAX_INTEGER)) {\n throw new Error(key + \" cannot exceed MAX_INTEGER, given \" + value);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n return BaseTransaction;\n}());\nexports.BaseTransaction = BaseTransaction;\n//# sourceMappingURL=baseTransaction.js.map","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _Type, _options;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"@ganache/utils\");\nconst NOTFOUND = 404;\nclass Manager {\n constructor(base, type, options) {\n _Type.set(this, void 0);\n _options.set(this, void 0);\n __classPrivateFieldSet(this, _Type, type);\n __classPrivateFieldSet(this, _options, options);\n this.base = base;\n }\n getRaw(key) {\n if (typeof key === \"string\") {\n key = utils_1.Data.from(key).toBuffer();\n }\n if (key.length === 0) {\n key = utils_1.BUFFER_ZERO;\n }\n return this.base.get(key).catch(e => {\n if (e.status === NOTFOUND)\n return null;\n throw e;\n });\n }\n async get(key) {\n const raw = await this.getRaw(key);\n if (!raw)\n return null;\n return new (__classPrivateFieldGet(this, _Type))(raw, __classPrivateFieldGet(this, _options));\n }\n set(key, value) {\n return this.base.put(key, value);\n }\n del(key) {\n return this.base.del(key);\n }\n}\nexports.default = Manager;\n_Type = new WeakMap(), _options = new WeakMap();\n//# sourceMappingURL=manager.js.map","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _provider, _handle;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Connector = exports.Provider = void 0;\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst utils_1 = require(\"@ganache/utils\");\nconst provider_1 = __importDefault(require(\"./provider\"));\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nexports.Provider = provider_1.default;\nfunction isHttp(connection) {\n return (connection.constructor.name === \"uWS.HttpRequest\" ||\n connection.constructor.name === \"RequestWrapper\");\n}\nclass Connector extends emittery_1.default.Typed {\n constructor(providerOptions = null, executor) {\n super();\n _provider.set(this, void 0);\n _handle.set(this, (payload, connection) => {\n const method = payload.method;\n if (method === \"eth_subscribe\") {\n if (isHttp(connection)) {\n return Promise.reject(new ethereum_utils_1.CodedError(\"notifications not supported\", utils_1.JsonRpcErrorCode.METHOD_NOT_SUPPORTED));\n }\n }\n const params = payload.params;\n return __classPrivateFieldGet(this, _provider)._requestRaw({ method, params });\n });\n __classPrivateFieldSet(this, _provider, new provider_1.default(providerOptions, executor));\n }\n get provider() {\n return __classPrivateFieldGet(this, _provider);\n }\n async connect() {\n await __classPrivateFieldGet(this, _provider).initialize();\n // no need to wait for #provider.once(\"connect\") as the initialize()\n // promise has already accounted for that after the promise is resolved\n await this.emit(\"ready\");\n }\n parse(message) {\n try {\n return JSON.parse(message);\n }\n catch (e) {\n throw new ethereum_utils_1.CodedError(e.message, utils_1.JsonRpcErrorCode.PARSE_ERROR);\n }\n }\n handle(payload, connection) {\n if (Array.isArray(payload)) {\n // handle batch transactions\n const promises = payload.map(payload => __classPrivateFieldGet(this, _handle).call(this, payload, connection)\n .then(({ value }) => value)\n .catch(e => e));\n return Promise.resolve({ value: Promise.all(promises) });\n }\n else {\n return __classPrivateFieldGet(this, _handle).call(this, payload, connection);\n }\n }\n format(results, payload) {\n if (Array.isArray(payload)) {\n return JSON.stringify(payload.map((payload, i) => {\n const result = results[i];\n if (result instanceof Error) {\n return utils_1.makeError(payload.id, result);\n }\n else {\n return utils_1.makeResponse(payload.id, result);\n }\n }));\n }\n else {\n const json = utils_1.makeResponse(payload.id, results);\n return JSON.stringify(json);\n }\n }\n formatError(error, payload) {\n const json = utils_1.makeError(payload && payload.id ? payload.id : null, error);\n return JSON.stringify(json);\n }\n close() {\n return __classPrivateFieldGet(this, _provider).disconnect();\n }\n}\nexports.Connector = Connector;\n_provider = new WeakMap(), _handle = new WeakMap();\n//# sourceMappingURL=connector.js.map","'use strict';\n\nconst anyMap = new WeakMap();\nconst eventsMap = new WeakMap();\nconst producersMap = new WeakMap();\nconst anyProducer = Symbol('anyProducer');\nconst resolvedPromise = Promise.resolve();\n\nconst listenerAdded = Symbol('listenerAdded');\nconst listenerRemoved = Symbol('listenerRemoved');\n\nfunction assertEventName(eventName) {\n\tif (typeof eventName !== 'string' && typeof eventName !== 'symbol') {\n\t\tthrow new TypeError('eventName must be a string or a symbol');\n\t}\n}\n\nfunction assertListener(listener) {\n\tif (typeof listener !== 'function') {\n\t\tthrow new TypeError('listener must be a function');\n\t}\n}\n\nfunction getListeners(instance, eventName) {\n\tconst events = eventsMap.get(instance);\n\tif (!events.has(eventName)) {\n\t\tevents.set(eventName, new Set());\n\t}\n\n\treturn events.get(eventName);\n}\n\nfunction getEventProducers(instance, eventName) {\n\tconst key = typeof eventName === 'string' || typeof eventName === 'symbol' ? eventName : anyProducer;\n\tconst producers = producersMap.get(instance);\n\tif (!producers.has(key)) {\n\t\tproducers.set(key, new Set());\n\t}\n\n\treturn producers.get(key);\n}\n\nfunction enqueueProducers(instance, eventName, eventData) {\n\tconst producers = producersMap.get(instance);\n\tif (producers.has(eventName)) {\n\t\tfor (const producer of producers.get(eventName)) {\n\t\t\tproducer.enqueue(eventData);\n\t\t}\n\t}\n\n\tif (producers.has(anyProducer)) {\n\t\tconst item = Promise.all([eventName, eventData]);\n\t\tfor (const producer of producers.get(anyProducer)) {\n\t\t\tproducer.enqueue(item);\n\t\t}\n\t}\n}\n\nfunction iterator(instance, eventNames) {\n\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\tlet isFinished = false;\n\tlet flush = () => {};\n\tlet queue = [];\n\n\tconst producer = {\n\t\tenqueue(item) {\n\t\t\tqueue.push(item);\n\t\t\tflush();\n\t\t},\n\t\tfinish() {\n\t\t\tisFinished = true;\n\t\t\tflush();\n\t\t}\n\t};\n\n\tfor (const eventName of eventNames) {\n\t\tgetEventProducers(instance, eventName).add(producer);\n\t}\n\n\treturn {\n\t\tasync next() {\n\t\t\tif (!queue) {\n\t\t\t\treturn {done: true};\n\t\t\t}\n\n\t\t\tif (queue.length === 0) {\n\t\t\t\tif (isFinished) {\n\t\t\t\t\tqueue = undefined;\n\t\t\t\t\treturn this.next();\n\t\t\t\t}\n\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tflush = resolve;\n\t\t\t\t});\n\n\t\t\t\treturn this.next();\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: await queue.shift()\n\t\t\t};\n\t\t},\n\n\t\tasync return(value) {\n\t\t\tqueue = undefined;\n\n\t\t\tfor (const eventName of eventNames) {\n\t\t\t\tgetEventProducers(instance, eventName).delete(producer);\n\t\t\t}\n\n\t\t\tflush();\n\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\t{done: true, value: await value} :\n\t\t\t\t{done: true};\n\t\t},\n\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t}\n\t};\n}\n\nfunction defaultMethodNamesOrAssert(methodNames) {\n\tif (methodNames === undefined) {\n\t\treturn allEmitteryMethods;\n\t}\n\n\tif (!Array.isArray(methodNames)) {\n\t\tthrow new TypeError('`methodNames` must be an array of strings');\n\t}\n\n\tfor (const methodName of methodNames) {\n\t\tif (!allEmitteryMethods.includes(methodName)) {\n\t\t\tif (typeof methodName !== 'string') {\n\t\t\t\tthrow new TypeError('`methodNames` element must be a string');\n\t\t\t}\n\n\t\t\tthrow new Error(`${methodName} is not Emittery method`);\n\t\t}\n\t}\n\n\treturn methodNames;\n}\n\nconst isListenerSymbol = symbol => symbol === listenerAdded || symbol === listenerRemoved;\n\nclass Emittery {\n\tstatic mixin(emitteryPropertyName, methodNames) {\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\t\treturn target => {\n\t\t\tif (typeof target !== 'function') {\n\t\t\t\tthrow new TypeError('`target` must be function');\n\t\t\t}\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tif (target.prototype[methodName] !== undefined) {\n\t\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction getEmitteryProperty() {\n\t\t\t\tObject.defineProperty(this, emitteryPropertyName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: new Emittery()\n\t\t\t\t});\n\t\t\t\treturn this[emitteryPropertyName];\n\t\t\t}\n\n\t\t\tObject.defineProperty(target.prototype, emitteryPropertyName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: getEmitteryProperty\n\t\t\t});\n\n\t\t\tconst emitteryMethodCaller = methodName => function (...args) {\n\t\t\t\treturn this[emitteryPropertyName][methodName](...args);\n\t\t\t};\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tObject.defineProperty(target.prototype, methodName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: emitteryMethodCaller(methodName)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn target;\n\t\t};\n\t}\n\n\tconstructor() {\n\t\tanyMap.set(this, new Set());\n\t\teventsMap.set(this, new Map());\n\t\tproducersMap.set(this, new Map());\n\t}\n\n\ton(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).add(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerAdded, {eventName, listener});\n\t\t\t}\n\t\t}\n\n\t\treturn this.off.bind(this, eventNames, listener);\n\t}\n\n\toff(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).delete(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerRemoved, {eventName, listener});\n\t\t\t}\n\t\t}\n\t}\n\n\tonce(eventNames) {\n\t\treturn new Promise(resolve => {\n\t\t\tconst off = this.on(eventNames, data => {\n\t\t\t\toff();\n\t\t\t\tresolve(data);\n\t\t\t});\n\t\t});\n\t}\n\n\tevents(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t}\n\n\t\treturn iterator(this, eventNames);\n\t}\n\n\tasync emit(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tenqueueProducers(this, eventName, eventData);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = isListenerSymbol(eventName) ? [] : [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\tawait Promise.all([\n\t\t\t...staticListeners.map(async listener => {\n\t\t\t\tif (listeners.has(listener)) {\n\t\t\t\t\treturn listener(eventData);\n\t\t\t\t}\n\t\t\t}),\n\t\t\t...staticAnyListeners.map(async listener => {\n\t\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\t\treturn listener(eventName, eventData);\n\t\t\t\t}\n\t\t\t})\n\t\t]);\n\t}\n\n\tasync emitSerial(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (const listener of staticListeners) {\n\t\t\tif (listeners.has(listener)) {\n\t\t\t\tawait listener(eventData);\n\t\t\t}\n\t\t}\n\n\t\tfor (const listener of staticAnyListeners) {\n\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\tawait listener(eventName, eventData);\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\t}\n\n\tonAny(listener) {\n\t\tassertListener(listener);\n\t\tanyMap.get(this).add(listener);\n\t\tthis.emit(listenerAdded, {listener});\n\t\treturn this.offAny.bind(this, listener);\n\t}\n\n\tanyEvent() {\n\t\treturn iterator(this);\n\t}\n\n\toffAny(listener) {\n\t\tassertListener(listener);\n\t\tthis.emit(listenerRemoved, {listener});\n\t\tanyMap.get(this).delete(listener);\n\t}\n\n\tclearListeners(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string' || typeof eventName === 'symbol') {\n\t\t\t\tgetListeners(this, eventName).clear();\n\n\t\t\t\tconst producers = getEventProducers(this, eventName);\n\n\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\tproducer.finish();\n\t\t\t\t}\n\n\t\t\t\tproducers.clear();\n\t\t\t} else {\n\t\t\t\tanyMap.get(this).clear();\n\n\t\t\t\tfor (const listeners of eventsMap.get(this).values()) {\n\t\t\t\t\tlisteners.clear();\n\t\t\t\t}\n\n\t\t\t\tfor (const producers of producersMap.get(this).values()) {\n\t\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\t\tproducer.finish();\n\t\t\t\t\t}\n\n\t\t\t\t\tproducers.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlistenerCount(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tlet count = 0;\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string') {\n\t\t\t\tcount += anyMap.get(this).size + getListeners(this, eventName).size +\n\t\t\t\t\tgetEventProducers(this, eventName).size + getEventProducers(this).size;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (typeof eventName !== 'undefined') {\n\t\t\t\tassertEventName(eventName);\n\t\t\t}\n\n\t\t\tcount += anyMap.get(this).size;\n\n\t\t\tfor (const value of eventsMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\n\t\t\tfor (const value of producersMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tbindMethods(target, methodNames) {\n\t\tif (typeof target !== 'object' || target === null) {\n\t\t\tthrow new TypeError('`target` must be an object');\n\t\t}\n\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\n\t\tfor (const methodName of methodNames) {\n\t\t\tif (target[methodName] !== undefined) {\n\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t}\n\n\t\t\tObject.defineProperty(target, methodName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: this[methodName].bind(this)\n\t\t\t});\n\t\t}\n\t}\n}\n\nconst allEmitteryMethods = Object.getOwnPropertyNames(Emittery.prototype).filter(v => v !== 'constructor');\n\n// Subclass used to encourage TS users to type their events.\nEmittery.Typed = class extends Emittery {};\nObject.defineProperty(Emittery.Typed, 'Typed', {\n\tenumerable: false,\n\tvalue: undefined\n});\n\nObject.defineProperty(Emittery, 'listenerAdded', {\n\tvalue: listenerAdded,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\nObject.defineProperty(Emittery, 'listenerRemoved', {\n\tvalue: listenerRemoved,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\n\nmodule.exports = Emittery;\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _options, _api, _executor, _wallet, _blockchain, _send, _logRequest, _legacySendPayloads, _legacySendPayload;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst api_1 = __importDefault(require(\"./api\"));\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereum_options_1 = require(\"@ganache/ethereum-options\");\nconst lodash_clonedeep_1 = __importDefault(require(\"lodash.clonedeep\"));\nconst wallet_1 = __importDefault(require(\"./wallet\"));\nconst blockchain_1 = __importDefault(require(\"./blockchain\"));\nconst fork_1 = require(\"./forking/fork\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nfunction parseCoinbase(coinbase, initialAccounts) {\n switch (typeof coinbase) {\n case \"object\":\n return coinbase;\n case \"number\":\n const account = initialAccounts[coinbase];\n if (account) {\n return account.address;\n }\n else {\n throw new Error(`invalid coinbase address index: ${coinbase}`);\n }\n case \"string\":\n return ethereum_address_1.Address.from(coinbase);\n default: {\n throw new Error(`coinbase address must be string or number, received: ${coinbase}`);\n }\n }\n}\nclass EthereumProvider extends emittery_1.default.Typed {\n constructor(options = {}, executor) {\n super();\n _options.set(this, void 0);\n _api.set(this, void 0);\n _executor.set(this, void 0);\n _wallet.set(this, void 0);\n _blockchain.set(this, void 0);\n /**\n * Remove an event subscription\n */\n this.removeListener = this.off;\n _send.set(this, (arg1, arg2) => {\n let method;\n let params;\n let response;\n if (typeof arg1 === \"string\") {\n // this signature is (not) non-standard and is only a ganache thing!!!\n // we should probably remove it, but I really like it so I haven't yet.\n method = arg1;\n params = arg2;\n response = this.request({ method, params });\n }\n else if (typeof arg2 === \"function\") {\n // handle backward compatibility with callback-style ganache-core\n if (Array.isArray(arg1)) {\n const callback = arg2;\n __classPrivateFieldGet(this, _legacySendPayloads).call(this, arg1).then(({ error, result }) => {\n callback(error, result);\n });\n }\n else {\n const callback = arg2;\n __classPrivateFieldGet(this, _legacySendPayload).call(this, arg1).then(({ error, result }) => {\n callback(error, result);\n });\n }\n }\n else {\n throw new Error(\"No callback provided to provider's send function. As of web3 1.0, provider.send \" +\n \"is no longer synchronous and must be passed a callback as its final argument.\");\n }\n return response;\n });\n _logRequest.set(this, (method, params) => {\n const options = __classPrivateFieldGet(this, _options);\n if (options.logging.verbose) {\n options.logging.logger.log(` > ${method}: ${params == null\n ? params\n : JSON.stringify(params, null, 2).split(\"\\n\").join(\"\\n > \")}`);\n }\n else {\n options.logging.logger.log(method);\n }\n });\n this.disconnect = async () => {\n await __classPrivateFieldGet(this, _blockchain).stop();\n this.emit(\"disconnect\");\n return;\n };\n //#region legacy\n _legacySendPayloads.set(this, (payloads) => {\n return Promise.all(payloads.map(__classPrivateFieldGet(this, _legacySendPayload))).then(results => {\n let mainError = null;\n const responses = [];\n results.forEach(({ error, result }, i) => {\n responses.push(result);\n if (error) {\n if (mainError == null) {\n mainError = new Error(\"Batch error:\");\n }\n mainError.errors[i] = error;\n }\n });\n return { error: mainError, result: responses };\n });\n });\n _legacySendPayload.set(this, async (payload) => {\n const method = payload.method;\n const params = payload.params;\n try {\n const result = await this.request({ method, params });\n return {\n error: null,\n result: utils_1.makeResponse(payload.id, JSON.parse(JSON.stringify(result)))\n };\n }\n catch (error) {\n let result;\n // In order to provide `vmErrorsOnRPCResponse`, the `error` might have\n // a `result` property that we need to move to the result field. Yes,\n // it's super weird behavior!\n if (utils_1.hasOwn(error, \"result\")) {\n result = error.result;\n delete error.result;\n }\n return { error, result: utils_1.makeError(payload.id, error, result) };\n }\n });\n __classPrivateFieldSet(this, _executor, executor);\n const providerOptions = (__classPrivateFieldSet(this, _options, ethereum_options_1.EthereumOptionsConfig.normalize(options)));\n const wallet = (__classPrivateFieldSet(this, _wallet, new wallet_1.default(providerOptions.wallet)));\n const accounts = wallet.initialAccounts;\n const fork = providerOptions.fork.url || providerOptions.fork.provider;\n const fallback = fork ? new fork_1.Fork(providerOptions, accounts) : null;\n const coinbase = parseCoinbase(providerOptions.miner.coinbase, accounts);\n const blockchain = new blockchain_1.default(providerOptions, coinbase, fallback);\n __classPrivateFieldSet(this, _blockchain, blockchain);\n __classPrivateFieldSet(this, _api, new api_1.default(providerOptions, wallet, blockchain));\n }\n async initialize() {\n await __classPrivateFieldGet(this, _blockchain).initialize(__classPrivateFieldGet(this, _wallet).initialAccounts);\n this.emit(\"connect\");\n }\n /**\n * Returns the options, including defaults and generated, used to start Ganache.\n */\n getOptions() {\n return lodash_clonedeep_1.default(__classPrivateFieldGet(this, _options));\n }\n /**\n * Returns the unlocked accounts\n */\n getInitialAccounts() {\n const accounts = {};\n const wallet = __classPrivateFieldGet(this, _wallet);\n const unlockedAccounts = __classPrivateFieldGet(this, _wallet).unlockedAccounts;\n wallet.initialAccounts.forEach(account => {\n const address = account.address.toString();\n accounts[address] = {\n secretKey: account.privateKey.toString(),\n balance: account.balance.toBigInt(),\n unlocked: unlockedAccounts.has(address)\n };\n });\n return accounts;\n }\n send(arg1, arg2) {\n return __classPrivateFieldGet(this, _send).call(this, arg1, arg2);\n }\n sendAsync(arg1, arg2) {\n __classPrivateFieldGet(this, _send).call(this, arg1, arg2);\n }\n /**\n * EIP-1193 style request method\n * @param args - the args\n * @returns A Promise that resolves with the method's result or rejects with a CodedError\n * @EIP [1193](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md)\n */\n async request(args) {\n const rawResult = await this._requestRaw(args);\n const value = await rawResult.value;\n return JSON.parse(JSON.stringify(value));\n }\n /**\n * INTERNAL. Used when the caller wants to access the original `PromiEvent`,\n * which would otherwise be flattened into a regular Promise through the\n * Promise chain.\n * @param request - the request\n */\n async _requestRaw({ method, params }) {\n __classPrivateFieldGet(this, _logRequest).call(this, method, params);\n const result = await __classPrivateFieldGet(this, _executor).execute(__classPrivateFieldGet(this, _api), method, params);\n const promise = result.value;\n if (promise instanceof utils_1.PromiEvent) {\n promise.on(\"message\", data => {\n // EIP-1193\n this.emit(\"message\", data);\n // legacy\n this.emit(\"data\", {\n jsonrpc: \"2.0\",\n method: \"eth_subscription\",\n params: data.data\n });\n });\n }\n const value = promise.catch((error) => {\n if (__classPrivateFieldGet(this, _options).chain.vmErrorsOnRPCResponse) {\n if (utils_1.hasOwn(error, \"result\")) {\n // stringify the result here\n // TODO: not sure why the stringification is even needed.\n error.result = JSON.parse(JSON.stringify(error.result));\n }\n }\n // then rethrow\n throw error;\n });\n return { value: value };\n }\n}\nexports.default = EthereumProvider;\n_options = new WeakMap(), _api = new WeakMap(), _executor = new WeakMap(), _wallet = new WeakMap(), _blockchain = new WeakMap(), _send = new WeakMap(), _logRequest = new WeakMap(), _legacySendPayloads = new WeakMap(), _legacySendPayload = new WeakMap();\n//# sourceMappingURL=provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLength = exports.decode = exports.encode = void 0;\nvar BN = require(\"bn.js\");\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 **/\nfunction encode(input) {\n if (Array.isArray(input)) {\n var output = [];\n for (var i = 0; i < input.length; i++) {\n output.push(encode(input[i]));\n }\n var buf = Buffer.concat(output);\n return Buffer.concat([encodeLength(buf.length, 192), buf]);\n }\n else {\n var inputBuf = toBuffer(input);\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf]);\n }\n}\nexports.encode = encode;\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, base) {\n if (v.slice(0, 2) === '00') {\n throw new Error('invalid RLP: extra zeros');\n }\n return parseInt(v, base);\n}\nfunction encodeLength(len, offset) {\n if (len < 56) {\n return Buffer.from([len + offset]);\n }\n else {\n var hexLength = intToHex(len);\n var lLength = hexLength.length / 2;\n var firstByte = intToHex(offset + 55 + lLength);\n return Buffer.from(firstByte + hexLength, 'hex');\n }\n}\nfunction decode(input, stream) {\n if (stream === void 0) { stream = false; }\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var decoded = _decode(inputBuffer);\n if (stream) {\n return decoded;\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder');\n }\n return decoded.data;\n}\nexports.decode = decode;\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 */\nfunction getLength(input) {\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var firstByte = inputBuffer[0];\n if (firstByte <= 0x7f) {\n return inputBuffer.length;\n }\n else if (firstByte <= 0xb7) {\n return firstByte - 0x7f;\n }\n else if (firstByte <= 0xbf) {\n return firstByte - 0xb6;\n }\n else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf;\n }\n else {\n // a list over 55 bytes long\n var llength = firstByte - 0xf6;\n var length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16);\n return llength + length;\n }\n}\nexports.getLength = getLength;\n/** Decode an input with RLP */\nfunction _decode(input) {\n var length, llength, data, innerRemainder, d;\n var decoded = [];\n var firstByte = input[0];\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 }\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 // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([]);\n }\n else {\n data = input.slice(1, length);\n }\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80');\n }\n return {\n data: data,\n remainder: input.slice(length),\n };\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 return {\n data: data,\n remainder: input.slice(length + llength),\n };\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);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(length),\n };\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 var totalLength = llength + length;\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data');\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 while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n };\n }\n}\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str) {\n return str.slice(0, 2) === '0x';\n}\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer) {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!');\n }\n var hex = integer.toString(16);\n return hex.length % 2 ? \"0\" + hex : hex;\n}\n/** Pad a string to be even */\nfunction padToEven(a) {\n return a.length % 2 ? \"0\" + a : a;\n}\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer) {\n var hex = intToHex(integer);\n return Buffer.from(hex, 'hex');\n}\n/** Transform anything into a Buffer */\nfunction toBuffer(v) {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex');\n }\n else {\n return Buffer.from(v);\n }\n }\n else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([]);\n }\n else {\n return intToBuffer(v);\n }\n }\n else if (v === null || v === undefined) {\n return Buffer.from([]);\n }\n else if (v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n else {\n throw new Error('invalid type');\n }\n }\n return v;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.importPublic = exports.privateToPublic = exports.privateToAddress = exports.publicToAddress = exports.pubToAddress = exports.isValidPublic = exports.isValidPrivate = exports.isPrecompiled = exports.generateAddress2 = exports.generateAddress = exports.isValidChecksumAddress = exports.toChecksumAddress = exports.isZeroAddress = exports.isValidAddress = exports.zeroAddress = void 0;\nvar assert = require('assert');\nvar ethjsUtil = require('ethjs-util');\nvar secp256k1 = require('./secp256k1v3-adapter');\nvar BN = require(\"bn.js\");\nvar bytes_1 = require(\"./bytes\");\nvar hash_1 = require(\"./hash\");\n/**\n * Returns a zero address.\n */\nexports.zeroAddress = function () {\n var addressLength = 20;\n var addr = bytes_1.zeros(addressLength);\n return bytes_1.bufferToHex(addr);\n};\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexports.isValidAddress = function (address) {\n return /^0x[0-9a-fA-F]{40}$/.test(address);\n};\n/**\n * Checks if a given address is a zero address.\n */\nexports.isZeroAddress = function (address) {\n var zeroAddr = exports.zeroAddress();\n return zeroAddr === bytes_1.addHexPrefix(address);\n};\n/**\n * Returns a checksummed address.\n *\n * If a eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details, consult EIP-1191.\n *\n * WARNING: Checksums with and without the chainId will differ. As of 2019-06-26, the most commonly\n * used variation in Ethereum was without the chainId. This may change in the future.\n */\nexports.toChecksumAddress = function (address, eip1191ChainId) {\n address = ethjsUtil.stripHexPrefix(address).toLowerCase();\n var prefix = eip1191ChainId !== undefined ? eip1191ChainId.toString() + '0x' : '';\n var hash = hash_1.keccak(prefix + address).toString('hex');\n var ret = '0x';\n for (var i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return ret;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexports.isValidChecksumAddress = function (address, eip1191ChainId) {\n return exports.isValidAddress(address) && exports.toChecksumAddress(address, eip1191ChainId) === address;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexports.generateAddress = function (from, nonce) {\n from = bytes_1.toBuffer(from);\n var nonceBN = new BN(nonce);\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return hash_1.rlphash([from, null]).slice(-20);\n }\n // Only take the lower 160bits of the hash\n return hash_1.rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexports.generateAddress2 = function (from, salt, initCode) {\n var fromBuf = bytes_1.toBuffer(from);\n var saltBuf = bytes_1.toBuffer(salt);\n var initCodeBuf = bytes_1.toBuffer(initCode);\n assert(fromBuf.length === 20);\n assert(saltBuf.length === 32);\n var address = hash_1.keccak256(Buffer.concat([Buffer.from('ff', 'hex'), fromBuf, saltBuf, hash_1.keccak256(initCodeBuf)]));\n return address.slice(-20);\n};\n/**\n * Returns true if the supplied address belongs to a precompiled account (Byzantium).\n */\nexports.isPrecompiled = function (address) {\n var a = bytes_1.unpad(address);\n return a.length === 1 && a[0] >= 1 && a[0] <= 8;\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1.privateKeyVerify(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.isValidPublic = function (publicKey, sanitize) {\n if (sanitize === void 0) { sanitize = false; }\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n if (!sanitize) {\n return false;\n }\n return secp256k1.publicKeyVerify(publicKey);\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexports.pubToAddress = function (pubKey, sanitize) {\n if (sanitize === void 0) { sanitize = false; }\n pubKey = bytes_1.toBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1);\n }\n assert(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return hash_1.keccak(pubKey).slice(-20);\n};\nexports.publicToAddress = exports.pubToAddress;\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(exports.privateToPublic(privateKey));\n};\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexports.privateToPublic = function (privateKey) {\n privateKey = bytes_1.toBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.publicKeyCreate(privateKey, false).slice(1);\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexports.importPublic = function (publicKey) {\n publicKey = bytes_1.toBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1);\n }\n return publicKey;\n};\n//# sourceMappingURL=account.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","'use strict';\n\nvar isHexPrefixed = require('is-hex-prefixed');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Pads a `String` to have an even length\n * @param {String} value\n * @return {String} output\n */\nfunction padToEven(value) {\n var a = value; // eslint-disable-line\n\n if (typeof a !== 'string') {\n throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');\n }\n\n if (a.length % 2) {\n a = '0' + a;\n }\n\n return a;\n}\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nfunction intToHex(i) {\n var hex = i.toString(16); // eslint-disable-line\n\n return '0x' + hex;\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nfunction intToBuffer(i) {\n var hex = intToHex(i);\n\n return new Buffer(padToEven(hex.slice(2)), 'hex');\n}\n\n/**\n * Get the binary size of a string\n * @param {String} str\n * @return {Number}\n */\nfunction getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \\'str\\' to be type String, got \\'' + typeof str + '\\'.');\n }\n\n return Buffer.byteLength(str, 'utf8');\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'superset\\' to be an array got type \\'' + typeof superset + '\\'');\n }\n if (Array.isArray(subset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'subset\\' to be an array got type \\'' + typeof subset + '\\'');\n }\n\n return subset[Boolean(some) && 'some' || 'every'](function (value) {\n return superset.indexOf(value) >= 0;\n });\n}\n\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method toUtf8\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toUtf8(hex) {\n var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');\n\n return bufferValue.toString('utf8');\n}\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method toAscii\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toAscii(hex) {\n var str = ''; // eslint-disable-line\n var i = 0,\n l = hex.length; // eslint-disable-line\n\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method fromUtf8\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromUtf8(stringValue) {\n var str = new Buffer(stringValue, 'utf8');\n\n return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method fromAscii\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromAscii(stringValue) {\n var hex = ''; // eslint-disable-line\n for (var i = 0; i < stringValue.length; i++) {\n // eslint-disable-line\n var code = stringValue.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return '0x' + hex;\n}\n\n/**\n * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n *\n * @method getKeys get specific key from inner object array of objects\n * @param {String} params\n * @param {String} key\n * @param {Boolean} allowEmpty\n * @returns {Array} output just a simple array of output keys\n */\nfunction getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error('[ethjs-util] method getKeys expecting type Array as \\'params\\' input, got \\'' + typeof params + '\\'');\n }\n if (typeof key !== 'string') {\n throw new Error('[ethjs-util] method getKeys expecting type String for input \\'key\\' got \\'' + typeof key + '\\'.');\n }\n\n var result = []; // eslint-disable-line\n\n for (var i = 0; i < params.length; i++) {\n // eslint-disable-line\n var value = params[i][key]; // eslint-disable-line\n if (allowEmpty && !value) {\n value = '';\n } else if (typeof value !== 'string') {\n throw new Error('invalid abi');\n }\n result.push(value);\n }\n\n return result;\n}\n\n/**\n * Is the string a hex string.\n *\n * @method check if string is hex string of specific length\n * @param {String} value\n * @param {Number} length\n * @returns {Boolean} output the string is a hex string\n */\nfunction isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n arrayContainsArray: arrayContainsArray,\n intToBuffer: intToBuffer,\n getBinarySize: getBinarySize,\n isHexPrefixed: isHexPrefixed,\n stripHexPrefix: stripHexPrefix,\n padToEven: padToEven,\n intToHex: intToHex,\n fromAscii: fromAscii,\n fromUtf8: fromUtf8,\n toAscii: toAscii,\n toUtf8: toUtf8,\n getKeys: getKeys,\n isHexString: isHexString\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","'use strict';\n\nvar isHexPrefixed = require('is-hex-prefixed');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Pads a `String` to have an even length\n * @param {String} value\n * @return {String} output\n */\nfunction padToEven(value) {\n var a = value; // eslint-disable-line\n\n if (typeof a !== 'string') {\n throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');\n }\n\n if (a.length % 2) {\n a = '0' + a;\n }\n\n return a;\n}\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nfunction intToHex(i) {\n var hex = i.toString(16); // eslint-disable-line\n\n return '0x' + hex;\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nfunction intToBuffer(i) {\n var hex = intToHex(i);\n\n return new Buffer(padToEven(hex.slice(2)), 'hex');\n}\n\n/**\n * Get the binary size of a string\n * @param {String} str\n * @return {Number}\n */\nfunction getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \\'str\\' to be type String, got \\'' + typeof str + '\\'.');\n }\n\n return Buffer.byteLength(str, 'utf8');\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'superset\\' to be an array got type \\'' + typeof superset + '\\'');\n }\n if (Array.isArray(subset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'subset\\' to be an array got type \\'' + typeof subset + '\\'');\n }\n\n return subset[Boolean(some) && 'some' || 'every'](function (value) {\n return superset.indexOf(value) >= 0;\n });\n}\n\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method toUtf8\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toUtf8(hex) {\n var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');\n\n return bufferValue.toString('utf8');\n}\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method toAscii\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toAscii(hex) {\n var str = ''; // eslint-disable-line\n var i = 0,\n l = hex.length; // eslint-disable-line\n\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method fromUtf8\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromUtf8(stringValue) {\n var str = new Buffer(stringValue, 'utf8');\n\n return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method fromAscii\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromAscii(stringValue) {\n var hex = ''; // eslint-disable-line\n for (var i = 0; i < stringValue.length; i++) {\n // eslint-disable-line\n var code = stringValue.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return '0x' + hex;\n}\n\n/**\n * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n *\n * @method getKeys get specific key from inner object array of objects\n * @param {String} params\n * @param {String} key\n * @param {Boolean} allowEmpty\n * @returns {Array} output just a simple array of output keys\n */\nfunction getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error('[ethjs-util] method getKeys expecting type Array as \\'params\\' input, got \\'' + typeof params + '\\'');\n }\n if (typeof key !== 'string') {\n throw new Error('[ethjs-util] method getKeys expecting type String for input \\'key\\' got \\'' + typeof key + '\\'.');\n }\n\n var result = []; // eslint-disable-line\n\n for (var i = 0; i < params.length; i++) {\n // eslint-disable-line\n var value = params[i][key]; // eslint-disable-line\n if (allowEmpty && !value) {\n value = '';\n } else if (typeof value !== 'string') {\n throw new Error('invalid abi');\n }\n result.push(value);\n }\n\n return result;\n}\n\n/**\n * Is the string a hex string.\n *\n * @method check if string is hex string of specific length\n * @param {String} value\n * @param {Number} length\n * @returns {Boolean} output the string is a hex string\n */\nfunction isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n arrayContainsArray: arrayContainsArray,\n intToBuffer: intToBuffer,\n getBinarySize: getBinarySize,\n isHexPrefixed: isHexPrefixed,\n stripHexPrefix: stripHexPrefix,\n padToEven: padToEven,\n intToHex: intToHex,\n fromAscii: fromAscii,\n fromUtf8: fromUtf8,\n toAscii: toAscii,\n toUtf8: toUtf8,\n getKeys: getKeys,\n isHexString: isHexString\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","\"use strict\";\n/*!\n * @ganache/ethereum-options\n *\n * @copyright Truffle Blockchain Group\n * @author David Murdoch (https://davidmurdoch.com)\n * @license MIT\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nconst normalize = (rawInput) => rawInput;\nexports.normalize = normalize;\n//# sourceMappingURL=helpers.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _currentlyExecutingPrice, _origins, _pending, _isBusy, _paused, _resumer, _resolver, _executables, _options, _instamine, _vm, _createBlock, _priced, _mine, _mineTxs, _runTx, _removeBestAndOrigin, _reset, _setPricedHeap, _updatePricedHeap;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst replace_from_heap_1 = __importDefault(require(\"./replace-from-heap\"));\nconst ethereum_transaction_1 = require(\"@ganache/ethereum-transaction\");\nconst updateBloom = (blockBloom, bloom) => {\n let i = 256;\n while (--i)\n blockBloom[i] |= bloom[i];\n};\nconst sortByPrice = (values, a, b) => values[a].gasPrice > values[b].gasPrice;\nclass Miner extends emittery_1.default.Typed {\n /*\n * @param executables A live Map of pending transactions from the transaction\n * pool. The miner will update this Map by removing the best transactions\n * and putting them in new blocks.\n */\n constructor(options, executables, instamine, vm, createBlock) {\n super();\n _currentlyExecutingPrice.set(this, 0n);\n _origins.set(this, new Set());\n _pending.set(this, void 0);\n _isBusy.set(this, false);\n _paused.set(this, false);\n _resumer.set(this, void 0);\n _resolver.set(this, void 0);\n _executables.set(this, void 0);\n _options.set(this, void 0);\n _instamine.set(this, void 0);\n _vm.set(this, void 0);\n _createBlock.set(this, void 0);\n // create a Heap that sorts by gasPrice\n _priced.set(this, new utils_1.Heap(sortByPrice));\n _mine.set(this, async (block, maxTransactions = -1, onlyOneBlock = false) => {\n const { block: lastBlock, transactions } = await __classPrivateFieldGet(this, _mineTxs).call(this, block, maxTransactions, onlyOneBlock);\n // if there are more txs to mine, start mining them without awaiting their\n // result.\n if (__classPrivateFieldGet(this, _pending)) {\n __classPrivateFieldGet(this, _setPricedHeap).call(this);\n __classPrivateFieldSet(this, _pending, false);\n if (!onlyOneBlock && __classPrivateFieldGet(this, _priced).length > 0) {\n const nextBlock = __classPrivateFieldGet(this, _createBlock).call(this, lastBlock);\n await __classPrivateFieldGet(this, _mine).call(this, nextBlock, __classPrivateFieldGet(this, _instamine) ? 1 : -1);\n }\n }\n return transactions;\n });\n _mineTxs.set(this, async (runtimeBlock, maxTransactions, onlyOneBlock) => {\n let block;\n const vm = __classPrivateFieldGet(this, _vm);\n const { pending, inProgress } = __classPrivateFieldGet(this, _executables);\n const options = __classPrivateFieldGet(this, _options);\n let keepMining = true;\n const priced = __classPrivateFieldGet(this, _priced);\n const legacyInstamine = __classPrivateFieldGet(this, _options).legacyInstamine;\n const storageKeys = new Map();\n let blockTransactions;\n do {\n keepMining = false;\n __classPrivateFieldSet(this, _isBusy, true);\n blockTransactions = [];\n const transactionsTrie = new merkle_patricia_tree_1.BaseTrie(null, null);\n const receiptTrie = new merkle_patricia_tree_1.BaseTrie(null, null);\n // don't mine anything at all if maxTransactions is `0`\n if (maxTransactions === 0) {\n await vm.stateManager.checkpoint();\n await vm.stateManager.commit();\n const finalizedBlockData = runtimeBlock.finalize(transactionsTrie.root, receiptTrie.root, utils_1.BUFFER_256_ZERO, vm.stateManager._trie.root, 0n, // gas used\n options.extraData, [], storageKeys);\n this.emit(\"block\", finalizedBlockData);\n __classPrivateFieldGet(this, _reset).call(this);\n return { block: finalizedBlockData.block, transactions: [] };\n }\n let numTransactions = 0;\n let blockGasLeft = options.blockGasLimit.toBigInt();\n let blockGasUsed = 0n;\n const blockBloom = Buffer.allocUnsafe(256).fill(0);\n const promises = [];\n // Set a block-level checkpoint so our unsaved trie doesn't update the\n // vm's \"live\" trie.\n await vm.stateManager.checkpoint();\n const TraceData = ethereum_utils_1.TraceDataFactory();\n // We need to listen for any SSTORE opcodes so we can grab the raw, unhashed version\n // of the storage key and save it to the db along with it's keccak hashed version of\n // the storage key. Why you might ask? So we can reference the raw version in\n // debug_storageRangeAt.\n const stepListener = (event, next) => {\n if (event.opcode.name === \"SSTORE\") {\n const key = TraceData.from(event.stack[event.stack.length - 1].toArrayLike(Buffer)).toBuffer();\n const hashedKey = utils_1.keccak(key);\n storageKeys.set(hashedKey.toString(), { key, hashedKey });\n }\n next();\n };\n vm.on(\"step\", stepListener);\n // Run until we run out of items, or until the inner loop stops us.\n // we don't call `shift()` here because we will may need to `replace`\n // this `best` transaction with the next best transaction from the same\n // origin later.\n let best;\n while ((best = priced.peek())) {\n const origin = best.from.toString();\n if (best.calculateIntrinsicGas() > blockGasLeft) {\n // if the current best transaction can't possibly fit in this block\n // go ahead and run the next best transaction, ignoring all other\n // pending transactions from this account for this block.\n // * We don't replace this \"best\" transaction with another from the\n // same account.\n // * We do \"unlock\" this transaction in the transaction pool's `pending`\n // queue so it can be replaced, if needed.\n best.locked = false;\n __classPrivateFieldGet(this, _removeBestAndOrigin).call(this, origin);\n continue;\n }\n __classPrivateFieldSet(this, _currentlyExecutingPrice, best.gasPrice.toBigInt());\n // Set a transaction-level checkpoint so we can undo state changes in\n // the case where the transaction is rejected by the VM.\n await vm.stateManager.checkpoint();\n // Set the internal trie's block number (for forking)\n vm.stateManager._trie.blockNumber = utils_1.Quantity.from(runtimeBlock.header.number.toArrayLike(Buffer));\n const result = await __classPrivateFieldGet(this, _runTx).call(this, best, runtimeBlock, origin, pending);\n if (result !== null) {\n const gasUsed = utils_1.Quantity.from(result.gasUsed.toArrayLike(Buffer)).toBigInt();\n if (blockGasLeft >= gasUsed) {\n // if the transaction will fit in the block, commit it!\n await vm.stateManager.commit();\n blockTransactions[numTransactions] = best;\n blockGasLeft -= gasUsed;\n blockGasUsed += gasUsed;\n // calculate receipt and tx tries\n const txKey = rlp_1.encode(numTransactions === 0\n ? utils_1.BUFFER_EMPTY\n : utils_1.uintToBuffer(numTransactions));\n promises.push(transactionsTrie.put(txKey, best.serialized));\n const receipt = best.fillFromResult(result, blockGasUsed);\n promises.push(receiptTrie.put(txKey, receipt));\n // update the block's bloom\n updateBloom(blockBloom, result.bloom.bitvector);\n numTransactions++;\n const pendingOrigin = pending.get(origin);\n // since this transaction was successful, remove it from the \"pending\"\n // transaction pool.\n keepMining = pendingOrigin.removeBest();\n inProgress.add(best);\n best.once(\"finalized\").then(() => {\n // it is in the database (or thrown out) so delete it from the\n // `inProgress` Set\n inProgress.delete(best);\n });\n // if we:\n // * don't have enough gas left for even the smallest of transactions\n // * Or if we've mined enough transactions\n // we're done with this block!\n // notice: when `maxTransactions` is `-1` (AKA infinite), `numTransactions === maxTransactions`\n // will always return false, so this comparison works out fine.\n if (blockGasLeft <= ethereum_transaction_1.Params.TRANSACTION_GAS ||\n numTransactions === maxTransactions) {\n if (keepMining) {\n // remove the newest (`best`) tx from this account's pending queue\n // as we know we can fit another transaction in the block. Stick\n // this tx into our `priced` heap.\n keepMining = replace_from_heap_1.default(priced, pendingOrigin);\n }\n else {\n keepMining = __classPrivateFieldGet(this, _removeBestAndOrigin).call(this, origin);\n }\n break;\n }\n if (keepMining) {\n // remove the newest (`best`) tx from this account's pending queue\n // as we know we can fit another transaction in the block. Stick\n // this tx into our `priced` heap.\n keepMining = replace_from_heap_1.default(priced, pendingOrigin);\n }\n else {\n // since we don't have any more txs from this account, just get the\n // next bext transaction sorted in our `priced` heap.\n keepMining = __classPrivateFieldGet(this, _removeBestAndOrigin).call(this, origin);\n }\n }\n else {\n // didn't fit in the current block\n await vm.stateManager.revert();\n // unlock the transaction so the transaction pool can reconsider this\n // transaction\n best.locked = false;\n // didn't fit. remove it from the priced transactions without replacing\n // it with another from the account. This transaction will have to be\n // run again in another block.\n keepMining = priced.removeBest();\n }\n }\n else {\n // no result means the transaction is an \"always failing tx\", so we\n // revert its changes here.\n // Note: we don't clean up (`removeBest`, etc) because `runTx`'s\n // error handler does the clean up itself.\n await vm.stateManager.revert();\n }\n }\n await Promise.all(promises);\n await vm.stateManager.commit();\n vm.removeListener(\"step\", stepListener);\n const finalizedBlockData = runtimeBlock.finalize(transactionsTrie.root, receiptTrie.root, blockBloom, vm.stateManager._trie.root, blockGasUsed, options.extraData, blockTransactions, storageKeys);\n block = finalizedBlockData.block;\n const emitBlockProm = this.emit(\"block\", finalizedBlockData);\n if (legacyInstamine === true) {\n // we need to wait for each block to be done mining when in legacy\n // mode because things like `mine` and `miner_start` must wait for the\n // first mine operation to be fully complete.\n await emitBlockProm;\n }\n if (onlyOneBlock) {\n __classPrivateFieldSet(this, _currentlyExecutingPrice, 0n);\n __classPrivateFieldGet(this, _reset).call(this);\n break;\n }\n else {\n __classPrivateFieldSet(this, _currentlyExecutingPrice, 0n);\n __classPrivateFieldGet(this, _updatePricedHeap).call(this);\n if (priced.length !== 0) {\n maxTransactions = __classPrivateFieldGet(this, _instamine) ? 1 : -1;\n runtimeBlock = __classPrivateFieldGet(this, _createBlock).call(this, block);\n }\n else {\n // reset the miner\n __classPrivateFieldGet(this, _reset).call(this);\n }\n }\n } while (keepMining);\n return { block, transactions: blockTransactions };\n });\n _runTx.set(this, async (tx, block, origin, pending) => {\n try {\n const vm = __classPrivateFieldGet(this, _vm);\n const o = {\n tx: tx.toVmTransaction(),\n block: block\n };\n const r = vm.runTx(o);\n const p = await r;\n return p;\n }\n catch (err) {\n const errorMessage = err.message;\n // We do NOT want to re-run this transaction.\n // Update the `priced` heap with the next best transaction from this\n // account\n const pendingOrigin = pending.get(origin);\n if (pendingOrigin.removeBest()) {\n replace_from_heap_1.default(__classPrivateFieldGet(this, _priced), pendingOrigin);\n }\n else {\n // if there are no more transactions from this origin remove this tx\n // from the priced heap and clear out it's origin so it can accept new\n // transactions from this origin.\n __classPrivateFieldGet(this, _removeBestAndOrigin).call(this, origin);\n }\n const e = {\n execResult: {\n runState: { programCounter: 0 },\n exceptionError: { error: errorMessage },\n returnValue: utils_1.BUFFER_EMPTY\n }\n };\n const error = new ethereum_utils_1.RuntimeError(tx.hash, e, ethereum_utils_1.RETURN_TYPES.TRANSACTION_HASH);\n tx.finalize(\"rejected\", error);\n return null;\n }\n });\n _removeBestAndOrigin.set(this, (origin) => {\n __classPrivateFieldGet(this, _origins).delete(origin);\n return __classPrivateFieldGet(this, _priced).removeBest();\n });\n _reset.set(this, () => {\n __classPrivateFieldGet(this, _origins).clear();\n __classPrivateFieldGet(this, _priced).clear();\n __classPrivateFieldSet(this, _isBusy, false);\n });\n /**\n * Adds one transaction from each origin into the \"priced\" heap, which\n * sorts each tx by gasPrice (high to low)\n */\n _setPricedHeap.set(this, () => {\n const { pending } = __classPrivateFieldGet(this, _executables);\n const origins = __classPrivateFieldGet(this, _origins);\n const priced = __classPrivateFieldGet(this, _priced);\n for (let mapping of pending) {\n const heap = mapping[1];\n const next = heap.peek();\n if (next && !next.locked) {\n const origin = next.from.toString();\n origins.add(origin);\n priced.push(next);\n next.locked = true;\n }\n }\n });\n /**\n * Updates the \"priced\" heap with transactions from origins it doesn't yet\n * contain.\n */\n _updatePricedHeap.set(this, () => {\n const { pending } = __classPrivateFieldGet(this, _executables);\n const origins = __classPrivateFieldGet(this, _origins);\n const priced = __classPrivateFieldGet(this, _priced);\n // Note: the `pending` Map passed here is \"live\", meaning it is constantly\n // being updated by the `transactionPool`. This allows us to begin\n // processing a block with the _current_ pending transactions, and while\n // that is processing, to receive new transactions, updating our `priced`\n // heap with these new pending transactions.\n for (let mapping of pending) {\n const heap = mapping[1];\n const next = heap.peek();\n if (next && !next.locked) {\n const price = next.gasPrice.toBigInt();\n if (__classPrivateFieldGet(this, _currentlyExecutingPrice) > price) {\n // don't insert a transaction into the miner's `priced` heap\n // if it will be better than its last\n continue;\n }\n const origin = next.from.toString();\n if (origins.has(origin)) {\n // don't insert a transaction into the miner's `priced` heap if it\n // has already queued up transactions for that origin\n continue;\n }\n origins.add(origin);\n priced.push(next);\n next.locked = true;\n }\n }\n });\n __classPrivateFieldSet(this, _vm, vm);\n __classPrivateFieldSet(this, _options, options);\n __classPrivateFieldSet(this, _executables, executables);\n __classPrivateFieldSet(this, _instamine, instamine);\n __classPrivateFieldSet(this, _createBlock, createBlock);\n // initialize the heap with an empty array\n __classPrivateFieldGet(this, _priced).init([]);\n }\n async pause() {\n if (!__classPrivateFieldGet(this, _paused)) {\n __classPrivateFieldSet(this, _paused, true);\n __classPrivateFieldSet(this, _resumer, new Promise(resolve => {\n __classPrivateFieldSet(this, _resolver, resolve);\n }));\n }\n if (__classPrivateFieldGet(this, _isBusy)) {\n await this.once(\"idle\");\n }\n }\n resume() {\n if (!__classPrivateFieldGet(this, _paused))\n return;\n __classPrivateFieldSet(this, _paused, false);\n __classPrivateFieldGet(this, _resolver).call(this);\n }\n /**\n * @param maxTransactions: maximum number of transactions per block. If `-1`,\n * unlimited.\n * @param onlyOneBlock: set to `true` if only 1 block should be mined.\n *\n * @returns the transactions mined in the _first_ block\n */\n async mine(block, maxTransactions = -1, onlyOneBlock = false) {\n if (__classPrivateFieldGet(this, _paused)) {\n await __classPrivateFieldGet(this, _resumer);\n }\n // only allow mining a single block at a time (per miner)\n if (__classPrivateFieldGet(this, _isBusy)) {\n // if we are currently mining a block, set the `pending` property\n // so the miner knows it can immediately start mining another block once\n // it is done with its current work.\n __classPrivateFieldSet(this, _pending, true);\n __classPrivateFieldGet(this, _updatePricedHeap).call(this);\n return;\n }\n else {\n __classPrivateFieldGet(this, _setPricedHeap).call(this);\n const result = await __classPrivateFieldGet(this, _mine).call(this, block, maxTransactions, onlyOneBlock);\n this.emit(\"idle\");\n return result;\n }\n }\n}\nexports.default = Miner;\n_currentlyExecutingPrice = new WeakMap(), _origins = new WeakMap(), _pending = new WeakMap(), _isBusy = new WeakMap(), _paused = new WeakMap(), _resumer = new WeakMap(), _resolver = new WeakMap(), _executables = new WeakMap(), _options = new WeakMap(), _instamine = new WeakMap(), _vm = new WeakMap(), _createBlock = new WeakMap(), _priced = new WeakMap(), _mine = new WeakMap(), _mineTxs = new WeakMap(), _runTx = new WeakMap(), _removeBestAndOrigin = new WeakMap(), _reset = new WeakMap(), _setPricedHeap = new WeakMap(), _updatePricedHeap = new WeakMap();\n//# sourceMappingURL=miner.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar checkpointTrie_1 = require(\"./checkpointTrie\");\nObject.defineProperty(exports, \"CheckpointTrie\", { enumerable: true, get: function () { return checkpointTrie_1.CheckpointTrie; } });\nvar secure_1 = require(\"./secure\");\nObject.defineProperty(exports, \"SecureTrie\", { enumerable: true, get: function () { return secure_1.SecureTrie; } });\nvar baseTrie_1 = require(\"./baseTrie\");\nObject.defineProperty(exports, \"BaseTrie\", { enumerable: true, get: function () { return baseTrie_1.Trie; } });\nvar walkController_1 = require(\"./util/walkController\");\nObject.defineProperty(exports, \"WalkController\", { enumerable: true, get: function () { return walkController_1.WalkController; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TrieReadStream = void 0;\nvar nibbles_1 = require(\"./util/nibbles\");\nvar Readable = require('readable-stream').Readable;\nvar TrieReadStream = /** @class */ (function (_super) {\n __extends(TrieReadStream, _super);\n function TrieReadStream(trie) {\n var _this = _super.call(this, { objectMode: true }) || this;\n _this.trie = trie;\n _this._started = false;\n return _this;\n }\n TrieReadStream.prototype._read = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this._started) {\n return [2 /*return*/];\n }\n this._started = true;\n return [4 /*yield*/, this.trie._findValueNodes(function (nodeRef, node, key, walkController) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (node !== null) {\n this.push({\n key: nibbles_1.nibblesToBuffer(key),\n value: node.value,\n });\n walkController.allChildren(node, key);\n }\n return [2 /*return*/];\n });\n }); })];\n case 1:\n _a.sent();\n this.push(null);\n return [2 /*return*/];\n }\n });\n });\n };\n return TrieReadStream;\n}(Readable));\nexports.TrieReadStream = TrieReadStream;\n//# sourceMappingURL=readStream.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _options, _cleanupDirectory, _closed, _rootStore, _cleanup;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst tmp_promise_1 = require(\"tmp-promise\");\nconst levelup_1 = __importDefault(require(\"levelup\"));\nconst leveldown_1 = __importDefault(require(\"leveldown\"));\nconst subleveldown_1 = __importDefault(require(\"subleveldown\"));\nconst encoding_down_1 = __importDefault(require(\"encoding-down\"));\ntmp_promise_1.setGracefulCleanup();\nconst tmpOptions = { prefix: \"ganache-core_\", unsafeCleanup: true };\nconst noop = () => Promise.resolve();\nclass Database extends emittery_1.default {\n /**\n * The Database handles the creation of the database, and all access to it.\n * Once the database has been fully initialized it will emit a `ready`\n * event.\n * @param options Supports one of two options: `db` (a leveldown compliant\n * store instance) or `dbPath` (the path to store/read the db instance)\n * @param blockchain\n */\n constructor(options, blockchain) {\n super();\n _options.set(this, void 0);\n _cleanupDirectory.set(this, noop);\n _closed.set(this, false);\n this.directory = null;\n this.db = null;\n _rootStore.set(this, void 0);\n this.initialize = async () => {\n const levelupOptions = {\n keyEncoding: \"binary\",\n valueEncoding: \"binary\"\n };\n const store = __classPrivateFieldGet(this, _options).db;\n let db;\n if (store) {\n __classPrivateFieldSet(this, _rootStore, encoding_down_1.default(store, levelupOptions));\n db = levelup_1.default(__classPrivateFieldGet(this, _rootStore), {});\n }\n else {\n let directory = __classPrivateFieldGet(this, _options).dbPath;\n if (!directory) {\n const dirInfo = await tmp_promise_1.dir(tmpOptions);\n directory = dirInfo.path;\n __classPrivateFieldSet(this, _cleanupDirectory, dirInfo.cleanup);\n // don't continue if we closed while we were waiting for the dir\n if (__classPrivateFieldGet(this, _closed))\n return __classPrivateFieldGet(this, _cleanup).call(this);\n }\n this.directory = directory;\n // specify an empty `prefix` for browser-based leveldown (level-js)\n const leveldownOpts = { prefix: \"\" };\n const store = encoding_down_1.default(leveldown_1.default(directory, leveldownOpts), levelupOptions);\n __classPrivateFieldSet(this, _rootStore, store);\n db = levelup_1.default(store);\n }\n // don't continue if we closed while we were waiting for the db\n if (__classPrivateFieldGet(this, _closed))\n return __classPrivateFieldGet(this, _cleanup).call(this);\n const open = db.open();\n this.trie = subleveldown_1.default(db, \"T\", levelupOptions);\n this.db = db;\n await open;\n // don't continue if we closed while we were waiting for it to open\n if (__classPrivateFieldGet(this, _closed))\n return __classPrivateFieldGet(this, _cleanup).call(this);\n this.blocks = subleveldown_1.default(db, \"b\", levelupOptions);\n this.blockIndexes = subleveldown_1.default(db, \"i\", levelupOptions);\n this.blockLogs = subleveldown_1.default(db, \"l\", levelupOptions);\n this.transactions = subleveldown_1.default(db, \"t\", levelupOptions);\n this.transactionReceipts = subleveldown_1.default(db, \"r\", levelupOptions);\n this.storageKeys = subleveldown_1.default(db, \"s\", levelupOptions);\n return this.emit(\"ready\");\n };\n /**\n * Cleans up the database connections and our tmp directory.\n */\n _cleanup.set(this, async () => {\n const db = this.db;\n if (db) {\n await new Promise((resolve, reject) => db.close(err => {\n if (err)\n return void reject(err);\n resolve(void 0);\n }));\n await Promise.all([\n this.blocks.close(),\n this.blockIndexes.close(),\n this.blockIndexes.close(),\n this.transactionReceipts.close(),\n this.transactions.close(),\n this.storageKeys.close(),\n this.trie.close()\n ]);\n }\n return __classPrivateFieldGet(this, _cleanupDirectory).call(this);\n });\n __classPrivateFieldSet(this, _options, options);\n this.blockchain = blockchain;\n }\n /**\n * Call `batch` to batch `put` and `del` operations within the same\n * event loop tick of the provided function. All db operations within the\n * batch _must_ be executed synchronously.\n * @param fn Within this function's event loop tick, all `put` and\n * `del` database operations are applied in a single atomic operation. This\n * provides a single write call and if any individual put/del's fail the\n * entire operation fails and no modifications are made.\n * @returns a Promise that resolves to the return value\n * of the provided function.\n */\n batch(fn) {\n const rootDb = __classPrivateFieldGet(this, _rootStore).db;\n const batch = this.db.batch();\n const originalPut = rootDb.put;\n const originalDel = rootDb.del;\n rootDb.put = batch.put.bind(batch);\n rootDb.del = batch.del.bind(batch);\n let prom;\n try {\n const ret = fn();\n // PSA: don't let vscode (or yourself) rewrite this to `await` the\n // `batch.write` call. The `finally` block needs to run _before_ the\n // write promise has resolved.\n prom = batch.write().then(() => ret);\n }\n finally {\n rootDb.put = originalPut;\n rootDb.del = originalDel;\n }\n return prom;\n }\n /**\n * Gracefully closes the database and cleans up the file system and waits for\n * it to fully shut down. Emits a `close` event once complete.\n * Note: only emits `close` once.\n */\n async close() {\n const wasClosed = __classPrivateFieldGet(this, _closed);\n __classPrivateFieldSet(this, _closed, true);\n await __classPrivateFieldGet(this, _cleanup).call(this);\n // only emit `close` once\n if (!wasClosed) {\n this.emit(\"close\");\n return;\n }\n }\n}\nexports.default = Database;\n_options = new WeakMap(), _cleanupDirectory = new WeakMap(), _closed = new WeakMap(), _rootStore = new WeakMap(), _cleanup = new WeakMap();\n//# sourceMappingURL=database.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nconst Buffer = require('buffer').Buffer;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new bn_js_1.default('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new bn_js_1.default('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TrieReadStream = void 0;\nvar nibbles_1 = require(\"./util/nibbles\");\nvar Readable = require('readable-stream').Readable;\nvar TrieReadStream = /** @class */ (function (_super) {\n __extends(TrieReadStream, _super);\n function TrieReadStream(trie) {\n var _this = _super.call(this, { objectMode: true }) || this;\n _this.trie = trie;\n _this._started = false;\n return _this;\n }\n TrieReadStream.prototype._read = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this._started) {\n return [2 /*return*/];\n }\n this._started = true;\n return [4 /*yield*/, this.trie._findValueNodes(function (nodeRef, node, key, walkController) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (node !== null) {\n this.push({\n key: nibbles_1.nibblesToBuffer(key),\n value: node.value,\n });\n walkController.allChildren(node, key);\n }\n return [2 /*return*/];\n });\n }); })];\n case 1:\n _a.sent();\n this.push(null);\n return [2 /*return*/];\n }\n });\n });\n };\n return TrieReadStream;\n}(Readable));\nexports.TrieReadStream = TrieReadStream;\n//# sourceMappingURL=readStream.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar legacyTransaction_1 = require(\"./legacyTransaction\");\nObject.defineProperty(exports, \"Transaction\", { enumerable: true, get: function () { return legacyTransaction_1.default; } });\nvar eip2930Transaction_1 = require(\"./eip2930Transaction\");\nObject.defineProperty(exports, \"AccessListEIP2930Transaction\", { enumerable: true, get: function () { return eip2930Transaction_1.default; } });\nvar transactionFactory_1 = require(\"./transactionFactory\");\nObject.defineProperty(exports, \"TransactionFactory\", { enumerable: true, get: function () { return transactionFactory_1.default; } });\nvar eip1559Transaction_1 = require(\"./eip1559Transaction\");\nObject.defineProperty(exports, \"FeeMarketEIP1559Transaction\", { enumerable: true, get: function () { return eip1559Transaction_1.default; } });\n__exportStar(require(\"./types\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar types_1 = require(\"./types\");\nvar baseTransaction_1 = require(\"./baseTransaction\");\nvar TRANSACTION_TYPE = 0;\n/**\n * An Ethereum non-typed (legacy) transaction\n */\nvar Transaction = /** @class */ (function (_super) {\n __extends(Transaction, _super);\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n function Transaction(txData, opts) {\n if (opts === void 0) { opts = {}; }\n var _a;\n var _this = _super.call(this, __assign(__assign({}, txData), { type: TRANSACTION_TYPE }), opts) || this;\n _this.gasPrice = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(txData.gasPrice === '' ? '0x' : txData.gasPrice));\n _this._validateCannotExceedMaxInteger({ gasPrice: _this.gasPrice });\n _this._validateTxV(_this.v);\n var freeze = (_a = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _a !== void 0 ? _a : true;\n if (freeze) {\n Object.freeze(_this);\n }\n return _this;\n }\n /**\n * Instantiate a transaction from a data dictionary\n */\n Transaction.fromTxData = function (txData, opts) {\n if (opts === void 0) { opts = {}; }\n return new Transaction(txData, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n */\n Transaction.fromSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n var values = ethereumjs_util_1.rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input. Must be array');\n }\n return this.fromValuesArray(values, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of `fromSerializedTx()`)\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the `fromSerializedTx()` constructor\n */\n Transaction.fromRlpSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n return Transaction.fromSerializedTx(serialized, opts);\n };\n /**\n * Create a transaction from a values array.\n *\n * The format is:\n * nonce, gasPrice, gasLimit, to, value, data, v, r, s\n */\n Transaction.fromValuesArray = function (values, opts) {\n if (opts === void 0) { opts = {}; }\n // If length is not 6, it has length 9. If v/r/s are empty Buffers, it is still an unsigned transaction\n // This happens if you get the RLP data from `raw()`\n if (values.length !== 6 && values.length !== 9) {\n throw new Error('Invalid transaction. Only expecting 6 values (for unsigned tx) or 9 values (for signed tx).');\n }\n var _a = __read(values, 9), nonce = _a[0], gasPrice = _a[1], gasLimit = _a[2], to = _a[3], value = _a[4], data = _a[5], v = _a[6], r = _a[7], s = _a[8];\n return new Transaction({\n nonce: nonce,\n gasPrice: gasPrice,\n gasLimit: gasLimit,\n to: to,\n value: value,\n data: data,\n v: v,\n r: r,\n s: s,\n }, opts);\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n */\n Transaction.prototype.raw = function () {\n return [\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.gasPrice),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n this.v !== undefined ? ethereumjs_util_1.bnToRlp(this.v) : Buffer.from([]),\n this.r !== undefined ? ethereumjs_util_1.bnToRlp(this.r) : Buffer.from([]),\n this.s !== undefined ? ethereumjs_util_1.bnToRlp(this.s) : Buffer.from([]),\n ];\n };\n /**\n * Returns the rlp encoding of the transaction.\n */\n Transaction.prototype.serialize = function () {\n return ethereumjs_util_1.rlp.encode(this.raw());\n };\n Transaction.prototype._unsignedTxImplementsEIP155 = function () {\n return this.common.gteHardfork('spuriousDragon');\n };\n Transaction.prototype._getMessageToSign = function (withEIP155) {\n var values = [\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.gasPrice),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n ];\n if (withEIP155) {\n values.push(ethereumjs_util_1.toBuffer(this.common.chainIdBN()));\n values.push(ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(0)));\n values.push(ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(0)));\n }\n return values;\n };\n Transaction.prototype.getMessageToSign = function (hashMessage) {\n if (hashMessage === void 0) { hashMessage = true; }\n var message = this._getMessageToSign(this._unsignedTxImplementsEIP155());\n if (hashMessage) {\n return ethereumjs_util_1.rlphash(message);\n }\n else {\n return message;\n }\n };\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n Transaction.prototype.getUpfrontCost = function () {\n return this.gasLimit.mul(this.gasPrice).add(this.value);\n };\n /**\n * Computes a sha3-256 hash of the serialized tx\n */\n Transaction.prototype.hash = function () {\n return ethereumjs_util_1.rlphash(this.raw());\n };\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n Transaction.prototype.getMessageToVerifySignature = function () {\n var withEIP155 = this._signedTxImplementsEIP155();\n var message = this._getMessageToSign(withEIP155);\n return ethereumjs_util_1.rlphash(message);\n };\n /**\n * Returns the public key of the sender\n */\n Transaction.prototype.getSenderPublicKey = function () {\n var _a;\n var msgHash = this.getMessageToVerifySignature();\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && ((_a = this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var _b = this, v = _b.v, r = _b.r, s = _b.s;\n try {\n return ethereumjs_util_1.ecrecover(msgHash, v, ethereumjs_util_1.bnToRlp(r), ethereumjs_util_1.bnToRlp(s), this._signedTxImplementsEIP155() ? this.common.chainIdBN() : undefined);\n }\n catch (e) {\n throw new Error('Invalid Signature');\n }\n };\n /**\n * Process the v, r, s values from the `sign` method of the base transaction.\n */\n Transaction.prototype._processSignature = function (v, r, s) {\n var vBN = new ethereumjs_util_1.BN(v);\n if (this._unsignedTxImplementsEIP155()) {\n vBN.iadd(this.common.chainIdBN().muln(2).addn(8));\n }\n var opts = {\n common: this.common,\n };\n return Transaction.fromTxData({\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n v: vBN,\n r: new ethereumjs_util_1.BN(r),\n s: new ethereumjs_util_1.BN(s),\n }, opts);\n };\n /**\n * Returns an object with the JSON representation of the transaction\n */\n Transaction.prototype.toJSON = function () {\n return {\n nonce: ethereumjs_util_1.bnToHex(this.nonce),\n gasPrice: ethereumjs_util_1.bnToHex(this.gasPrice),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: ethereumjs_util_1.bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n v: this.v !== undefined ? ethereumjs_util_1.bnToHex(this.v) : undefined,\n r: this.r !== undefined ? ethereumjs_util_1.bnToHex(this.r) : undefined,\n s: this.s !== undefined ? ethereumjs_util_1.bnToHex(this.s) : undefined,\n };\n };\n /**\n * Validates tx's `v` value\n */\n Transaction.prototype._validateTxV = function (v) {\n if (v === undefined || v.eqn(0)) {\n return;\n }\n if (!this.common.gteHardfork('spuriousDragon')) {\n return;\n }\n if (v.eqn(27) || v.eqn(28)) {\n return;\n }\n var chainIdDoubled = this.common.chainIdBN().muln(2);\n var isValidEIP155V = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36));\n if (!isValidEIP155V) {\n throw new Error(\"Incompatible EIP155-based V \" + v.toString() + \" and chain id \" + this.common\n .chainIdBN()\n .toString() + \". See the Common parameter of the Transaction constructor to set the chain id.\");\n }\n };\n Transaction.prototype._signedTxImplementsEIP155 = function () {\n if (!this.isSigned()) {\n throw Error('This transaction is not signed');\n }\n var onEIP155BlockOrLater = this.common.gteHardfork('spuriousDragon');\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36, then when computing the hash of a transaction for purposes of signing or recovering, instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data), hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n var v = this.v;\n var chainIdDoubled = this.common.chainIdBN().muln(2);\n var vAndChainIdMeetEIP155Conditions = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36));\n return vAndChainIdMeetEIP155Conditions && onEIP155BlockOrLater;\n };\n return Transaction;\n}(baseTransaction_1.BaseTransaction));\nexports.default = Transaction;\n//# sourceMappingURL=legacyTransaction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar baseTransaction_1 = require(\"./baseTransaction\");\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\nvar TRANSACTION_TYPE = 1;\nvar TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex');\n/**\n * Typed transaction with optional access lists\n *\n * - TransactionType: 1\n * - EIP: [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)\n */\nvar AccessListEIP2930Transaction = /** @class */ (function (_super) {\n __extends(AccessListEIP2930Transaction, _super);\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n function AccessListEIP2930Transaction(txData, opts) {\n if (opts === void 0) { opts = {}; }\n var _a, _b;\n var _this = this;\n var chainId = txData.chainId, accessList = txData.accessList, gasPrice = txData.gasPrice;\n _this = _super.call(this, __assign(__assign({}, txData), { type: TRANSACTION_TYPE }), opts) || this;\n // EIP-2718 check is done in Common\n if (!_this.common.isActivatedEIP(2930)) {\n throw new Error('EIP-2930 not enabled on Common');\n }\n // Populate the access list fields\n var accessListData = util_1.AccessLists.getAccessListData(accessList !== null && accessList !== void 0 ? accessList : []);\n _this.accessList = accessListData.accessList;\n _this.AccessListJSON = accessListData.AccessListJSON;\n // Verify the access list format.\n util_1.AccessLists.verifyAccessList(_this.accessList);\n _this.chainId = chainId ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(chainId)) : _this.common.chainIdBN();\n _this.gasPrice = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(gasPrice === '' ? '0x' : gasPrice));\n _this._validateCannotExceedMaxInteger({ gasPrice: _this.gasPrice });\n if (!_this.chainId.eq(_this.common.chainIdBN())) {\n throw new Error('The chain ID does not match the chain ID of Common');\n }\n if (_this.v && !_this.v.eqn(0) && !_this.v.eqn(1)) {\n throw new Error('The y-parity of the transaction should either be 0 or 1');\n }\n if (_this.common.gteHardfork('homestead') && ((_a = _this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var freeze = (_b = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _b !== void 0 ? _b : true;\n if (freeze) {\n Object.freeze(_this);\n }\n return _this;\n }\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"senderR\", {\n /**\n * EIP-2930 alias for `r`\n */\n get: function () {\n return this.r;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"senderS\", {\n /**\n * EIP-2930 alias for `s`\n */\n get: function () {\n return this.s;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"yParity\", {\n /**\n * EIP-2930 alias for `v`\n */\n get: function () {\n return this.v;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Instantiate a transaction from a data dictionary\n */\n AccessListEIP2930Transaction.fromTxData = function (txData, opts) {\n if (opts === void 0) { opts = {}; }\n return new AccessListEIP2930Transaction(txData, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Note: this means that the Buffer should start with 0x01.\n */\n AccessListEIP2930Transaction.fromSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\"Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: \" + TRANSACTION_TYPE + \", received: \" + serialized\n .slice(0, 1)\n .toString('hex'));\n }\n var values = ethereumjs_util_1.rlp.decode(serialized.slice(1));\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array');\n }\n return AccessListEIP2930Transaction.fromValuesArray(values, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of `fromSerializedTx()`)\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the `fromSerializedTx()` constructor\n */\n AccessListEIP2930Transaction.fromRlpSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n return AccessListEIP2930Transaction.fromSerializedTx(serialized, opts);\n };\n /**\n * Create a transaction from a values array.\n *\n * The format is:\n * chainId, nonce, gasPrice, gasLimit, to, value, data, access_list, yParity (v), senderR (r), senderS (s)\n */\n AccessListEIP2930Transaction.fromValuesArray = function (values, opts) {\n if (opts === void 0) { opts = {}; }\n if (values.length !== 8 && values.length !== 11) {\n throw new Error('Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx).');\n }\n var _a = __read(values, 11), chainId = _a[0], nonce = _a[1], gasPrice = _a[2], gasLimit = _a[3], to = _a[4], value = _a[5], data = _a[6], accessList = _a[7], v = _a[8], r = _a[9], s = _a[10];\n var emptyAccessList = [];\n return new AccessListEIP2930Transaction({\n chainId: new ethereumjs_util_1.BN(chainId),\n nonce: nonce,\n gasPrice: gasPrice,\n gasLimit: gasLimit,\n to: to,\n value: value,\n data: data,\n accessList: accessList !== null && accessList !== void 0 ? accessList : emptyAccessList,\n v: v !== undefined ? new ethereumjs_util_1.BN(v) : undefined,\n r: r,\n s: s,\n }, opts);\n };\n /**\n * The amount of gas paid for the data in this tx\n */\n AccessListEIP2930Transaction.prototype.getDataFee = function () {\n var cost = _super.prototype.getDataFee.call(this);\n cost.iaddn(util_1.AccessLists.getDataFeeEIP2930(this.accessList, this.common));\n return cost;\n };\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n AccessListEIP2930Transaction.prototype.getUpfrontCost = function () {\n return this.gasLimit.mul(this.gasPrice).add(this.value);\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n *\n * Use `serialize()` to add to block data for `Block.fromValuesArray()`.\n */\n AccessListEIP2930Transaction.prototype.raw = function () {\n return [\n ethereumjs_util_1.bnToRlp(this.chainId),\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.gasPrice),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? ethereumjs_util_1.bnToRlp(this.v) : Buffer.from([]),\n this.r !== undefined ? ethereumjs_util_1.bnToRlp(this.r) : Buffer.from([]),\n this.s !== undefined ? ethereumjs_util_1.bnToRlp(this.s) : Buffer.from([]),\n ];\n };\n /**\n * Returns the serialized encoding of the transaction.\n */\n AccessListEIP2930Transaction.prototype.serialize = function () {\n var base = this.raw();\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, ethereumjs_util_1.rlp.encode(base)]);\n };\n /**\n * Returns the serialized unsigned tx (hashed or raw), which is used to sign the transaction.\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n AccessListEIP2930Transaction.prototype.getMessageToSign = function (hashMessage) {\n if (hashMessage === void 0) { hashMessage = true; }\n var base = this.raw().slice(0, 8);\n var message = Buffer.concat([TRANSACTION_TYPE_BUFFER, ethereumjs_util_1.rlp.encode(base)]);\n if (hashMessage) {\n return ethereumjs_util_1.keccak256(message);\n }\n else {\n return message;\n }\n };\n /**\n * Computes a sha3-256 hash of the serialized tx\n */\n AccessListEIP2930Transaction.prototype.hash = function () {\n if (!this.isSigned()) {\n throw new Error('Cannot call hash method if transaction is not signed');\n }\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n AccessListEIP2930Transaction.prototype.getMessageToVerifySignature = function () {\n return this.getMessageToSign();\n };\n /**\n * Returns the public key of the sender\n */\n AccessListEIP2930Transaction.prototype.getSenderPublicKey = function () {\n var _a;\n if (!this.isSigned()) {\n throw new Error('Cannot call this method if transaction is not signed');\n }\n var msgHash = this.getMessageToVerifySignature();\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && ((_a = this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var _b = this, yParity = _b.yParity, r = _b.r, s = _b.s;\n try {\n return ethereumjs_util_1.ecrecover(msgHash, yParity.addn(27), // Recover the 27 which was stripped from ecsign\n ethereumjs_util_1.bnToRlp(r), ethereumjs_util_1.bnToRlp(s));\n }\n catch (e) {\n throw new Error('Invalid Signature');\n }\n };\n AccessListEIP2930Transaction.prototype._processSignature = function (v, r, s) {\n var opts = {\n common: this.common,\n };\n return AccessListEIP2930Transaction.fromTxData({\n chainId: this.chainId,\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new ethereumjs_util_1.BN(v - 27),\n r: new ethereumjs_util_1.BN(r),\n s: new ethereumjs_util_1.BN(s),\n }, opts);\n };\n /**\n * Returns an object with the JSON representation of the transaction\n */\n AccessListEIP2930Transaction.prototype.toJSON = function () {\n var accessListJSON = util_1.AccessLists.getAccessListJSON(this.accessList);\n return {\n chainId: ethereumjs_util_1.bnToHex(this.chainId),\n nonce: ethereumjs_util_1.bnToHex(this.nonce),\n gasPrice: ethereumjs_util_1.bnToHex(this.gasPrice),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: ethereumjs_util_1.bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? ethereumjs_util_1.bnToHex(this.v) : undefined,\n r: this.r !== undefined ? ethereumjs_util_1.bnToHex(this.r) : undefined,\n s: this.s !== undefined ? ethereumjs_util_1.bnToHex(this.s) : undefined,\n };\n };\n return AccessListEIP2930Transaction;\n}(baseTransaction_1.BaseTransaction));\nexports.default = AccessListEIP2930Transaction;\n//# sourceMappingURL=eip2930Transaction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar baseTransaction_1 = require(\"./baseTransaction\");\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\nvar TRANSACTION_TYPE = 2;\nvar TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex');\nvar FeeMarketEIP1559Transaction = /** @class */ (function (_super) {\n __extends(FeeMarketEIP1559Transaction, _super);\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n function FeeMarketEIP1559Transaction(txData, opts) {\n if (opts === void 0) { opts = {}; }\n var _a, _b;\n var _this = this;\n var chainId = txData.chainId, accessList = txData.accessList, maxFeePerGas = txData.maxFeePerGas, maxPriorityFeePerGas = txData.maxPriorityFeePerGas;\n _this = _super.call(this, __assign(__assign({}, txData), { type: TRANSACTION_TYPE }), opts) || this;\n if (!_this.common.isActivatedEIP(1559)) {\n throw new Error('EIP-1559 not enabled on Common');\n }\n // Populate the access list fields\n var accessListData = util_1.AccessLists.getAccessListData(accessList !== null && accessList !== void 0 ? accessList : []);\n _this.accessList = accessListData.accessList;\n _this.AccessListJSON = accessListData.AccessListJSON;\n // Verify the access list format.\n util_1.AccessLists.verifyAccessList(_this.accessList);\n _this.chainId = chainId ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(chainId)) : _this.common.chainIdBN();\n _this.maxFeePerGas = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(maxFeePerGas === '' ? '0x' : maxFeePerGas));\n _this.maxPriorityFeePerGas = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(maxPriorityFeePerGas === '' ? '0x' : maxPriorityFeePerGas));\n _this._validateCannotExceedMaxInteger({\n maxFeePerGas: _this.maxFeePerGas,\n maxPriorityFeePerGas: _this.maxPriorityFeePerGas,\n });\n if (!_this.chainId.eq(_this.common.chainIdBN())) {\n throw new Error('The chain ID does not match the chain ID of Common');\n }\n if (_this.v && !_this.v.eqn(0) && !_this.v.eqn(1)) {\n throw new Error('The y-parity of the transaction should either be 0 or 1');\n }\n if (_this.common.gteHardfork('homestead') && ((_a = _this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var freeze = (_b = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _b !== void 0 ? _b : true;\n if (freeze) {\n Object.freeze(_this);\n }\n return _this;\n }\n Object.defineProperty(FeeMarketEIP1559Transaction.prototype, \"senderR\", {\n /**\n * EIP-2930 alias for `r`\n */\n get: function () {\n return this.r;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FeeMarketEIP1559Transaction.prototype, \"senderS\", {\n /**\n * EIP-2930 alias for `s`\n */\n get: function () {\n return this.s;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FeeMarketEIP1559Transaction.prototype, \"yParity\", {\n /**\n * EIP-2930 alias for `v`\n */\n get: function () {\n return this.v;\n },\n enumerable: false,\n configurable: true\n });\n FeeMarketEIP1559Transaction.fromTxData = function (txData, opts) {\n if (opts === void 0) { opts = {}; }\n return new FeeMarketEIP1559Transaction(txData, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Note: this means that the Buffer should start with 0x01.\n */\n FeeMarketEIP1559Transaction.fromSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\"Invalid serialized tx input: not an EIP-1559 transaction (wrong tx type, expected: \" + TRANSACTION_TYPE + \", received: \" + serialized\n .slice(0, 1)\n .toString('hex'));\n }\n var values = ethereumjs_util_1.rlp.decode(serialized.slice(1));\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array');\n }\n return FeeMarketEIP1559Transaction.fromValuesArray(values, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of `fromSerializedTx()`)\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the `fromSerializedTx()` constructor\n */\n FeeMarketEIP1559Transaction.fromRlpSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n return FeeMarketEIP1559Transaction.fromSerializedTx(serialized, opts);\n };\n /**\n * Create a transaction from a values array.\n *\n * The format is:\n * chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, signatureYParity, signatureR, signatureS\n */\n FeeMarketEIP1559Transaction.fromValuesArray = function (values, opts) {\n if (opts === void 0) { opts = {}; }\n if (values.length !== 9 && values.length !== 12) {\n throw new Error('Invalid EIP-1559 transaction. Only expecting 9 values (for unsigned tx) or 12 values (for signed tx).');\n }\n var _a = __read(values, 12), chainId = _a[0], nonce = _a[1], maxPriorityFeePerGas = _a[2], maxFeePerGas = _a[3], gasLimit = _a[4], to = _a[5], value = _a[6], data = _a[7], accessList = _a[8], v = _a[9], r = _a[10], s = _a[11];\n return new FeeMarketEIP1559Transaction({\n chainId: new ethereumjs_util_1.BN(chainId),\n nonce: nonce,\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasLimit: gasLimit,\n to: to,\n value: value,\n data: data,\n accessList: accessList !== null && accessList !== void 0 ? accessList : [],\n v: v !== undefined ? new ethereumjs_util_1.BN(v) : undefined,\n r: r,\n s: s,\n }, opts);\n };\n /**\n * The amount of gas paid for the data in this tx\n */\n FeeMarketEIP1559Transaction.prototype.getDataFee = function () {\n var cost = _super.prototype.getDataFee.call(this);\n cost.iaddn(util_1.AccessLists.getDataFeeEIP2930(this.accessList, this.common));\n return cost;\n };\n /**\n * The up front amount that an account must have for this transaction to be valid\n * @param baseFee The base fee of the block (will be set to 0 if not provided)\n */\n FeeMarketEIP1559Transaction.prototype.getUpfrontCost = function (baseFee) {\n if (!baseFee) {\n baseFee = new ethereumjs_util_1.BN(0);\n }\n var inclusionFeePerGas = ethereumjs_util_1.BN.min(this.maxPriorityFeePerGas, this.maxFeePerGas.sub(baseFee));\n var gasPrice = inclusionFeePerGas.add(baseFee);\n return this.gasLimit.mul(gasPrice).add(this.value);\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n *\n * Use `serialize()` to add to block data for `Block.fromValuesArray()`.\n */\n FeeMarketEIP1559Transaction.prototype.raw = function () {\n return [\n ethereumjs_util_1.bnToRlp(this.chainId),\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.maxPriorityFeePerGas),\n ethereumjs_util_1.bnToRlp(this.maxFeePerGas),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? ethereumjs_util_1.bnToRlp(this.v) : Buffer.from([]),\n this.r !== undefined ? ethereumjs_util_1.bnToRlp(this.r) : Buffer.from([]),\n this.s !== undefined ? ethereumjs_util_1.bnToRlp(this.s) : Buffer.from([]),\n ];\n };\n /**\n * Returns the serialized encoding of the transaction.\n */\n FeeMarketEIP1559Transaction.prototype.serialize = function () {\n var base = this.raw();\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, ethereumjs_util_1.rlp.encode(base)]);\n };\n FeeMarketEIP1559Transaction.prototype.getMessageToSign = function (hashMessage) {\n if (hashMessage === void 0) { hashMessage = true; }\n var base = this.raw().slice(0, 9);\n var message = Buffer.concat([TRANSACTION_TYPE_BUFFER, ethereumjs_util_1.rlp.encode(base)]);\n if (hashMessage) {\n return ethereumjs_util_1.keccak256(message);\n }\n else {\n return message;\n }\n };\n /**\n * Computes a sha3-256 hash of the serialized tx\n */\n FeeMarketEIP1559Transaction.prototype.hash = function () {\n if (!this.isSigned()) {\n throw new Error('Cannot call hash method if transaction is not signed');\n }\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n FeeMarketEIP1559Transaction.prototype.getMessageToVerifySignature = function () {\n return this.getMessageToSign();\n };\n /**\n * Returns the public key of the sender\n */\n FeeMarketEIP1559Transaction.prototype.getSenderPublicKey = function () {\n var _a;\n if (!this.isSigned()) {\n throw new Error('Cannot call this method if transaction is not signed');\n }\n var msgHash = this.getMessageToVerifySignature();\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && ((_a = this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var _b = this, v = _b.v, r = _b.r, s = _b.s;\n try {\n return ethereumjs_util_1.ecrecover(msgHash, v.addn(27), // Recover the 27 which was stripped from ecsign\n ethereumjs_util_1.bnToRlp(r), ethereumjs_util_1.bnToRlp(s));\n }\n catch (e) {\n throw new Error('Invalid Signature');\n }\n };\n FeeMarketEIP1559Transaction.prototype._processSignature = function (v, r, s) {\n var opts = {\n common: this.common,\n };\n return FeeMarketEIP1559Transaction.fromTxData({\n chainId: this.chainId,\n nonce: this.nonce,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n maxFeePerGas: this.maxFeePerGas,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new ethereumjs_util_1.BN(v - 27),\n r: new ethereumjs_util_1.BN(r),\n s: new ethereumjs_util_1.BN(s),\n }, opts);\n };\n /**\n * Returns an object with the JSON representation of the transaction\n */\n FeeMarketEIP1559Transaction.prototype.toJSON = function () {\n var accessListJSON = util_1.AccessLists.getAccessListJSON(this.accessList);\n return {\n chainId: ethereumjs_util_1.bnToHex(this.chainId),\n nonce: ethereumjs_util_1.bnToHex(this.nonce),\n maxPriorityFeePerGas: ethereumjs_util_1.bnToHex(this.maxPriorityFeePerGas),\n maxFeePerGas: ethereumjs_util_1.bnToHex(this.maxFeePerGas),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: ethereumjs_util_1.bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? ethereumjs_util_1.bnToHex(this.v) : undefined,\n r: this.r !== undefined ? ethereumjs_util_1.bnToHex(this.r) : undefined,\n s: this.s !== undefined ? ethereumjs_util_1.bnToHex(this.s) : undefined,\n };\n };\n return FeeMarketEIP1559Transaction;\n}(baseTransaction_1.BaseTransaction));\nexports.default = FeeMarketEIP1559Transaction;\n//# sourceMappingURL=eip1559Transaction.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar util_1 = require(\"./util\");\nvar xor = require('buffer-xor');\nvar Ethash = /** @class */ (function () {\n function Ethash(cacheDB) {\n this.dbOpts = {\n valueEncoding: 'json',\n };\n this.cacheDB = cacheDB;\n this.cache = [];\n }\n Ethash.prototype.mkcache = function (cacheSize, seed) {\n // console.log('generating cache')\n // console.log('size: ' + cacheSize)\n // console.log('seed: ' + seed.toString('hex'))\n var n = Math.floor(cacheSize / util_1.params.HASH_BYTES);\n var o = [ethereumjs_util_1.keccak(seed, 512)];\n var i;\n for (i = 1; i < n; i++) {\n o.push(ethereumjs_util_1.keccak(o[o.length - 1], 512));\n }\n for (var _ = 0; _ < util_1.params.CACHE_ROUNDS; _++) {\n for (i = 0; i < n; i++) {\n var v = o[i].readUInt32LE(0) % n;\n o[i] = ethereumjs_util_1.keccak(xor(o[(i - 1 + n) % n], o[v]), 512);\n }\n }\n this.cache = o;\n return this.cache;\n };\n Ethash.prototype.calcDatasetItem = function (i) {\n var n = this.cache.length;\n var r = Math.floor(util_1.params.HASH_BYTES / util_1.params.WORD_BYTES);\n var mix = Buffer.from(this.cache[i % n]);\n mix.writeInt32LE(mix.readUInt32LE(0) ^ i, 0);\n mix = ethereumjs_util_1.keccak(mix, 512);\n for (var j = 0; j < util_1.params.DATASET_PARENTS; j++) {\n var cacheIndex = util_1.fnv(i ^ j, mix.readUInt32LE((j % r) * 4));\n mix = util_1.fnvBuffer(mix, this.cache[cacheIndex % n]);\n }\n return ethereumjs_util_1.keccak(mix, 512);\n };\n Ethash.prototype.run = function (val, nonce, fullSize) {\n if (!fullSize && this.fullSize) {\n fullSize = this.fullSize;\n }\n if (!fullSize) {\n throw new Error('fullSize needed');\n }\n var n = Math.floor(fullSize / util_1.params.HASH_BYTES);\n var w = Math.floor(util_1.params.MIX_BYTES / util_1.params.WORD_BYTES);\n var s = ethereumjs_util_1.keccak(Buffer.concat([val, util_1.bufReverse(nonce)]), 512);\n var mixhashes = Math.floor(util_1.params.MIX_BYTES / util_1.params.HASH_BYTES);\n var mix = Buffer.concat(Array(mixhashes).fill(s));\n var i;\n for (i = 0; i < util_1.params.ACCESSES; i++) {\n var p = (util_1.fnv(i ^ s.readUInt32LE(0), mix.readUInt32LE((i % w) * 4)) % Math.floor(n / mixhashes)) *\n mixhashes;\n var newdata = [];\n for (var j = 0; j < mixhashes; j++) {\n newdata.push(this.calcDatasetItem(p + j));\n }\n mix = util_1.fnvBuffer(mix, Buffer.concat(newdata));\n }\n var cmix = Buffer.alloc(mix.length / 4);\n for (i = 0; i < mix.length / 4; i = i + 4) {\n var a = util_1.fnv(mix.readUInt32LE(i * 4), mix.readUInt32LE((i + 1) * 4));\n var b = util_1.fnv(a, mix.readUInt32LE((i + 2) * 4));\n var c = util_1.fnv(b, mix.readUInt32LE((i + 3) * 4));\n cmix.writeUInt32LE(c, i);\n }\n return {\n mix: cmix,\n hash: ethereumjs_util_1.keccak256(Buffer.concat([s, cmix])),\n };\n };\n Ethash.prototype.cacheHash = function () {\n return ethereumjs_util_1.keccak256(Buffer.concat(this.cache));\n };\n Ethash.prototype.headerHash = function (rawHeader) {\n return ethereumjs_util_1.rlphash(rawHeader.slice(0, -2));\n };\n /**\n * Loads the seed and cache given a block number.\n */\n Ethash.prototype.loadEpoc = function (number) {\n return __awaiter(this, void 0, void 0, function () {\n var epoc, findLastSeed, data, error_1, _a, seed, foundEpoc, cache;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n epoc = util_1.getEpoc(number);\n if (this.epoc === epoc) {\n return [2 /*return*/];\n }\n this.epoc = epoc;\n if (!this.cacheDB) {\n throw new Error('cacheDB needed');\n }\n findLastSeed = function (epoc) { return __awaiter(_this, void 0, void 0, function () {\n var data, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (epoc === 0) {\n return [2 /*return*/, [ethereumjs_util_1.zeros(32), 0]];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cacheDB.get(epoc, this.dbOpts)];\n case 2:\n data = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_2 = _a.sent();\n if (error_2.type !== 'NotFoundError') {\n throw error_2;\n }\n return [3 /*break*/, 4];\n case 4:\n if (data) {\n return [2 /*return*/, [data.seed, epoc]];\n }\n else {\n return [2 /*return*/, findLastSeed(epoc - 1)];\n }\n return [2 /*return*/];\n }\n });\n }); };\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cacheDB.get(epoc, this.dbOpts)];\n case 2:\n data = _b.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _b.sent();\n if (error_1.type !== 'NotFoundError') {\n throw error_1;\n }\n return [3 /*break*/, 4];\n case 4:\n if (!!data) return [3 /*break*/, 7];\n this.cacheSize = util_1.getCacheSize(epoc);\n this.fullSize = util_1.getFullSize(epoc);\n return [4 /*yield*/, findLastSeed(epoc)];\n case 5:\n _a = __read.apply(void 0, [_b.sent(), 2]), seed = _a[0], foundEpoc = _a[1];\n this.seed = util_1.getSeed(seed, foundEpoc, epoc);\n cache = this.mkcache(this.cacheSize, this.seed);\n // store the generated cache\n return [4 /*yield*/, this.cacheDB.put(epoc, {\n cacheSize: this.cacheSize,\n fullSize: this.fullSize,\n seed: this.seed,\n cache: cache,\n }, this.dbOpts)];\n case 6:\n // store the generated cache\n _b.sent();\n return [3 /*break*/, 8];\n case 7:\n // Object.assign(this, data)\n this.cache = data.cache.map(function (a) {\n return Buffer.from(a);\n });\n this.cacheSize = data.cacheSize;\n this.fullSize = data.fullSize;\n this.seed = Buffer.from(data.seed);\n _b.label = 8;\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n Ethash.prototype._verifyPOW = function (header) {\n return __awaiter(this, void 0, void 0, function () {\n var headerHash, number, difficulty, mixHash, nonce, a, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headerHash = this.headerHash(header.raw());\n number = header.number, difficulty = header.difficulty, mixHash = header.mixHash, nonce = header.nonce;\n return [4 /*yield*/, this.loadEpoc(number.toNumber())];\n case 1:\n _a.sent();\n a = this.run(headerHash, nonce);\n result = new ethereumjs_util_1.BN(a.hash);\n return [2 /*return*/, a.mix.equals(mixHash) && ethereumjs_util_1.TWO_POW256.div(difficulty).cmp(result) === 1];\n }\n });\n });\n };\n Ethash.prototype.verifyPOW = function (block) {\n return __awaiter(this, void 0, void 0, function () {\n var valid, index, valid_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // don't validate genesis blocks\n if (block.header.isGenesis()) {\n return [2 /*return*/, true];\n }\n return [4 /*yield*/, this._verifyPOW(block.header)];\n case 1:\n valid = _a.sent();\n if (!valid) {\n return [2 /*return*/, false];\n }\n index = 0;\n _a.label = 2;\n case 2:\n if (!(index < block.uncleHeaders.length)) return [3 /*break*/, 5];\n return [4 /*yield*/, this._verifyPOW(block.uncleHeaders[index])];\n case 3:\n valid_1 = _a.sent();\n if (!valid_1) {\n return [2 /*return*/, false];\n }\n _a.label = 4;\n case 4:\n index++;\n return [3 /*break*/, 2];\n case 5: return [2 /*return*/, true];\n }\n });\n });\n };\n return Ethash;\n}());\nexports.default = Ethash;\n//# sourceMappingURL=index.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","module.exports = {};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar Tree = require('functional-red-black-tree');\n/**\n * @ignore\n */\nvar Cache = /** @class */ (function () {\n function Cache(trie) {\n this._cache = Tree();\n this._checkpoints = [];\n this._trie = trie;\n }\n /**\n * Puts account to cache under its address.\n * @param key - Address of account\n * @param val - Account\n */\n Cache.prototype.put = function (key, val, fromTrie) {\n if (fromTrie === void 0) { fromTrie = false; }\n var modified = !fromTrie;\n this._update(key, val, modified, false);\n };\n /**\n * Returns the queried account or an empty account.\n * @param key - Address of account\n */\n Cache.prototype.get = function (key) {\n var account = this.lookup(key);\n return account || new ethereumjs_util_1.Account();\n };\n /**\n * Returns the queried account or undefined.\n * @param key - Address of account\n */\n Cache.prototype.lookup = function (key) {\n var keyStr = key.buf.toString('hex');\n var it = this._cache.find(keyStr);\n if (it.node) {\n var rlp = it.value.val;\n return ethereumjs_util_1.Account.fromRlpSerializedAccount(rlp);\n }\n };\n /**\n * Returns true if the key was deleted and thus existed in the cache earlier\n * @param key - trie key to lookup\n */\n Cache.prototype.keyIsDeleted = function (key) {\n var keyStr = key.buf.toString('hex');\n var it = this._cache.find(keyStr);\n if (it.node) {\n return it.value.deleted;\n }\n return false;\n };\n /**\n * Looks up address in underlying trie.\n * @param address - Address of account\n */\n Cache.prototype._lookupAccount = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var rlp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._trie.get(address.buf)];\n case 1:\n rlp = _a.sent();\n return [2 /*return*/, rlp ? ethereumjs_util_1.Account.fromRlpSerializedAccount(rlp) : new ethereumjs_util_1.Account()];\n }\n });\n });\n };\n /**\n * Looks up address in cache, if not found, looks it up\n * in the underlying trie.\n * @param key - Address of account\n */\n Cache.prototype.getOrLoad = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var account;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n account = this.lookup(address);\n if (!!account) return [3 /*break*/, 2];\n return [4 /*yield*/, this._lookupAccount(address)];\n case 1:\n account = _a.sent();\n this._update(address, account, false, false);\n _a.label = 2;\n case 2: return [2 /*return*/, account];\n }\n });\n });\n };\n /**\n * Warms cache by loading their respective account from trie\n * and putting them in cache.\n * @param addresses - Array of addresses\n */\n Cache.prototype.warm = function (addresses) {\n return __awaiter(this, void 0, void 0, function () {\n var addresses_1, addresses_1_1, addressHex, address, account, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n addresses_1 = __values(addresses), addresses_1_1 = addresses_1.next();\n _b.label = 1;\n case 1:\n if (!!addresses_1_1.done) return [3 /*break*/, 4];\n addressHex = addresses_1_1.value;\n if (!addressHex) return [3 /*break*/, 3];\n address = new ethereumjs_util_1.Address(Buffer.from(addressHex, 'hex'));\n return [4 /*yield*/, this._lookupAccount(address)];\n case 2:\n account = _b.sent();\n this._update(address, account, false, false);\n _b.label = 3;\n case 3:\n addresses_1_1 = addresses_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (addresses_1_1 && !addresses_1_1.done && (_a = addresses_1.return)) _a.call(addresses_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Flushes cache by updating accounts that have been modified\n * and removing accounts that have been deleted.\n */\n Cache.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var it, next, accountRlp, keyBuf, keyBuf;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n it = this._cache.begin;\n next = true;\n _a.label = 1;\n case 1:\n if (!next) return [3 /*break*/, 7];\n if (!(it.value && it.value.modified)) return [3 /*break*/, 3];\n it.value.modified = false;\n accountRlp = it.value.val;\n keyBuf = Buffer.from(it.key, 'hex');\n return [4 /*yield*/, this._trie.put(keyBuf, accountRlp)];\n case 2:\n _a.sent();\n next = it.hasNext;\n it.next();\n return [3 /*break*/, 6];\n case 3:\n if (!(it.value && it.value.deleted)) return [3 /*break*/, 5];\n it.value.modified = false;\n it.value.deleted = true;\n it.value.val = new ethereumjs_util_1.Account().serialize();\n keyBuf = Buffer.from(it.key, 'hex');\n return [4 /*yield*/, this._trie.del(keyBuf)];\n case 4:\n _a.sent();\n next = it.hasNext;\n it.next();\n return [3 /*break*/, 6];\n case 5:\n next = it.hasNext;\n it.next();\n _a.label = 6;\n case 6: return [3 /*break*/, 1];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Marks current state of cache as checkpoint, which can\n * later on be reverted or commited.\n */\n Cache.prototype.checkpoint = function () {\n this._checkpoints.push(this._cache);\n };\n /**\n * Revert changes to cache last checkpoint (no effect on trie).\n */\n Cache.prototype.revert = function () {\n this._cache = this._checkpoints.pop();\n };\n /**\n * Commits to current state of cache (no effect on trie).\n */\n Cache.prototype.commit = function () {\n this._checkpoints.pop();\n };\n /**\n * Clears cache.\n */\n Cache.prototype.clear = function () {\n this._cache = Tree();\n };\n /**\n * Marks address as deleted in cache.\n * @param key - Address\n */\n Cache.prototype.del = function (key) {\n this._update(key, new ethereumjs_util_1.Account(), false, true);\n };\n Cache.prototype._update = function (key, value, modified, deleted) {\n var keyHex = key.buf.toString('hex');\n var it = this._cache.find(keyHex);\n var val = value.serialize();\n if (it.node) {\n this._cache = it.update({ val: val, modified: modified, deleted: deleted });\n }\n else {\n this._cache = this._cache.insert(keyHex, { val: val, modified: modified, deleted: deleted });\n }\n };\n return Cache;\n}());\nexports.default = Cache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar debug_1 = require(\"debug\");\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar exceptions_1 = require(\"../exceptions\");\nvar memory_1 = __importDefault(require(\"./memory\"));\nvar stack_1 = __importDefault(require(\"./stack\"));\nvar opcodes_1 = require(\"./opcodes\");\n/**\n * Parses and executes EVM bytecode.\n */\nvar Interpreter = /** @class */ (function () {\n function Interpreter(vm, eei) {\n // Opcode debuggers (e.g. { 'push': [debug Object], 'sstore': [debug Object], ...})\n this.opDebuggers = {};\n this._vm = vm; // TODO: remove when not needed\n this._state = vm.stateManager;\n this._eei = eei;\n this._runState = {\n programCounter: 0,\n opCode: 0xfe,\n memory: new memory_1.default(),\n memoryWordCount: new ethereumjs_util_1.BN(0),\n highestMemCost: new ethereumjs_util_1.BN(0),\n stack: new stack_1.default(),\n returnStack: new stack_1.default(1023),\n code: Buffer.alloc(0),\n validJumps: [],\n validJumpSubs: [],\n // TODO: Replace with EEI methods\n _common: this._vm._common,\n stateManager: this._state,\n eei: this._eei,\n };\n }\n Interpreter.prototype.run = function (code, opts) {\n if (opts === void 0) { opts = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var valid, pc, err, opCode, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._runState.code = code;\n this._runState.programCounter = opts.pc || this._runState.programCounter;\n valid = this._getValidJumpDests(code);\n this._runState.validJumps = valid.jumps;\n this._runState.validJumpSubs = valid.jumpSubs;\n pc = this._runState.programCounter;\n if (pc !== 0 && (pc < 0 || pc >= this._runState.code.length)) {\n throw new Error('Internal error: program counter not in range');\n }\n _a.label = 1;\n case 1:\n if (!(this._runState.programCounter < this._runState.code.length)) return [3 /*break*/, 7];\n opCode = this._runState.code[this._runState.programCounter];\n this._runState.opCode = opCode;\n return [4 /*yield*/, this._runStepHook()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this.runStep()];\n case 4:\n _a.sent();\n return [3 /*break*/, 6];\n case 5:\n e_1 = _a.sent();\n // STOP is not an exception\n if (e_1.error !== exceptions_1.ERROR.STOP) {\n err = e_1;\n }\n // TODO: Throw on non-VmError exceptions\n return [3 /*break*/, 7];\n case 6: return [3 /*break*/, 1];\n case 7: return [2 /*return*/, {\n runState: this._runState,\n exceptionError: err,\n }];\n }\n });\n });\n };\n /**\n * Executes the opcode to which the program counter is pointing,\n * reducing it's base gas cost, and increments the program counter.\n */\n Interpreter.prototype.runStep = function () {\n return __awaiter(this, void 0, void 0, function () {\n var opInfo, opFn;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n opInfo = this.lookupOpInfo(this._runState.opCode);\n // Check for invalid opcode\n if (opInfo.name === 'INVALID') {\n throw new exceptions_1.VmError(exceptions_1.ERROR.INVALID_OPCODE);\n }\n // Reduce opcode's base fee\n this._eei.useGas(new ethereumjs_util_1.BN(opInfo.fee), opInfo.name + \" (base fee)\");\n // Advance program counter\n this._runState.programCounter++;\n opFn = this.getOpHandler(opInfo);\n if (!opInfo.isAsync) return [3 /*break*/, 2];\n return [4 /*yield*/, opFn.apply(null, [this._runState])];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n opFn.apply(null, [this._runState]);\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Get the handler function for an opcode.\n */\n Interpreter.prototype.getOpHandler = function (opInfo) {\n return opcodes_1.handlers.get(opInfo.code);\n };\n /**\n * Get info for an opcode from VM's list of opcodes.\n */\n Interpreter.prototype.lookupOpInfo = function (op) {\n // if not found, return 0xfe: INVALID\n return this._vm._opcodes.get(op) || this._vm._opcodes.get(0xfe);\n };\n Interpreter.prototype._runStepHook = function () {\n return __awaiter(this, void 0, void 0, function () {\n var opcode, eventObj, hexStack, name, opTrace;\n return __generator(this, function (_a) {\n opcode = this.lookupOpInfo(this._runState.opCode);\n eventObj = {\n pc: this._runState.programCounter,\n gasLeft: this._eei.getGasLeft(),\n opcode: {\n name: opcode.fullName,\n fee: opcode.fee,\n isAsync: opcode.isAsync,\n },\n stack: this._runState.stack._store,\n returnStack: this._runState.returnStack._store,\n depth: this._eei._env.depth,\n address: this._eei._env.address,\n account: this._eei._env.contract,\n stateManager: this._runState.stateManager,\n memory: this._runState.memory._store,\n memoryWordCount: this._runState.memoryWordCount,\n codeAddress: this._eei._env.codeAddress,\n };\n hexStack = [];\n hexStack = eventObj.stack.map(function (item) {\n return '0x' + new ethereumjs_util_1.BN(item).toString(16, 0);\n });\n name = eventObj.opcode.name;\n opTrace = {\n pc: eventObj.pc,\n op: name,\n gas: '0x' + eventObj.gasLeft.toString('hex'),\n gasCost: '0x' + eventObj.opcode.fee.toString(16),\n stack: hexStack,\n depth: eventObj.depth,\n };\n if (!(name in this.opDebuggers)) {\n this.opDebuggers[name] = debug_1.debug(\"vm:ops:\" + name);\n }\n this.opDebuggers[name](JSON.stringify(opTrace));\n /**\n * The `step` event for trace output\n *\n * @event Event: step\n * @type {Object}\n * @property {Number} pc representing the program counter\n * @property {String} opcode the next opcode to be ran\n * @property {BN} gasLeft amount of gasLeft\n * @property {Array} stack an `Array` of `Buffers` containing the stack\n * @property {Account} account the Account which owns the code running\n * @property {Address} address the address of the `account`\n * @property {Number} depth the current number of calls deep the contract is\n * @property {Buffer} memory the memory of the VM as a `buffer`\n * @property {BN} memoryWordCount current size of memory in words\n * @property {StateManager} stateManager a [[StateManager]] instance\n * @property {Address} codeAddress the address of the code which is currently being ran (this differs from `address` in a `DELEGATECALL` and `CALLCODE` call)\n */\n return [2 /*return*/, this._vm._emit('step', eventObj)];\n });\n });\n };\n // Returns all valid jump and jumpsub destinations.\n Interpreter.prototype._getValidJumpDests = function (code) {\n var jumps = [];\n var jumpSubs = [];\n for (var i = 0; i < code.length; i++) {\n var curOpCode = this.lookupOpInfo(code[i]).name;\n // no destinations into the middle of PUSH\n if (curOpCode === 'PUSH') {\n i += code[i] - 0x5f;\n }\n if (curOpCode === 'JUMPDEST') {\n jumps.push(i);\n }\n if (curOpCode === 'BEGINSUB') {\n jumpSubs.push(i);\n }\n }\n return { jumps: jumps, jumpSubs: jumpSubs };\n };\n return Interpreter;\n}());\nexports.default = Interpreter;\n//# sourceMappingURL=interpreter.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOpcodesForHF = exports.Opcode = void 0;\nvar util_1 = require(\"./util\");\nvar Opcode = /** @class */ (function () {\n function Opcode(_a) {\n var code = _a.code, name = _a.name, fullName = _a.fullName, fee = _a.fee, isAsync = _a.isAsync;\n this.code = code;\n this.name = name;\n this.fullName = fullName;\n this.fee = fee;\n this.isAsync = isAsync;\n // Opcode isn't subject to change, thus all futher modifications are prevented.\n Object.freeze(this);\n }\n return Opcode;\n}());\nexports.Opcode = Opcode;\n// Base opcode list. The opcode list is extended in future hardforks\nvar opcodes = {\n // 0x0 range - arithmetic ops\n // name, async\n 0x00: { name: 'STOP', isAsync: false },\n 0x01: { name: 'ADD', isAsync: false },\n 0x02: { name: 'MUL', isAsync: false },\n 0x03: { name: 'SUB', isAsync: false },\n 0x04: { name: 'DIV', isAsync: false },\n 0x05: { name: 'SDIV', isAsync: false },\n 0x06: { name: 'MOD', isAsync: false },\n 0x07: { name: 'SMOD', isAsync: false },\n 0x08: { name: 'ADDMOD', isAsync: false },\n 0x09: { name: 'MULMOD', isAsync: false },\n 0x0a: { name: 'EXP', isAsync: false },\n 0x0b: { name: 'SIGNEXTEND', isAsync: false },\n // 0x10 range - bit ops\n 0x10: { name: 'LT', isAsync: false },\n 0x11: { name: 'GT', isAsync: false },\n 0x12: { name: 'SLT', isAsync: false },\n 0x13: { name: 'SGT', isAsync: false },\n 0x14: { name: 'EQ', isAsync: false },\n 0x15: { name: 'ISZERO', isAsync: false },\n 0x16: { name: 'AND', isAsync: false },\n 0x17: { name: 'OR', isAsync: false },\n 0x18: { name: 'XOR', isAsync: false },\n 0x19: { name: 'NOT', isAsync: false },\n 0x1a: { name: 'BYTE', isAsync: false },\n // 0x20 range - crypto\n 0x20: { name: 'SHA3', isAsync: false },\n // 0x30 range - closure state\n 0x30: { name: 'ADDRESS', isAsync: true },\n 0x31: { name: 'BALANCE', isAsync: true },\n 0x32: { name: 'ORIGIN', isAsync: true },\n 0x33: { name: 'CALLER', isAsync: true },\n 0x34: { name: 'CALLVALUE', isAsync: true },\n 0x35: { name: 'CALLDATALOAD', isAsync: true },\n 0x36: { name: 'CALLDATASIZE', isAsync: true },\n 0x37: { name: 'CALLDATACOPY', isAsync: true },\n 0x38: { name: 'CODESIZE', isAsync: false },\n 0x39: { name: 'CODECOPY', isAsync: false },\n 0x3a: { name: 'GASPRICE', isAsync: false },\n 0x3b: { name: 'EXTCODESIZE', isAsync: true },\n 0x3c: { name: 'EXTCODECOPY', isAsync: true },\n // '0x40' range - block operations\n 0x40: { name: 'BLOCKHASH', isAsync: true },\n 0x41: { name: 'COINBASE', isAsync: true },\n 0x42: { name: 'TIMESTAMP', isAsync: true },\n 0x43: { name: 'NUMBER', isAsync: true },\n 0x44: { name: 'DIFFICULTY', isAsync: true },\n 0x45: { name: 'GASLIMIT', isAsync: true },\n // 0x50 range - 'storage' and execution\n 0x50: { name: 'POP', isAsync: false },\n 0x51: { name: 'MLOAD', isAsync: false },\n 0x52: { name: 'MSTORE', isAsync: false },\n 0x53: { name: 'MSTORE8', isAsync: false },\n 0x54: { name: 'SLOAD', isAsync: true },\n 0x55: { name: 'SSTORE', isAsync: true },\n 0x56: { name: 'JUMP', isAsync: false },\n 0x57: { name: 'JUMPI', isAsync: false },\n 0x58: { name: 'PC', isAsync: false },\n 0x59: { name: 'MSIZE', isAsync: false },\n 0x5a: { name: 'GAS', isAsync: false },\n 0x5b: { name: 'JUMPDEST', isAsync: false },\n // 0x60, range\n 0x60: { name: 'PUSH', isAsync: false },\n 0x61: { name: 'PUSH', isAsync: false },\n 0x62: { name: 'PUSH', isAsync: false },\n 0x63: { name: 'PUSH', isAsync: false },\n 0x64: { name: 'PUSH', isAsync: false },\n 0x65: { name: 'PUSH', isAsync: false },\n 0x66: { name: 'PUSH', isAsync: false },\n 0x67: { name: 'PUSH', isAsync: false },\n 0x68: { name: 'PUSH', isAsync: false },\n 0x69: { name: 'PUSH', isAsync: false },\n 0x6a: { name: 'PUSH', isAsync: false },\n 0x6b: { name: 'PUSH', isAsync: false },\n 0x6c: { name: 'PUSH', isAsync: false },\n 0x6d: { name: 'PUSH', isAsync: false },\n 0x6e: { name: 'PUSH', isAsync: false },\n 0x6f: { name: 'PUSH', isAsync: false },\n 0x70: { name: 'PUSH', isAsync: false },\n 0x71: { name: 'PUSH', isAsync: false },\n 0x72: { name: 'PUSH', isAsync: false },\n 0x73: { name: 'PUSH', isAsync: false },\n 0x74: { name: 'PUSH', isAsync: false },\n 0x75: { name: 'PUSH', isAsync: false },\n 0x76: { name: 'PUSH', isAsync: false },\n 0x77: { name: 'PUSH', isAsync: false },\n 0x78: { name: 'PUSH', isAsync: false },\n 0x79: { name: 'PUSH', isAsync: false },\n 0x7a: { name: 'PUSH', isAsync: false },\n 0x7b: { name: 'PUSH', isAsync: false },\n 0x7c: { name: 'PUSH', isAsync: false },\n 0x7d: { name: 'PUSH', isAsync: false },\n 0x7e: { name: 'PUSH', isAsync: false },\n 0x7f: { name: 'PUSH', isAsync: false },\n 0x80: { name: 'DUP', isAsync: false },\n 0x81: { name: 'DUP', isAsync: false },\n 0x82: { name: 'DUP', isAsync: false },\n 0x83: { name: 'DUP', isAsync: false },\n 0x84: { name: 'DUP', isAsync: false },\n 0x85: { name: 'DUP', isAsync: false },\n 0x86: { name: 'DUP', isAsync: false },\n 0x87: { name: 'DUP', isAsync: false },\n 0x88: { name: 'DUP', isAsync: false },\n 0x89: { name: 'DUP', isAsync: false },\n 0x8a: { name: 'DUP', isAsync: false },\n 0x8b: { name: 'DUP', isAsync: false },\n 0x8c: { name: 'DUP', isAsync: false },\n 0x8d: { name: 'DUP', isAsync: false },\n 0x8e: { name: 'DUP', isAsync: false },\n 0x8f: { name: 'DUP', isAsync: false },\n 0x90: { name: 'SWAP', isAsync: false },\n 0x91: { name: 'SWAP', isAsync: false },\n 0x92: { name: 'SWAP', isAsync: false },\n 0x93: { name: 'SWAP', isAsync: false },\n 0x94: { name: 'SWAP', isAsync: false },\n 0x95: { name: 'SWAP', isAsync: false },\n 0x96: { name: 'SWAP', isAsync: false },\n 0x97: { name: 'SWAP', isAsync: false },\n 0x98: { name: 'SWAP', isAsync: false },\n 0x99: { name: 'SWAP', isAsync: false },\n 0x9a: { name: 'SWAP', isAsync: false },\n 0x9b: { name: 'SWAP', isAsync: false },\n 0x9c: { name: 'SWAP', isAsync: false },\n 0x9d: { name: 'SWAP', isAsync: false },\n 0x9e: { name: 'SWAP', isAsync: false },\n 0x9f: { name: 'SWAP', isAsync: false },\n 0xa0: { name: 'LOG', isAsync: false },\n 0xa1: { name: 'LOG', isAsync: false },\n 0xa2: { name: 'LOG', isAsync: false },\n 0xa3: { name: 'LOG', isAsync: false },\n 0xa4: { name: 'LOG', isAsync: false },\n // '0xf0' range - closures\n 0xf0: { name: 'CREATE', isAsync: true },\n 0xf1: { name: 'CALL', isAsync: true },\n 0xf2: { name: 'CALLCODE', isAsync: true },\n 0xf3: { name: 'RETURN', isAsync: false },\n // '0x70', range - other\n 0xfe: { name: 'INVALID', isAsync: false },\n 0xff: { name: 'SELFDESTRUCT', isAsync: true },\n};\n// Array of hard forks in order. These changes are repeatedly applied to `opcodes` until the hard fork is in the future based upon the common\n// TODO: All gas price changes should be moved to common\n// If the base gas cost of any of the operations change, then these should also be added to this list.\n// If there are context variables changed (such as \"warm slot reads\") which are not the base gas fees,\n// Then this does not have to be added.\nvar hardforkOpcodes = [\n {\n hardforkName: 'homestead',\n opcodes: {\n 0xf4: { name: 'DELEGATECALL', isAsync: true },\n },\n },\n {\n hardforkName: 'tangerineWhistle',\n opcodes: {\n 0x54: { name: 'SLOAD', isAsync: true },\n 0xf1: { name: 'CALL', isAsync: true },\n 0xf2: { name: 'CALLCODE', isAsync: true },\n 0x3b: { name: 'EXTCODESIZE', isAsync: true },\n 0x3c: { name: 'EXTCODECOPY', isAsync: true },\n 0xf4: { name: 'DELEGATECALL', isAsync: true },\n 0xff: { name: 'SELFDESTRUCT', isAsync: true },\n 0x31: { name: 'BALANCE', isAsync: true },\n },\n },\n {\n hardforkName: 'byzantium',\n opcodes: {\n 0xfd: { name: 'REVERT', isAsync: false },\n 0xfa: { name: 'STATICCALL', isAsync: true },\n 0x3d: { name: 'RETURNDATASIZE', isAsync: true },\n 0x3e: { name: 'RETURNDATACOPY', isAsync: true },\n },\n },\n {\n hardforkName: 'constantinople',\n opcodes: {\n 0x1b: { name: 'SHL', isAsync: false },\n 0x1c: { name: 'SHR', isAsync: false },\n 0x1d: { name: 'SAR', isAsync: false },\n 0x3f: { name: 'EXTCODEHASH', isAsync: true },\n 0xf5: { name: 'CREATE2', isAsync: true },\n },\n },\n {\n hardforkName: 'istanbul',\n opcodes: {\n 0x46: { name: 'CHAINID', isAsync: false },\n 0x47: { name: 'SELFBALANCE', isAsync: false },\n },\n },\n];\nvar eipOpcodes = [\n {\n eip: 2315,\n opcodes: {\n 0x5c: { name: 'BEGINSUB', isAsync: false },\n 0x5d: { name: 'RETURNSUB', isAsync: false },\n 0x5e: { name: 'JUMPSUB', isAsync: false },\n },\n },\n];\n/**\n * Convert basic opcode info dictonary into complete OpcodeList instance.\n *\n * @param opcodes {Object} Receive basic opcodes info dictionary.\n * @returns {OpcodeList} Complete Opcode list\n */\nfunction createOpcodes(opcodes) {\n var e_1, _a;\n var result = new Map();\n try {\n for (var _b = __values(Object.entries(opcodes)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n var code = parseInt(key, 10);\n result.set(code, new Opcode(__assign({ code: code, fullName: util_1.getFullname(code, value.name) }, value)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n}\n/**\n * Get suitable opcodes for the required hardfork.\n *\n * @param common {Common} Ethereumjs Common metadata object.\n * @returns {OpcodeList} Opcodes dictionary object.\n */\nfunction getOpcodesForHF(common) {\n var e_2, _a;\n var opcodeBuilder = __assign({}, opcodes);\n for (var fork = 0; fork < hardforkOpcodes.length; fork++) {\n if (common.gteHardfork(hardforkOpcodes[fork].hardforkName)) {\n opcodeBuilder = __assign(__assign({}, opcodeBuilder), hardforkOpcodes[fork].opcodes);\n }\n }\n try {\n for (var eipOpcodes_1 = __values(eipOpcodes), eipOpcodes_1_1 = eipOpcodes_1.next(); !eipOpcodes_1_1.done; eipOpcodes_1_1 = eipOpcodes_1.next()) {\n var eipOps = eipOpcodes_1_1.value;\n if (common.isActivatedEIP(eipOps.eip)) {\n opcodeBuilder = __assign(__assign({}, opcodeBuilder), eipOps.opcodes);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (eipOpcodes_1_1 && !eipOpcodes_1_1.done && (_a = eipOpcodes_1.return)) _a.call(eipOpcodes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n /* eslint-disable-next-line no-restricted-syntax */\n for (var key in opcodeBuilder) {\n var baseFee = common.param('gasPrices', opcodeBuilder[key].name.toLowerCase());\n // explicitly verify that we have defined a base fee\n if (baseFee === undefined) {\n throw new Error(\"base fee not defined for: \" + opcodeBuilder[key].name);\n }\n opcodeBuilder[key].fee = common.param('gasPrices', opcodeBuilder[key].name.toLowerCase());\n }\n return createOpcodes(opcodeBuilder);\n}\nexports.getOpcodesForHF = getOpcodesForHF;\n//# sourceMappingURL=codes.js.map","const bn128 = require('./lib/index.asm.js')\n\nconst ec_add = bn128.cwrap('ec_add', 'string', ['string'])\nconst ec_mul = bn128.cwrap('ec_mul', 'string', ['string'])\nconst ec_pairing = bn128.cwrap('ec_pairing', 'string', ['string'])\n\nfunction bn128add (input) {\n return Buffer.from(ec_add(input.toString('hex')), 'hex')\n}\n\nfunction bn128mul (input) {\n return Buffer.from(ec_mul(input.toString('hex')), 'hex')\n}\n\nfunction bn128pairing (input) {\n return Buffer.from(ec_pairing(input.toString('hex')), 'hex')\n}\n\nmodule.exports = {\n add: bn128add,\n mul: bn128mul,\n pairing: bn128pairing\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _blockchain, _common, _blockIndexes;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst manager_1 = __importDefault(require(\"./manager\"));\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereum_block_1 = require(\"@ganache/ethereum-block\");\nconst NOTFOUND = 404;\nconst EMPTY_BUFFER = Buffer.from([]);\nclass BlockManager extends manager_1.default {\n constructor(blockchain, common, blockIndexes, base) {\n super(base, ethereum_block_1.Block, common);\n _blockchain.set(this, void 0);\n _common.set(this, void 0);\n _blockIndexes.set(this, void 0);\n this.fromFallback = async (tagOrBlockNumber) => {\n const fallback = __classPrivateFieldGet(this, _blockchain).fallback;\n const json = await fallback.request(\"eth_getBlockByNumber\", [\n typeof tagOrBlockNumber === \"string\"\n ? tagOrBlockNumber\n : utils_1.Quantity.from(tagOrBlockNumber).toString(),\n true\n ]);\n return json == null ? null : ethereum_block_1.Block.rawFromJSON(json);\n };\n __classPrivateFieldSet(this, _blockchain, blockchain);\n __classPrivateFieldSet(this, _common, common);\n __classPrivateFieldSet(this, _blockIndexes, blockIndexes);\n }\n static async initialize(blockchain, common, blockIndexes, base) {\n const bm = new BlockManager(blockchain, common, blockIndexes, base);\n await bm.updateTaggedBlocks();\n return bm;\n }\n getBlockByTag(tag) {\n switch (ethereum_utils_1.Tag.normalize(tag)) {\n case ethereum_utils_1.Tag.LATEST:\n return this.latest;\n case void 0:\n case null:\n // the key is probably a hex string, let nature takes its course.\n break;\n case ethereum_utils_1.Tag.PENDING:\n // TODO: build a real pending block!\n return this.latest; // this.createBlock(this.latest.header);\n case ethereum_utils_1.Tag.EARLIEST:\n return this.earliest;\n default:\n // this probably can't happen. but if someone passed something like\n // `toString` in as a block tag and it got this far... maybe we'd\n // get here...\n throw new Error(`Invalid block Tag: ${tag}`);\n }\n }\n getEffectiveNumber(tagOrBlockNumber = ethereum_utils_1.Tag.LATEST) {\n if (typeof tagOrBlockNumber === \"string\") {\n const block = this.getBlockByTag(tagOrBlockNumber);\n if (block) {\n return block.header.number;\n }\n }\n return utils_1.Quantity.from(tagOrBlockNumber);\n }\n async getNumberFromHash(hash) {\n return __classPrivateFieldGet(this, _blockIndexes).get(utils_1.Data.from(hash).toBuffer()).catch(e => {\n if (e.status === NOTFOUND)\n return null;\n throw e;\n });\n }\n async getByHash(hash) {\n const number = await this.getNumberFromHash(hash);\n if (number === null) {\n if (__classPrivateFieldGet(this, _blockchain).fallback) {\n const fallback = __classPrivateFieldGet(this, _blockchain).fallback;\n const json = await fallback.request(\"eth_getBlockByHash\", [\n utils_1.Data.from(hash),\n true\n ]);\n if (json && BigInt(json.number) <= fallback.blockNumber.toBigInt()) {\n return new ethereum_block_1.Block(ethereum_block_1.Block.rawFromJSON(json), __classPrivateFieldGet(this, _common));\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n else {\n return this.get(number);\n }\n }\n async getRawByBlockNumber(blockNumber) {\n // TODO(perf): make the block's raw fields accessible on latest/earliest/pending so\n // we don't have to fetch them from the db each time a block tag is used.\n const fallback = __classPrivateFieldGet(this, _blockchain).fallback;\n const numBuf = blockNumber.toBuffer();\n return this.getRaw(numBuf).then(block => {\n if (block == null && fallback) {\n return this.fromFallback(fallback.selectValidForkBlockNumber(blockNumber).toBuffer());\n }\n return block;\n });\n }\n async get(tagOrBlockNumber) {\n if (typeof tagOrBlockNumber === \"string\") {\n const block = this.getBlockByTag(tagOrBlockNumber);\n if (block)\n return block;\n }\n const block = await this.getRawByBlockNumber(utils_1.Quantity.from(tagOrBlockNumber));\n if (block)\n return new ethereum_block_1.Block(block, __classPrivateFieldGet(this, _common));\n throw new Error(\"header not found\");\n }\n /**\n * Writes the block object to the underlying database.\n * @param block\n */\n async putBlock(number, hash, serialized) {\n let key = number;\n // ensure we can store Block #0 as key \"00\", not \"\"\n if (EMPTY_BUFFER.equals(key)) {\n key = Buffer.from([0]);\n }\n const secondaryKey = hash.toBuffer();\n await Promise.all([\n __classPrivateFieldGet(this, _blockIndexes).put(secondaryKey, key),\n super.set(key, serialized)\n ]);\n }\n updateTaggedBlocks() {\n return new Promise((resolve, reject) => {\n this.base\n .createValueStream({ limit: 1 })\n .on(\"data\", (data) => {\n this.earliest = new ethereum_block_1.Block(data, __classPrivateFieldGet(this, _common));\n })\n .on(\"error\", (err) => {\n reject(err);\n })\n .on(\"end\", () => {\n resolve(void 0);\n });\n this.base\n .createValueStream({ reverse: true, limit: 1 })\n .on(\"data\", (data) => {\n this.latest = new ethereum_block_1.Block(data, __classPrivateFieldGet(this, _common));\n })\n .on(\"error\", (err) => {\n reject(err);\n })\n .on(\"end\", () => {\n resolve(void 0);\n });\n });\n }\n}\nexports.default = BlockManager;\n_blockchain = new WeakMap(), _common = new WeakMap(), _blockIndexes = new WeakMap();\n//# sourceMappingURL=block-manager.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _blockchain;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst manager_1 = __importDefault(require(\"./manager\"));\nconst filter_parsing_1 = require(\"../helpers/filter-parsing\");\nconst utils_1 = require(\"@ganache/utils\");\nclass BlockLogManager extends manager_1.default {\n constructor(base, blockchain) {\n super(base, ethereum_utils_1.BlockLogs);\n _blockchain.set(this, void 0);\n __classPrivateFieldSet(this, _blockchain, blockchain);\n }\n async get(key) {\n const log = await super.get(key);\n if (log) {\n log.blockNumber = utils_1.Quantity.from(key);\n }\n else if (__classPrivateFieldGet(this, _blockchain).fallback) {\n const block = utils_1.Quantity.from(key);\n const res = await __classPrivateFieldGet(this, _blockchain).fallback.request(\"eth_getLogs\", [{ fromBlock: block, toBlock: block }]);\n return ethereum_utils_1.BlockLogs.fromJSON(res);\n }\n return log;\n }\n async getLogs(filter) {\n const blockchain = __classPrivateFieldGet(this, _blockchain);\n if (\"blockHash\" in filter) {\n const { addresses, topics } = filter_parsing_1.parseFilterDetails(filter);\n const blockNumber = await blockchain.blocks.getNumberFromHash(filter.blockHash);\n if (!blockNumber)\n return [];\n const logs = await this.get(blockNumber);\n return logs ? [...logs.filter(addresses, topics)] : [];\n }\n else {\n const { addresses, topics, fromBlock, toBlockNumber } = filter_parsing_1.parseFilter(filter, blockchain);\n const pendingLogsPromises = [\n this.get(fromBlock.toBuffer())\n ];\n const fromBlockNumber = fromBlock.toNumber();\n // if we have a range of blocks to search, do that here:\n if (fromBlockNumber !== toBlockNumber) {\n // fetch all the blockLogs in-between `fromBlock` and `toBlock` (excluding\n // from, because we already started fetching that one)\n for (let i = fromBlockNumber + 1, l = toBlockNumber + 1; i < l; i++) {\n pendingLogsPromises.push(this.get(utils_1.Quantity.from(i).toBuffer()));\n }\n }\n // now filter and compute all the blocks' blockLogs (in block order)\n return Promise.all(pendingLogsPromises).then(blockLogsRange => {\n const filteredBlockLogs = [];\n blockLogsRange.forEach(blockLogs => {\n // TODO(perf): this loops over all addresses for every block.\n // Maybe make it loop only once?\n if (blockLogs)\n filteredBlockLogs.push(...blockLogs.filter(addresses, topics));\n });\n return filteredBlockLogs;\n });\n }\n }\n}\nexports.default = BlockLogManager;\n_blockchain = new WeakMap();\n//# sourceMappingURL=blocklog-manager.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _queue, _paused, _resumer, _resolver, _blockchain;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst manager_1 = __importDefault(require(\"./manager\"));\nconst transaction_pool_1 = __importDefault(require(\"../transaction-pool\"));\nconst promise_queue_1 = __importDefault(require(\"@ganache/promise-queue\"));\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereum_transaction_1 = require(\"@ganache/ethereum-transaction\");\nclass TransactionManager extends manager_1.default {\n constructor(options, common, blockchain, base) {\n super(base, ethereum_transaction_1.FrozenTransaction, common);\n _queue.set(this, new promise_queue_1.default());\n _paused.set(this, false);\n _resumer.set(this, void 0);\n _resolver.set(this, void 0);\n _blockchain.set(this, void 0);\n this.fromFallback = async (transactionHash) => {\n const { fallback } = __classPrivateFieldGet(this, _blockchain);\n const tx = await fallback.request(\"eth_getTransactionByHash\", [utils_1.Data.from(transactionHash).toString()]);\n if (tx == null)\n return null;\n const runTx = new ethereum_transaction_1.RuntimeTransaction(tx, fallback.common);\n return runTx.serializeForDb(utils_1.Data.from(tx.blockHash, 32), utils_1.Quantity.from(tx.blockNumber), utils_1.Quantity.from(tx.transactionIndex));\n };\n /**\n * Resume processing transactions. Has no effect if not paused.\n */\n this.resume = () => {\n if (!__classPrivateFieldGet(this, _paused))\n return;\n __classPrivateFieldSet(this, _paused, false);\n __classPrivateFieldGet(this, _resolver).call(this);\n };\n __classPrivateFieldSet(this, _blockchain, blockchain);\n this.transactionPool = new transaction_pool_1.default(options, blockchain);\n }\n async getRaw(transactionHash) {\n return super.getRaw(transactionHash).then(block => {\n if (block == null && __classPrivateFieldGet(this, _blockchain).fallback) {\n return this.fromFallback(transactionHash);\n }\n return block;\n });\n }\n /**\n * Adds the transaction to the transaction pool.\n *\n * Returns a promise that is only resolved in the order it was added.\n *\n * @param transaction\n * @param secretKey\n * @returns `true` if the `transaction` is immediately executable, `false` if\n * it may be valid in the future. Throws if the transaction is invalid.\n */\n async add(transaction, secretKey) {\n if (__classPrivateFieldGet(this, _paused)) {\n await __classPrivateFieldGet(this, _resumer);\n }\n // Because ganache requires determinism, we can't allow varying IO times to\n // potentially affect the order in which transactions are inserted into the\n // pool, so we use a FIFO queue to _return_ transaction insertions in the\n // order the were received.\n const insertion = this.transactionPool.prepareTransaction(transaction, secretKey);\n const result = await __classPrivateFieldGet(this, _queue).add(insertion);\n if (result) {\n this.transactionPool.drain();\n }\n return result;\n }\n /**\n * Immediately ignores all transactions that were in the process of being\n * added to the pool. These transactions' `push` promises will be resolved\n * immediately with the value `false` and will _not_ be added to the pool.\n *\n * Also clears all transactions that were already added to the pool.\n *\n * Transactions that are currently in the process of being mined may still be\n * mined.\n */\n clear() {\n __classPrivateFieldGet(this, _queue).clear(false);\n this.transactionPool.clear();\n }\n /**\n * Stop processing _new_ transactions; puts new requests in a queue. Has no\n * affect if already paused.\n */\n async pause() {\n if (!__classPrivateFieldGet(this, _paused)) {\n // stop processing new transactions immediately\n __classPrivateFieldSet(this, _paused, true);\n __classPrivateFieldSet(this, _resumer, new Promise(resolve => {\n __classPrivateFieldSet(this, _resolver, resolve);\n }));\n }\n // then wait until all async things we were already processing are done\n // before returning\n if (__classPrivateFieldGet(this, _queue).isBusy()) {\n await __classPrivateFieldGet(this, _queue).emit(\"idle\");\n }\n }\n}\nexports.default = TransactionManager;\n_queue = new WeakMap(), _paused = new WeakMap(), _resumer = new WeakMap(), _resolver = new WeakMap(), _blockchain = new WeakMap();\n//# sourceMappingURL=transaction-manager.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _options, _priceBump, _blockchain, _origins, _accountPromises, _validateTransaction;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst utils_1 = require(\"@ganache/utils\");\nconst utils_2 = require(\"@ganache/utils\");\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nfunction byNonce(values, a, b) {\n return ((values[b].nonce.toBigInt() || 0n) > (values[a].nonce.toBigInt() || 0n));\n}\nclass TransactionPool extends emittery_1.default.Typed {\n constructor(options, blockchain) {\n super();\n _options.set(this, void 0);\n /**\n * Minimum price bump percentage to replace an already existing transaction (nonce)\n */\n _priceBump.set(this, 10n);\n _blockchain.set(this, void 0);\n this.executables = {\n inProgress: new Set(),\n pending: new Map()\n };\n _origins.set(this, new Map());\n _accountPromises.set(this, new Map());\n this.drain = () => {\n // notify listeners (the blockchain, then the miner, eventually) that we\n // have executable transactions ready\n this.emit(\"drain\");\n };\n _validateTransaction.set(this, (transaction) => {\n // Check the transaction doesn't exceed the current block limit gas.\n if (transaction.gas > __classPrivateFieldGet(this, _options).blockGasLimit) {\n return new ethereum_utils_1.CodedError(ethereum_utils_1.GAS_LIMIT, utils_2.JsonRpcErrorCode.INVALID_INPUT);\n }\n // Should supply enough intrinsic gas\n const gas = transaction.calculateIntrinsicGas();\n if (gas === -1n || transaction.gas.toBigInt() < gas) {\n return new ethereum_utils_1.CodedError(ethereum_utils_1.INTRINSIC_GAS_TOO_LOW, utils_2.JsonRpcErrorCode.INVALID_INPUT);\n }\n return null;\n });\n __classPrivateFieldSet(this, _blockchain, blockchain);\n __classPrivateFieldSet(this, _options, options);\n }\n /**\n * Inserts a transaction into the pending queue, if executable, or future pool\n * if not.\n *\n * @param transaction\n * @param secretKey\n * @returns data that can be used to drain the queue\n */\n async prepareTransaction(transaction, secretKey) {\n let err;\n err = __classPrivateFieldGet(this, _validateTransaction).call(this, transaction);\n if (err != null) {\n throw err;\n }\n const from = transaction.from;\n let transactionNonce;\n if (!transaction.nonce.isNull()) {\n transactionNonce = transaction.nonce.toBigInt();\n if (transactionNonce < 0n) {\n throw new ethereum_utils_1.CodedError(ethereum_utils_1.NONCE_TOO_LOW, utils_2.JsonRpcErrorCode.INVALID_INPUT);\n }\n }\n const origin = from.toString();\n // We await the `transactorNoncePromise` async request to ensure we process\n // transactions in FIFO order *by account*. We look up accounts because\n // ganache fills in missing nonces automatically, and we need to do it in\n // order.\n // The trick here is that we might actually get the next nonce from the\n // account's pending executable transactions, not the account...\n // But another transaction might currently be getting the nonce from the\n // account, if it is, we need to wait for it to be done doing that. Hence:\n let transactorNoncePromise = __classPrivateFieldGet(this, _accountPromises).get(origin);\n if (transactorNoncePromise) {\n await transactorNoncePromise;\n }\n // we should _probably_ cache `highestNonce`, but it's actually a really hard thing to cache as the current highest\n // nonce might be invalidated (like if the sender doesn't have enough funds), so we'd have to go back to the previous\n // highest nonce... but what if that previous highest nonce was also invalidated?! we have to go back to the... you\n // get the picture.\n // So... we currently do things sub-optimally:\n // if we currently have txs in `executableOriginTransactions`, we iterate over them to find the highest nonce\n // and use that. Otherwise, we just fetch it from the database.\n // Beware! There might still be race conditions here:\n // * if the highest tx executes, which causes it to be removed from the `executableOriginTransactions` heap,\n // then a new tx comes in _before_ the block is persisted to the database, the nonce might be of the second\n // tx would be too low.\n // * rough idea for a fix: transactions have a `finalize` method that is called _after_ the tx is saved. Maybe\n // when tx's are executed their nonce is moved to a `highNonceByOrigin` map? We'd check this map in addition to the\n // `executableOriginTransactions` map, always taking the highest of the two.\n let highestNonce = 0n;\n const origins = __classPrivateFieldGet(this, _origins);\n const queuedOriginTransactions = origins.get(origin);\n let isExecutableTransaction = false;\n const executables = this.executables.pending;\n let executableOriginTransactions = executables.get(origin);\n let length;\n if (executableOriginTransactions &&\n (length = executableOriginTransactions.length)) {\n // check if a transaction with the same nonce is in the origin's\n // executables queue already. Replace the matching transaction or throw this\n // new transaction away as necessary.\n const pendingArray = executableOriginTransactions.array;\n const priceBump = __classPrivateFieldGet(this, _priceBump);\n const newGasPrice = transaction.gasPrice.toBigInt();\n // Notice: we're iterating over the raw heap array, which isn't\n // necessarily sorted\n for (let i = 0; i < length; i++) {\n const currentPendingTx = pendingArray[i];\n const thisNonce = currentPendingTx.nonce.toBigInt();\n if (thisNonce === transactionNonce) {\n const gasPrice = currentPendingTx.gasPrice.toBigInt();\n const thisPricePremium = gasPrice + (gasPrice * priceBump) / 100n;\n // if our new price is `gasPrice * priceBumpPercent` better than our\n // oldPrice, throw out the old now.\n if (!currentPendingTx.locked && newGasPrice > thisPricePremium) {\n isExecutableTransaction = true;\n // do an in-place replace without triggering a re-sort because we\n // already know where this transaction should go in this \"byNonce\"\n // heap.\n pendingArray[i] = transaction;\n currentPendingTx.finalize(\"rejected\", new ethereum_utils_1.CodedError(\"Transaction replaced by better transaction\", utils_2.JsonRpcErrorCode.TRANSACTION_REJECTED));\n }\n else {\n throw new ethereum_utils_1.CodedError(\"replacement transaction underpriced\", utils_2.JsonRpcErrorCode.TRANSACTION_REJECTED);\n }\n }\n if (thisNonce > highestNonce) {\n highestNonce = thisNonce;\n }\n }\n if (transactionNonce === void 0) {\n // if we aren't signed and don't have a transactionNonce yet set it now\n transactionNonce = highestNonce + 1n;\n transaction.nonce = utils_2.Quantity.from(transactionNonce);\n isExecutableTransaction = true;\n highestNonce = transactionNonce;\n }\n else if (transactionNonce === highestNonce + 1n) {\n // if our transaction's nonce is 1 higher than the last transaction in the\n // origin's heap we are executable.\n isExecutableTransaction = true;\n highestNonce = transactionNonce;\n }\n }\n else {\n // since we don't have any executable transactions at the moment, we need\n // to find our nonce from the account itself...\n if (!transactorNoncePromise) {\n transactorNoncePromise = __classPrivateFieldGet(this, _blockchain).accounts.getNonce(from);\n __classPrivateFieldGet(this, _accountPromises).set(origin, transactorNoncePromise);\n transactorNoncePromise.then(() => {\n __classPrivateFieldGet(this, _accountPromises).delete(origin);\n });\n }\n const transactor = await transactorNoncePromise;\n const transactorNonce = transactor ? transactor.toBigInt() : 0n;\n if (transactionNonce === void 0) {\n // if we don't have a transactionNonce, just use the account's next\n // nonce and mark as executable\n transactionNonce = transactorNonce ? transactorNonce : 0n;\n highestNonce = transactionNonce;\n isExecutableTransaction = true;\n transaction.nonce = utils_2.Quantity.from(transactionNonce);\n }\n else if (transactionNonce < transactorNonce) {\n // it's an error if the transaction's nonce is <= the persisted nonce\n throw new Error(`the tx doesn't have the correct nonce. account has nonce of: ${transactorNonce} tx has nonce of: ${transactionNonce}`);\n }\n else if (transactionNonce === transactorNonce) {\n isExecutableTransaction = true;\n }\n }\n // now that we know we have a transaction nonce we can sign the transaction\n // (if we have the secret key)\n if (secretKey) {\n transaction.signAndHash(secretKey.toBuffer());\n }\n else if (transaction.v == null) {\n // if we don't have the secret key and we aren't already signed,\n // then we are a \"fake transaction\", so we sign it with a fake key.\n const from = transaction.from.toBuffer();\n let fakePrivateKey;\n if (from.equals(utils_2.ACCOUNT_ZERO)) {\n fakePrivateKey = Buffer.allocUnsafe(32);\n // allow signing with the 0x0 address\n // see: https://github.com/ethereumjs/ethereumjs-monorepo/issues/829#issue-674385636\n fakePrivateKey[0] = 1;\n }\n else {\n fakePrivateKey = Buffer.concat([from, from.slice(0, 12)]);\n }\n transaction.signAndHash(fakePrivateKey);\n }\n if (isExecutableTransaction) {\n // if it is executable add it to the executables queue\n if (executableOriginTransactions) {\n executableOriginTransactions.push(transaction);\n }\n else {\n // if we don't yet have an executables queue for this origin make one now\n executableOriginTransactions = utils_1.Heap.from(transaction, byNonce);\n executables.set(origin, executableOriginTransactions);\n }\n // Now we need to drain any queued transactions that were previously\n // not executable due to nonce gaps into the origin's queue...\n if (queuedOriginTransactions) {\n let nextExpectedNonce = transactionNonce + 1n;\n while (true) {\n const nextTx = queuedOriginTransactions.peek();\n const nextTxNonce = nextTx.nonce.toBigInt() || 0n;\n if (nextTxNonce !== nextExpectedNonce) {\n break;\n }\n // we've got a an executable nonce! Put it in the executables queue.\n executableOriginTransactions.push(nextTx);\n // And then remove this transaction from its origin's queue\n if (!queuedOriginTransactions.removeBest()) {\n // removeBest() returns `false` when there are no more items after\n // the removed item. Let's do some cleanup when that happens.\n origins.delete(origin);\n break;\n }\n nextExpectedNonce += 1n;\n }\n }\n return true;\n }\n else {\n // otherwise, put it in the future queue\n if (queuedOriginTransactions) {\n queuedOriginTransactions.push(transaction);\n }\n else {\n origins.set(origin, utils_1.Heap.from(transaction, byNonce));\n }\n return false;\n }\n }\n clear() {\n __classPrivateFieldGet(this, _origins).clear();\n __classPrivateFieldGet(this, _accountPromises).clear();\n this.executables.pending.clear();\n }\n /**\n * Returns the transaction matching the given hash.\n *\n * This isn't the fastest thing... but querying for pending transactions is\n * likely rare, so leaving this slow so other code paths can be faster might\n * be okay.\n *\n * @param transactionHash\n */\n find(transactionHash) {\n const { pending, inProgress } = this.executables;\n // first search pending transactions\n for (let [_, transactions] of __classPrivateFieldGet(this, _origins)) {\n if (transactions === undefined)\n continue;\n const arr = transactions.array;\n for (let i = 0; i < transactions.length; i++) {\n const tx = arr[i];\n if (tx.hash.toBuffer().equals(transactionHash)) {\n return tx;\n }\n }\n }\n // then transactions eligible for execution\n for (let [_, transactions] of pending) {\n const arr = transactions.array;\n for (let i = 0; i < transactions.length; i++) {\n const tx = arr[i];\n if (tx.hash.toBuffer().equals(transactionHash)) {\n return tx;\n }\n }\n }\n // and finally transactions that have just been processed, but not yet saved\n for (let tx of inProgress) {\n if (tx.hash.toBuffer().equals(transactionHash)) {\n return tx;\n }\n }\n return null;\n }\n}\nexports.default = TransactionPool;\n_options = new WeakMap(), _priceBump = new WeakMap(), _blockchain = new WeakMap(), _origins = new WeakMap(), _accountPromises = new WeakMap(), _validateTransaction = new WeakMap();\n//# sourceMappingURL=transaction-pool.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _queue, _tryResolve, _tryResolveChain;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst entry_1 = __importDefault(require(\"./src/entry\"));\nconst emitteryMethods = [\"emit\", \"once\"];\n/**\n * Creates a FIFO queue that ensures promises are _resolved_ in the order\n * they were added.\n *\n * This is different than a FIFO queue that _executes_ functions that\n * return promises; this queue is for the promises themselves.\n *\n * @example\n * ```javascript\n * const queue = new PromiseQueue();\n *\n * const slow = new Promise(resolve => setTimeout(resolve, 1000, \"slow\"));\n * const fast = Promise.resolve(\"fast\");\n *\n * await Promise.race([\n * queue.add(slow),\n * queue.add(fast)\n * ]); // returns \"slow\"\n *\n * // Additionally, the queued promise chain can be cleared via `queue.clear(value)`.\n * // This will cause the chain of promises to all resolve immediately with the\n * // given value. *\n * //\n * // * note: whatever the promise starting doing when it was created will still\n * // happen, no promises are aborted; rather, the return value is ignored.\n * ```\n */\nlet PromiseQueue = class PromiseQueue {\n constructor() {\n // TODO(perf): a singly linked list is probably a better option here\n _queue.set(this, []);\n _tryResolve.set(this, (queue, entry) => {\n // if this is now the highest priority entry, resolve the outer\n // Promise\n if (entry === queue[0]) {\n queue.shift();\n entry.resolve(entry.value);\n // then try resolving the rest\n __classPrivateFieldGet(this, _tryResolveChain).call(this, queue);\n }\n else {\n entry.resolved = true;\n }\n });\n /**\n * Removes all _resolved_ promises from the front of the chain of promises.\n */\n _tryResolveChain.set(this, (queue) => {\n let first = queue[0];\n while (first && first.resolved) {\n queue.shift();\n first.resolve(first.value);\n first = queue[0];\n }\n // if there is nothing left to do emit `\"idle\"`\n if (queue.length === 0) {\n this.emit(\"idle\");\n }\n });\n }\n /**\n * Returns true if there are promises pending in the queue\n */\n isBusy() {\n return __classPrivateFieldGet(this, _queue).length !== 0;\n }\n /**\n * Adds the promise to the end of the queue.\n * @param promise\n * @returns a promise that resolves with the given promise's result. If the\n * queue was `clear`ed before the promise could be shifted off the return\n * value will be the `value` passed to `clear`.\n */\n add(promise) {\n const queue = __classPrivateFieldGet(this, _queue);\n const entry = new entry_1.default(promise, queue, __classPrivateFieldGet(this, _tryResolve));\n queue.push(entry);\n return entry.promise;\n }\n /**\n * Clears all promises from the queue and sets their resolved values to the\n * given value.\n */\n clear(value) {\n // remove all entrys from the queue and mark them.\n const cancelledQueue = __classPrivateFieldGet(this, _queue).splice(0);\n cancelledQueue.forEach(entry => {\n entry.queue = cancelledQueue;\n entry.value = value;\n });\n }\n};\n_queue = new WeakMap(), _tryResolve = new WeakMap(), _tryResolveChain = new WeakMap();\nPromiseQueue = __decorate([\n emittery_1.default.mixin(Symbol.for(\"emittery\"), emitteryMethods)\n], PromiseQueue);\nexports.default = PromiseQueue;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _blockchain;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst manager_1 = __importDefault(require(\"./manager\"));\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereum_transaction_1 = require(\"@ganache/ethereum-transaction\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nclass TransactionReceiptManager extends manager_1.default {\n constructor(base, blockchain) {\n super(base, ethereum_transaction_1.TransactionReceipt);\n _blockchain.set(this, void 0);\n __classPrivateFieldSet(this, _blockchain, blockchain);\n }\n async get(key) {\n const receipt = await super.get(key);\n if (receipt) {\n return receipt;\n }\n else if (__classPrivateFieldGet(this, _blockchain).fallback) {\n const res = await __classPrivateFieldGet(this, _blockchain).fallback.request(\"eth_getTransactionReceipt\", [typeof key === \"string\" ? key : utils_1.Data.from(key)]);\n if (!res)\n return null;\n const status = res.status === \"0x1\" ? utils_1.RPCQUANTITY_ONE.toBuffer() : utils_1.BUFFER_ZERO;\n const cumulativeGasUsed = utils_1.Quantity.from(res.cumulativeGasUsed).toBuffer();\n const logsBloom = utils_1.Data.from(res.logsBloom, 256).toBuffer();\n const logs = res.logs.map(log => ({\n address: ethereum_address_1.Address.from(log.address),\n topics: log.topics.map(topic => utils_1.Data.from(topic)),\n data: Array.isArray(log.data)\n ? log.data.map(data => utils_1.Data.from(data).toBuffer())\n : utils_1.Data.from(log.data).toBuffer()\n }));\n const gasUsed = utils_1.Quantity.from(res.gasUsed).toBuffer();\n const contractAddress = res.contractAddress == null\n ? utils_1.BUFFER_EMPTY\n : ethereum_address_1.Address.from(res.contractAddress).toBuffer();\n return ethereum_transaction_1.TransactionReceipt.fromValues(status, cumulativeGasUsed, logsBloom, logs, gasUsed, contractAddress);\n }\n }\n}\nexports.default = TransactionReceiptManager;\n_blockchain = new WeakMap();\n//# sourceMappingURL=transaction-receipt-manager.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _abortController, _handler, _options, _accounts, _setCommonFromChain, _setBlockDataFromChainAndOptions, _syncAccounts;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Fork = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst abort_controller_1 = __importDefault(require(\"abort-controller\"));\nconst common_1 = __importDefault(require(\"@ethereumjs/common\"));\nconst http_handler_1 = require(\"./handlers/http-handler\");\nconst ws_handler_1 = require(\"./handlers/ws-handler\");\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst ethereum_block_1 = require(\"@ganache/ethereum-block\");\nfunction fetchChainId(fork) {\n return fork\n .request(\"eth_chainId\", [])\n .then(chainIdHex => parseInt(chainIdHex, 16));\n}\nfunction fetchNetworkId(fork) {\n return fork\n .request(\"net_version\", [])\n .then(networkIdStr => parseInt(networkIdStr, 10));\n}\nfunction fetchBlockNumber(fork) {\n return fork.request(\"eth_blockNumber\", []);\n}\nfunction fetchBlock(fork, blockNumber) {\n return fork.request(\"eth_getBlockByNumber\", [blockNumber, true]);\n}\nfunction fetchNonce(fork, address, blockNumber) {\n return fork\n .request(\"eth_getTransactionCount\", [address, blockNumber])\n .then(nonce => utils_1.Quantity.from(nonce));\n}\nclass Fork {\n constructor(options, accounts) {\n _abortController.set(this, new abort_controller_1.default());\n _handler.set(this, void 0);\n _options.set(this, void 0);\n _accounts.set(this, void 0);\n _setCommonFromChain.set(this, async () => {\n const [chainId, networkId] = await Promise.all([\n fetchChainId(this),\n fetchNetworkId(this)\n ]);\n this.common = common_1.default.forCustomChain(utils_1.KNOWN_CHAINIDS.has(chainId) ? chainId : 1, {\n name: \"ganache-fork\",\n networkId,\n chainId,\n comment: \"Local test network fork\"\n });\n this.common.on = () => { };\n });\n _setBlockDataFromChainAndOptions.set(this, async () => {\n const options = __classPrivateFieldGet(this, _options);\n if (options.blockNumber === ethereum_utils_1.Tag.LATEST) {\n // if our block number option is \"latest\" override it with the original\n // chain's current blockNumber\n const block = await fetchBlock(this, ethereum_utils_1.Tag.LATEST);\n options.blockNumber = parseInt(block.number, 16);\n this.blockNumber = utils_1.Quantity.from(options.blockNumber);\n this.stateRoot = utils_1.Data.from(block.stateRoot);\n await __classPrivateFieldGet(this, _syncAccounts).call(this, this.blockNumber);\n return block;\n }\n else if (typeof options.blockNumber === \"number\") {\n const blockNumber = utils_1.Quantity.from(options.blockNumber);\n const [block] = await Promise.all([\n fetchBlock(this, blockNumber).then(async (block) => {\n this.stateRoot = block.stateRoot;\n await __classPrivateFieldGet(this, _syncAccounts).call(this, blockNumber);\n return block;\n }),\n fetchBlockNumber(this).then((latestBlockNumberHex) => {\n const latestBlockNumberInt = parseInt(latestBlockNumberHex, 16);\n // if our block number option is _after_ the current block number\n // throw, as it likely wasn't intentional and doesn't make sense.\n if (options.blockNumber > latestBlockNumberInt) {\n throw new Error(`\\`fork.blockNumber\\` (${options.blockNumber}) must not be greater than the current block number (${latestBlockNumberInt})`);\n }\n else {\n this.blockNumber = blockNumber;\n }\n })\n ]);\n return block;\n }\n else {\n throw new Error(`Invalid value for \\`fork.blockNumber\\` option: \"${options.blockNumber}\". Must be a positive integer or the string \"latest\".`);\n }\n });\n _syncAccounts.set(this, (blockNumber) => {\n return Promise.all(__classPrivateFieldGet(this, _accounts).map(async (account) => {\n const nonce = await fetchNonce(this, account.address, blockNumber);\n account.nonce = nonce;\n }));\n });\n const forkingOptions = (__classPrivateFieldSet(this, _options, options.fork));\n __classPrivateFieldSet(this, _accounts, accounts);\n const { url } = forkingOptions;\n if (url) {\n const { protocol } = url;\n switch (protocol) {\n case \"ws:\":\n case \"wss:\":\n __classPrivateFieldSet(this, _handler, new ws_handler_1.WsHandler(options, __classPrivateFieldGet(this, _abortController).signal));\n break;\n case \"http:\":\n case \"https:\":\n __classPrivateFieldSet(this, _handler, new http_handler_1.HttpHandler(options, __classPrivateFieldGet(this, _abortController).signal));\n break;\n default: {\n throw new Error(`Unsupported protocol: ${protocol}`);\n }\n }\n }\n else if (forkingOptions.provider) {\n let id = 0;\n __classPrivateFieldSet(this, _handler, {\n request: (method, params) => {\n // format params via JSON stringification because the params might\n // be Quantity or Data, which aren't valid as `params` themselves,\n // but when JSON stringified they are\n const paramCopy = JSON.parse(JSON.stringify(params));\n if (forkingOptions.provider.request) {\n return forkingOptions.provider.request({\n method,\n params: paramCopy\n });\n }\n else if (forkingOptions.provider.send) {\n // TODO: remove support for legacy providers\n // legacy `.send`\n console.warn(\"WARNING: Ganache forking only supports EIP-1193-compliant providers. Legacy support for send is currently enabled, but will be removed in a future version _without_ a breaking change. To remove this warning, switch to an EIP-1193 provider. This error is probably caused by an old version of Web3's HttpProvider (or an ganache < v7)\");\n return new Promise((resolve, reject) => {\n forkingOptions.provider.send({\n id: id++,\n jsonrpc: \"2.0\",\n method,\n params: paramCopy\n }, (err, response) => {\n if (err)\n return void reject(err);\n resolve(response.result);\n });\n });\n }\n else {\n throw new Error(\"Forking `provider` must be EIP-1193 compatible\");\n }\n },\n close: () => Promise.resolve()\n });\n }\n }\n async initialize() {\n const [block] = await Promise.all([\n __classPrivateFieldGet(this, _setBlockDataFromChainAndOptions).call(this),\n __classPrivateFieldGet(this, _setCommonFromChain).call(this)\n ]);\n this.block = new ethereum_block_1.Block(ethereum_block_1.Block.rawFromJSON(block), this.common);\n }\n request(method, params) {\n return __classPrivateFieldGet(this, _handler).request(method, params);\n }\n abort() {\n return __classPrivateFieldGet(this, _abortController).abort();\n }\n close() {\n return __classPrivateFieldGet(this, _handler).close();\n }\n selectValidForkBlockNumber(blockNumber) {\n return blockNumber.toBigInt() < this.blockNumber.toBigInt()\n ? blockNumber\n : this.blockNumber;\n }\n}\nexports.Fork = Fork;\n_abortController = new WeakMap(), _handler = new WeakMap(), _options = new WeakMap(), _accounts = new WeakMap(), _setCommonFromChain = new WeakMap(), _setBlockDataFromChainAndOptions = new WeakMap(), _syncAccounts = new WeakMap();\n//# sourceMappingURL=fork.js.map","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey\n\nmodule.exports = function IsPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _connector, _handlePost, _handleOptions;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst content_types_1 = __importDefault(require(\"./utils/content-types\"));\nconst http_response_codes_1 = __importDefault(require(\"./utils/http-response-codes\"));\nconst noop = () => { };\n/**\n * uWS doesn't let us use the request after the request method has completed.\n * But we can't set headers until after the statusCode is set. But we don't\n * know the status code until the provider returns asynchronously.\n * So this does request-related work immediately and returns a function to do the\n * rest of the work later.\n * @param method\n * @param request\n */\nfunction prepareCORSResponseHeaders(method, request) {\n // https://fetch.spec.whatwg.org/#http-requests\n const origin = request.getHeader(\"origin\");\n const acrh = request.getHeader(\"access-control-request-headers\");\n return (response) => {\n const isCORSRequest = origin !== \"\";\n if (isCORSRequest) {\n // OPTIONS preflight requests need a little extra treatment\n if (method === \"OPTIONS\") {\n // we only allow POST requests, so it doesn't matter which method the request is asking for\n response.writeHeader(\"Access-Control-Allow-Methods\", \"POST\");\n // echo all requested access-control-request-headers back to the response\n if (acrh !== \"\") {\n response.writeHeader(\"Access-Control-Allow-Headers\", acrh);\n }\n // Make browsers and compliant clients cache the OPTIONS preflight response for 10\n // minutes (this is the maximum time Chromium allows)\n response.writeHeader(\"Access-Control-Max-Age\", \"600\"); // seconds\n }\n // From the spec: https://fetch.spec.whatwg.org/#http-responses\n // \"For a CORS-preflight request, request’s credentials mode is always \"omit\",\n // but for any subsequent CORS requests it might not be. Support therefore\n // needs to be indicated as part of the HTTP response to the CORS-preflight request as well.\", so this\n // header is added to all requests.\n // Additionally, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials,\n // states that there aren't any HTTP Request headers that indicate you whether or not Request.withCredentials\n // is set. Because web3@1.0.0-beta.35-? always sets `request.withCredentials = true` while Safari requires it be\n // returned even when no credentials are set in the browser this header must always be return on all requests.\n // (I've found that Chrome and Firefox don't actually require the header when credentials aren't set)\n // Regression Commit: https://github.com/ethereum/web3.js/pull/1722\n // Open Web3 Issue: https://github.com/ethereum/web3.js/issues/1802\n response.writeHeader(\"Access-Control-Allow-Credentials\", \"true\");\n // From the spec: \"It cannot be reliably identified as participating in the CORS protocol\n // as the `Origin` header is also included for all requests whose method is neither\n // `GET` nor `HEAD`.\"\n // Explicitly set the origin instead of using *, since credentials\n // can't be used in conjunction with *. This will always be set\n /// for valid preflight requests.\n response.writeHeader(\"Access-Control-Allow-Origin\", origin);\n }\n };\n}\nfunction sendResponse(response, statusCode, contentType, data, writeHeaders = noop) {\n response.cork(() => {\n response.writeStatus(statusCode);\n writeHeaders(response);\n if (contentType) {\n response.writeHeader(\"Content-Type\", contentType);\n }\n response.end(data);\n });\n}\nclass HttpServer {\n constructor(app, connector, options) {\n _connector.set(this, void 0);\n _handlePost.set(this, (response, request) => {\n // handle JSONRPC post requests...\n const writeHeaders = prepareCORSResponseHeaders(\"POST\", request);\n // TODO(perf): pre-allocate the buffer if we know the Content-Length\n let buffer;\n let aborted = false;\n response.onAborted(() => {\n aborted = true;\n });\n response.onData((message, isLast) => {\n const chunk = Buffer.from(message);\n if (isLast) {\n // we have to use any here because typescript isn't smart enough\n // to understand the ambiguity of RequestFormat and ReturnType\n // on the Connector interface must match up appropriately\n const connector = __classPrivateFieldGet(this, _connector);\n let payload;\n try {\n const message = buffer\n ? Buffer.concat([buffer, chunk], buffer.length + chunk.length)\n : chunk;\n payload = connector.parse(message);\n }\n catch (e) {\n sendResponse(response, http_response_codes_1.default.BAD_REQUEST, content_types_1.default.PLAIN, \"400 Bad Request: \" + e.message, writeHeaders);\n return;\n }\n connector\n .handle(payload, request)\n .then(({ value }) => value)\n .then(result => {\n if (aborted) {\n // if the request has been aborted don't try sending (it'll\n // cause an `Unhandled promise rejection` if we try)\n return;\n }\n const data = connector.format(result, payload);\n sendResponse(response, http_response_codes_1.default.OK, content_types_1.default.JSON, data, writeHeaders);\n })\n .catch(error => {\n if (aborted) {\n // if the request has been aborted don't try sending (it'll\n // cause an `Unhandled promise rejection` if we try)\n return;\n }\n const data = connector.formatError(error, payload);\n sendResponse(response, http_response_codes_1.default.OK, content_types_1.default.JSON, data, writeHeaders);\n });\n }\n else {\n if (buffer) {\n buffer = Buffer.concat([buffer, chunk], buffer.length + chunk.length);\n }\n else {\n buffer = Buffer.concat([chunk], chunk.length);\n }\n }\n });\n });\n _handleOptions.set(this, (response, request) => {\n // handle CORS preflight requests...\n const writeHeaders = prepareCORSResponseHeaders(\"OPTIONS\", request);\n // OPTIONS responses don't have a body, so respond with `204 No Content`...\n sendResponse(response, http_response_codes_1.default.NO_CONTENT, void 0, \"\", writeHeaders);\n });\n __classPrivateFieldSet(this, _connector, connector);\n // JSON-RPC routes...\n app\n .post(options.rpcEndpoint, __classPrivateFieldGet(this, _handlePost))\n .options(options.rpcEndpoint, __classPrivateFieldGet(this, _handleOptions));\n // because Easter Eggs are fun...\n app.get(\"/418\", response => {\n sendResponse(response, http_response_codes_1.default.IM_A_TEAPOT, content_types_1.default.PLAIN, \"418 I'm a teapot\");\n });\n // fallback routes...\n app.any(\"/*\", (response, request) => {\n const connectionHeader = request.getHeader(\"connection\");\n if (connectionHeader && connectionHeader.toLowerCase() === \"upgrade\") {\n // if we got here it means the websocket server wasn't enabled but\n // a client tried to connect via websocket. This is a Bad Request.\n sendResponse(response, http_response_codes_1.default.BAD_REQUEST, content_types_1.default.PLAIN, \"400 Bad Request\");\n }\n else {\n // all other requests don't mean anything to us, so respond with `404 NOT FOUND`...\n sendResponse(response, http_response_codes_1.default.NOT_FOUND, content_types_1.default.PLAIN, \"404 Not Found\");\n }\n });\n }\n close() {\n // currently a no op.\n }\n}\nexports.default = HttpServer;\n_connector = new WeakMap(), _handlePost = new WeakMap(), _handleOptions = new WeakMap();\n//# sourceMappingURL=http-server.js.map","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","\"use strict\";\n/*!\n * @ganache/ethereum\n *\n * @copyright Truffle Blockchain Group\n * @author David Murdoch (https://davidmurdoch.com)\n * @license MIT\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/connector\"), exports);\n//# sourceMappingURL=index.js.map","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuntimeTransaction = exports.hasPartialSignature = exports.toValidLengthAddress = void 0;\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst signing_1 = require(\"./signing\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst base_transaction_1 = require(\"./base-transaction\");\nconst transaction_receipt_1 = require(\"./transaction-receipt\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nconst toValidLengthAddress = (address, fieldName) => {\n const buffer = utils_1.Data.from(address).toBuffer();\n if (buffer.byteLength !== ethereum_address_1.Address.ByteLength) {\n throw new Error(`The field ${fieldName} must have byte length of ${ethereum_address_1.Address.ByteLength}`);\n }\n return ethereum_address_1.Address.from(buffer);\n};\nexports.toValidLengthAddress = toValidLengthAddress;\nconst hasPartialSignature = (data) => {\n return data[\"v\"] != null || data[\"r\"] != null || data[\"s\"] != null;\n};\nexports.hasPartialSignature = hasPartialSignature;\nconst ONE_BUFFER = utils_1.RPCQUANTITY_ONE.toBuffer();\n/**\n * A RuntimeTransaction can be changed; its hash is not finalized and it is not\n * yet part of a block.\n */\nclass RuntimeTransaction extends base_transaction_1.BaseTransaction {\n constructor(data, common) {\n super(common);\n /**\n * used by the miner to mark if this transaction is eligible for reordering or\n * removal\n */\n this.locked = false;\n this.toJSON = () => {\n return {\n hash: this.hash,\n nonce: this.nonce,\n blockHash: null,\n blockNumber: null,\n transactionIndex: null,\n from: this.from,\n to: this.to.isNull() ? null : this.to,\n value: this.value,\n gas: this.gas,\n gasPrice: this.gasPrice,\n input: this.data,\n v: this.v,\n r: this.r,\n s: this.s\n };\n };\n let finalizer;\n this.finalized = new Promise(resolve => {\n finalizer = (...args) => process.nextTick(resolve, ...args);\n });\n this.finalizer = finalizer;\n if (Array.isArray(data)) {\n // handle raw data (sendRawTransaction)\n this.nonce = utils_1.Quantity.from(data[0], true);\n this.gasPrice = utils_1.Quantity.from(data[1]);\n this.gas = utils_1.Quantity.from(data[2]);\n this.to = data[3].length == 0 ? utils_1.RPCQUANTITY_EMPTY : ethereum_address_1.Address.from(data[3]);\n this.value = utils_1.Quantity.from(data[4]);\n this.data = utils_1.Data.from(data[5]);\n this.v = utils_1.Quantity.from(data[6]);\n this.r = utils_1.Quantity.from(data[7]);\n this.s = utils_1.Quantity.from(data[8]);\n const { from, serialized, hash, encodedData, encodedSignature } = signing_1.computeIntrinsics(this.v, data, this.common.chainId());\n this.from = from;\n this.raw = data;\n this.serialized = serialized;\n this.hash = hash;\n this.encodedData = encodedData;\n this.encodedSignature = encodedSignature;\n }\n else {\n // handle JSON\n this.nonce = utils_1.Quantity.from(data.nonce, true);\n this.gasPrice = utils_1.Quantity.from(data.gasPrice);\n this.gas = utils_1.Quantity.from(data.gas == null ? data.gasLimit : data.gas);\n this.to =\n data.to == null\n ? utils_1.RPCQUANTITY_EMPTY\n : exports.toValidLengthAddress(data.to, \"to\");\n this.value = utils_1.Quantity.from(data.value);\n this.data = utils_1.Data.from(data.data == null ? data.input : data.data);\n // If we have v, r, or s validate and use them\n if (exports.hasPartialSignature(data)) {\n if (data.v == null || data.r == null || data.s == null) {\n throw new Error(\"Transaction signature is incomplete; v, r, and s are required.\");\n }\n // if we have a signature the `nonce` field is required\n if (data.nonce == null) {\n throw new Error(\"Signed transaction is incomplete; nonce is required.\");\n }\n this.v = utils_1.Quantity.from(data.v, true);\n this.r = utils_1.Quantity.from(data.r, true);\n this.s = utils_1.Quantity.from(data.s, true);\n // compute the `hash` and the `from` address\n const raw = [\n this.nonce.toBuffer(),\n this.gasPrice.toBuffer(),\n this.gas.toBuffer(),\n this.to.toBuffer(),\n this.value.toBuffer(),\n this.data.toBuffer(),\n this.v.toBuffer(),\n this.r.toBuffer(),\n this.s.toBuffer()\n ];\n const { from, serialized, hash, encodedData, encodedSignature } = signing_1.computeIntrinsics(this.v, raw, this.common.chainId());\n // if the user specified a `from` address in addition to the `v`, `r`,\n // and `s` values, make sure the `from` address matches\n if (data.from !== null) {\n const userFrom = exports.toValidLengthAddress(data.from, \"from\");\n if (!from.toBuffer().equals(userFrom.toBuffer())) {\n throw new Error(\"Transaction is signed and contains a `from` field, but the signature doesn't match.\");\n }\n }\n this.from = from;\n this.raw = raw;\n this.serialized = serialized;\n this.hash = hash;\n this.encodedData = encodedData;\n this.encodedSignature = encodedSignature;\n }\n else if (data.from != null) {\n // we don't have a signature yet, so we just need to record the `from`\n // address for now. The TransactionPool will fill in the `hash` and\n // `raw` fields during signing\n this.from = exports.toValidLengthAddress(data.from, \"from\");\n }\n }\n }\n /**\n * sign a transaction with a given private key, then compute and set the `hash`.\n *\n * @param privateKey - Must be 32 bytes in length\n */\n signAndHash(privateKey) {\n if (this.v != null) {\n throw new Error(\"Internal Error: RuntimeTransaction `sign` called but transaction has already been signed\");\n }\n const chainId = this.common.chainId();\n const raw = [\n this.nonce.toBuffer(),\n this.gasPrice.toBuffer(),\n this.gas.toBuffer(),\n this.to.toBuffer(),\n this.value.toBuffer(),\n this.data.toBuffer(),\n utils_1.Quantity.from(chainId).toBuffer(),\n utils_1.BUFFER_EMPTY,\n utils_1.BUFFER_EMPTY\n ];\n const data = rlp_1.encodeRange(raw, 0, 6);\n const dataLength = data.length;\n const ending = rlp_1.encodeRange(raw, 6, 3);\n const msgHash = utils_1.keccak(rlp_1.digest([data.output, ending.output], dataLength + ending.length));\n const sig = ethereumjs_util_1.ecsign(msgHash, privateKey, chainId);\n this.v = utils_1.Quantity.from(sig.v);\n this.r = utils_1.Quantity.from(sig.r);\n this.s = utils_1.Quantity.from(sig.s);\n raw[6] = this.v.toBuffer();\n raw[7] = this.r.toBuffer();\n raw[8] = this.s.toBuffer();\n this.raw = raw;\n const encodedSignature = rlp_1.encodeRange(raw, 6, 3);\n this.serialized = rlp_1.digest([data.output, encodedSignature.output], dataLength + encodedSignature.length);\n this.hash = utils_1.Data.from(utils_1.keccak(this.serialized));\n this.encodedData = data;\n this.encodedSignature = encodedSignature;\n }\n serializeForDb(blockHash, blockNumber, transactionIndex) {\n // todo(perf):make this work with encodeRange and digest\n const txAndExtraData = [\n this.raw,\n [\n this.from.toBuffer(),\n this.hash.toBuffer(),\n blockHash.toBuffer(),\n blockNumber.toBuffer(),\n transactionIndex.toBuffer()\n ]\n ];\n return rlp_1.encode(txAndExtraData);\n }\n /**\n * Initializes the receipt and logs\n * @param result\n * @returns RLP encoded data for use in a transaction trie\n */\n fillFromResult(result, cumulativeGasUsed) {\n const vmResult = result.execResult;\n const execException = vmResult.exceptionError;\n let status;\n if (execException) {\n status = utils_1.BUFFER_ZERO;\n this.execException = new ethereum_utils_1.RuntimeError(this.hash, result, ethereum_utils_1.RETURN_TYPES.TRANSACTION_HASH);\n }\n else {\n status = ONE_BUFFER;\n }\n const receipt = (this.receipt = transaction_receipt_1.TransactionReceipt.fromValues(status, utils_1.Quantity.from(cumulativeGasUsed).toBuffer(), result.bloom.bitvector, (this.logs = vmResult.logs || []), result.gasUsed.toArrayLike(Buffer), result.createdAddress ? result.createdAddress.buf : null));\n return receipt.serialize(false);\n }\n getReceipt() {\n return this.receipt;\n }\n getLogs() {\n return this.logs;\n }\n /**\n * Returns a Promise that is resolved with the confirmation status and, if\n * appropriate, an error property.\n *\n * Note: it is possible to be confirmed AND have an error\n *\n * @param event \"finalized\"\n */\n once(_event) {\n return this.finalized;\n }\n /**\n * Mark this transaction as finalized, notifying all past and future\n * \"finalized\" event subscribers.\n *\n * Note:\n *\n * @param status\n * @param error\n */\n finalize(status, error = null) {\n // resolves the `#finalized` promise\n this.finalizer({ status, error });\n }\n}\nexports.RuntimeTransaction = RuntimeTransaction;\n//# sourceMappingURL=runtime-transaction.js.map","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar _gasUsed, _init;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransactionReceipt = void 0;\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst utils_1 = require(\"@ganache/utils\");\nconst utils_2 = require(\"@ganache/utils\");\nconst STATUSES = [utils_2.RPCQUANTITY_ZERO, utils_2.RPCQUANTITY_ONE];\nclass TransactionReceipt {\n constructor(data) {\n _gasUsed.set(this, void 0);\n _init.set(this, (status, cumulativeGasUsed, logsBloom, logs, gasUsed, contractAddress = null) => {\n this.raw = [status, cumulativeGasUsed, logsBloom, logs];\n this.contractAddress = contractAddress;\n __classPrivateFieldSet(this, _gasUsed, gasUsed);\n });\n if (data) {\n const decoded = rlp_1.decode(data);\n __classPrivateFieldGet(this, _init).call(this, decoded[0], decoded[1], decoded[2], decoded[3], decoded[4], decoded[5]);\n }\n }\n static fromValues(status, cumulativeGasUsed, logsBloom, logs, gasUsed, contractAddress) {\n const receipt = new TransactionReceipt();\n __classPrivateFieldGet(receipt, _init).call(receipt, status, cumulativeGasUsed, logsBloom, logs, gasUsed, contractAddress);\n return receipt;\n }\n serialize(all) {\n if (this.encoded == null) {\n this.encoded = rlp_1.encodeRange(this.raw, 0, 4);\n }\n if (all) {\n // the database format includes gasUsed and the contractAddress:\n const extras = [\n __classPrivateFieldGet(this, _gasUsed),\n this.contractAddress\n ];\n const epilogue = rlp_1.encodeRange(extras, 0, 2);\n return rlp_1.digest([this.encoded.output, epilogue.output], this.encoded.length + epilogue.length);\n }\n else {\n // receipt trie format:\n return rlp_1.digest([this.encoded.output], this.encoded.length);\n }\n }\n toJSON(block, transaction) {\n const raw = this.raw;\n const contractAddress = this.contractAddress.length === 0\n ? null\n : utils_1.Data.from(this.contractAddress);\n const blockHash = block.hash();\n const blockNumber = block.header.number;\n const blockLog = ethereum_utils_1.BlockLogs.create(blockHash);\n const transactionHash = transaction.hash;\n const transactionIndex = transaction.index;\n blockLog.blockNumber = blockNumber;\n raw[3].forEach(l => blockLog.append(transactionIndex, transactionHash, l));\n const logs = [...blockLog.toJSON()];\n return {\n transactionHash,\n transactionIndex,\n blockNumber,\n blockHash,\n from: transaction.from,\n to: contractAddress ? null : transaction.to,\n cumulativeGasUsed: utils_1.Quantity.from(raw[1]),\n gasUsed: utils_1.Quantity.from(__classPrivateFieldGet(this, _gasUsed)),\n contractAddress,\n logs,\n logsBloom: utils_1.Data.from(raw[2], 256),\n status: STATUSES[raw[0][0]]\n };\n }\n}\nexports.TransactionReceipt = TransactionReceipt;\n_gasUsed = new WeakMap(), _init = new WeakMap();\n//# sourceMappingURL=transaction-receipt.js.map","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hash_utils_1 = require(\"./hash-utils\");\nvar createKeccakHash = require(\"keccak\");\nexports.keccak224 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak224\");\n});\nexports.keccak256 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak256\");\n});\nexports.keccak384 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak384\");\n});\nexports.keccak512 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak512\");\n});\n//# sourceMappingURL=keccak.js.map","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t;\n return { next: verb(0), \"throw\": verb(1), \"return\": verb(2) };\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nexports.__esModule = true;\n/** Class representing a semaphore\n * Semaphores are initialized with a number of permits that get aquired and released\n * over the lifecycle of the Semaphore. These permits limit the number of simultaneous\n * executions of the code that the Semaphore synchronizes. Functions can wait and stop\n * executing until a permit becomes available.\n *\n * Locks that only allow one execution of a critical section are a special case of\n * Semaphores. To construct a lock, initialize a Semaphore with a permit count of 1.\n *\n * This Semaphore class is implemented with the help of promises that get returned\n * by functions that wait for permits to become available. This makes it possible\n * to use async/await to synchronize your code.\n */\nvar Semaphore = (function () {\n /**\n * Creates a semaphore.\n * @param permits The number of permits, i.e. things being allowed to run in parallel.\n * To create a lock that only lets one thing run at a time, set this to 1.\n * This number can also be negative.\n */\n function Semaphore(permits) {\n this.promiseResolverQueue = [];\n this.permits = permits;\n }\n /**\n * Returns the number of available permits.\n * @returns The number of available permits.\n */\n Semaphore.prototype.getPermits = function () {\n return this.permits;\n };\n /**\n * Returns a promise used to wait for a permit to become available. This method should be awaited on.\n * @returns A promise that gets resolved when execution is allowed to proceed.\n */\n Semaphore.prototype.wait = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (this.permits > 0) {\n this.permits -= 1;\n return [2 /*return*/, Promise.resolve(true)];\n }\n // If there is no permit available, we return a promise that resolves once the semaphore gets\n // signaled enough times that permits is equal to one.\n return [2 /*return*/, new Promise(function (resolver) { return _this.promiseResolverQueue.push(resolver); })];\n });\n });\n };\n /**\n * Alias for {@linkcode Semaphore.wait}.\n * @returns A promise that gets resolved when execution is allowed to proceed.\n */\n Semaphore.prototype.acquire = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.wait()];\n });\n });\n };\n /**\n * Same as {@linkcode Semaphore.wait} except the promise returned gets resolved with false if no\n * permit becomes available in time.\n * @param milliseconds The time spent waiting before the wait is aborted. This is a lower bound,\n * don't rely on it being precise.\n * @returns A promise that gets resolved with true when execution is allowed to proceed or\n * false if the time given elapses before a permit becomes available.\n */\n Semaphore.prototype.waitFor = function (milliseconds) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var resolver, promise;\n return __generator(this, function (_a) {\n if (this.permits > 0) {\n this.permits -= 1;\n return [2 /*return*/, Promise.resolve(true)];\n }\n resolver = function (b) { return void (0); };\n promise = new Promise(function (r) {\n resolver = r;\n });\n // The saved resolver gets added to our list of promise resolvers so that it gets a chance\n // to be resolved as a result of a call to signal().\n this.promiseResolverQueue.push(resolver);\n setTimeout(function () {\n // We have to remove the promise resolver from our list. Resolving it twice would not be\n // an issue but signal() always takes the next resolver from the queue and resolves it which\n // would swallow a permit if we didn't remove it.\n var index = _this.promiseResolverQueue.indexOf(resolver);\n if (index !== -1) {\n _this.promiseResolverQueue.splice(index, 1);\n }\n else {\n // This is weird... TODO Think about what the best course of action would be at this point.\n // Probably do nothing.\n }\n // false because the wait was unsuccessful.\n resolver(false);\n }, milliseconds);\n return [2 /*return*/, promise];\n });\n });\n };\n /**\n * Synchronous function that tries to acquire a permit and returns true if successful, false otherwise.\n * @returns Whether a permit could be acquired.\n */\n Semaphore.prototype.tryAcquire = function () {\n if (this.permits > 0) {\n this.permits -= 1;\n return true;\n }\n return false;\n };\n /**\n * Acquires all permits that are currently available and returns the number of acquired permits.\n * @returns Number of acquired permits.\n */\n Semaphore.prototype.drainPermits = function () {\n if (this.permits > 0) {\n var permitCount = this.permits;\n this.permits = 0;\n return permitCount;\n }\n return 0;\n };\n /**\n * Increases the number of permits by one. If there are other functions waiting, one of them will\n * continue to execute in a future iteration of the event loop.\n */\n Semaphore.prototype.signal = function () {\n this.permits += 1;\n if (this.permits > 1 && this.promiseResolverQueue.length > 0) {\n throw new Error('this.permits should never be > 0 when there is someone waiting.');\n }\n else if (this.permits === 1 && this.promiseResolverQueue.length > 0) {\n // If there is someone else waiting, immediately consume the permit that was released\n // at the beginning of this function and let the waiting function resume.\n this.permits -= 1;\n var nextResolver = this.promiseResolverQueue.shift();\n if (nextResolver) {\n nextResolver(true);\n }\n }\n };\n /**\n * Alias for {@linkcode Semaphore.signal}.\n */\n Semaphore.prototype.release = function () {\n this.signal();\n };\n /**\n * Schedules func to be called once a permit becomes available.\n * Returns a promise that resolves to the return value of func.\n * @typeparam T The return type of func.\n * @param func The function to be executed.\n * @return A promise that gets resolved with the return value of the function.\n */\n Semaphore.prototype.execute = function (func) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.wait()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, , 4, 5]);\n return [4 /*yield*/, func()];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n this.signal();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n return Semaphore;\n}());\nexports[\"default\"] = Semaphore;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toType = exports.TypeOutput = exports.bnToRlp = exports.bnToHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst ethjs_util_1 = require(\"ethjs-util\");\nconst bytes_1 = require(\"./bytes\");\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nfunction bnToHex(value) {\n return `0x${value.toString(16)}`;\n}\nexports.bnToHex = bnToHex;\n/**\n * Convert value from BN to RLP (unpadded buffer)\n * @param value value to convert\n */\nfunction bnToRlp(value) {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return bytes_1.unpadBuffer(value.toArrayLike(Buffer));\n}\nexports.bnToRlp = bnToRlp;\n/**\n * Type output options\n */\nvar TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BN\"] = 1] = \"BN\";\n TypeOutput[TypeOutput[\"Buffer\"] = 2] = \"Buffer\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput = exports.TypeOutput || (exports.TypeOutput = {}));\n/**\n * Convert an input to a specified type\n * @param input value to convert\n * @param outputType type to output\n */\nfunction toType(input, outputType) {\n if (typeof input === 'string' && !ethjs_util_1.isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n input = bytes_1.toBuffer(input);\n if (outputType === TypeOutput.Buffer) {\n return input;\n }\n else if (outputType === TypeOutput.BN) {\n return new bn_js_1.default(input);\n }\n else if (outputType === TypeOutput.Number) {\n const bn = new bn_js_1.default(input);\n const max = new bn_js_1.default(Number.MAX_SAFE_INTEGER.toString());\n if (bn.gt(max)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return bn.toNumber();\n }\n else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${input.toString('hex')}`;\n }\n}\nexports.toType = toType;\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActivePrecompiles = exports.ripemdPrecompileAddress = exports.getPrecompile = exports.precompiles = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar _01_ecrecover_1 = __importDefault(require(\"./01-ecrecover\"));\nvar _02_sha256_1 = __importDefault(require(\"./02-sha256\"));\nvar _03_ripemd160_1 = __importDefault(require(\"./03-ripemd160\"));\nvar _04_identity_1 = __importDefault(require(\"./04-identity\"));\nvar _05_modexp_1 = __importDefault(require(\"./05-modexp\"));\nvar _06_ecadd_1 = __importDefault(require(\"./06-ecadd\"));\nvar _07_ecmul_1 = __importDefault(require(\"./07-ecmul\"));\nvar _08_ecpairing_1 = __importDefault(require(\"./08-ecpairing\"));\nvar _09_blake2f_1 = __importDefault(require(\"./09-blake2f\"));\nvar _0a_bls12_g1add_1 = __importDefault(require(\"./0a-bls12-g1add\"));\nvar _0b_bls12_g1mul_1 = __importDefault(require(\"./0b-bls12-g1mul\"));\nvar _0c_bls12_g1multiexp_1 = __importDefault(require(\"./0c-bls12-g1multiexp\"));\nvar _0d_bls12_g2add_1 = __importDefault(require(\"./0d-bls12-g2add\"));\nvar _0e_bls12_g2mul_1 = __importDefault(require(\"./0e-bls12-g2mul\"));\nvar _0f_bls12_g2multiexp_1 = __importDefault(require(\"./0f-bls12-g2multiexp\"));\nvar _10_bls12_pairing_1 = __importDefault(require(\"./10-bls12-pairing\"));\nvar _11_bls12_map_fp_to_g1_1 = __importDefault(require(\"./11-bls12-map-fp-to-g1\"));\nvar _12_bls12_map_fp2_to_g2_1 = __importDefault(require(\"./12-bls12-map-fp2-to-g2\"));\nvar PrecompileAvailabilityCheck;\n(function (PrecompileAvailabilityCheck) {\n PrecompileAvailabilityCheck[PrecompileAvailabilityCheck[\"EIP\"] = 0] = \"EIP\";\n PrecompileAvailabilityCheck[PrecompileAvailabilityCheck[\"Hardfork\"] = 1] = \"Hardfork\";\n})(PrecompileAvailabilityCheck || (PrecompileAvailabilityCheck = {}));\nvar ripemdPrecompileAddress = '0000000000000000000000000000000000000003';\nexports.ripemdPrecompileAddress = ripemdPrecompileAddress;\nvar precompiles = (_a = {\n '0000000000000000000000000000000000000001': _01_ecrecover_1.default,\n '0000000000000000000000000000000000000002': _02_sha256_1.default\n },\n _a[ripemdPrecompileAddress] = _03_ripemd160_1.default,\n _a['0000000000000000000000000000000000000004'] = _04_identity_1.default,\n _a['0000000000000000000000000000000000000005'] = _05_modexp_1.default,\n _a['0000000000000000000000000000000000000006'] = _06_ecadd_1.default,\n _a['0000000000000000000000000000000000000007'] = _07_ecmul_1.default,\n _a['0000000000000000000000000000000000000008'] = _08_ecpairing_1.default,\n _a['0000000000000000000000000000000000000009'] = _09_blake2f_1.default,\n _a['000000000000000000000000000000000000000a'] = _0a_bls12_g1add_1.default,\n _a['000000000000000000000000000000000000000b'] = _0b_bls12_g1mul_1.default,\n _a['000000000000000000000000000000000000000c'] = _0c_bls12_g1multiexp_1.default,\n _a['000000000000000000000000000000000000000d'] = _0d_bls12_g2add_1.default,\n _a['000000000000000000000000000000000000000e'] = _0e_bls12_g2mul_1.default,\n _a['000000000000000000000000000000000000000f'] = _0f_bls12_g2multiexp_1.default,\n _a['0000000000000000000000000000000000000010'] = _10_bls12_pairing_1.default,\n _a['0000000000000000000000000000000000000011'] = _11_bls12_map_fp_to_g1_1.default,\n _a['0000000000000000000000000000000000000012'] = _12_bls12_map_fp2_to_g2_1.default,\n _a);\nexports.precompiles = precompiles;\nvar precompileAvailability = (_b = {\n '0000000000000000000000000000000000000001': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n '0000000000000000000000000000000000000002': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n }\n },\n _b[ripemdPrecompileAddress] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n _b['0000000000000000000000000000000000000004'] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n _b['0000000000000000000000000000000000000005'] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n _b['0000000000000000000000000000000000000006'] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n _b['0000000000000000000000000000000000000007'] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n _b['0000000000000000000000000000000000000008'] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n _b['0000000000000000000000000000000000000009'] = {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'istanbul',\n },\n _b['000000000000000000000000000000000000000a'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['000000000000000000000000000000000000000b'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['000000000000000000000000000000000000000c'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['000000000000000000000000000000000000000d'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['000000000000000000000000000000000000000f'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['000000000000000000000000000000000000000e'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['0000000000000000000000000000000000000010'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['0000000000000000000000000000000000000011'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b['0000000000000000000000000000000000000012'] = {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n _b);\nfunction getPrecompile(address, common) {\n var addr = address.buf.toString('hex');\n if (precompiles[addr]) {\n var availability = precompileAvailability[addr];\n if ((availability.type == PrecompileAvailabilityCheck.Hardfork &&\n common.gteHardfork(availability.param)) ||\n (availability.type == PrecompileAvailabilityCheck.EIP &&\n common.eips().includes(availability.param))) {\n return precompiles[addr];\n }\n }\n return precompiles[''];\n}\nexports.getPrecompile = getPrecompile;\nfunction getActivePrecompiles(common) {\n var activePrecompiles = [];\n for (var addressString in precompiles) {\n var address = new ethereumjs_util_1.Address(Buffer.from(addressString, 'hex'));\n if (getPrecompile(address, common)) {\n activePrecompiles.push(address);\n }\n }\n return activePrecompiles;\n}\nexports.getActivePrecompiles = getActivePrecompiles;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar legacyTransaction_1 = require(\"./legacyTransaction\");\nObject.defineProperty(exports, \"Transaction\", { enumerable: true, get: function () { return legacyTransaction_1.default; } });\nvar eip2930Transaction_1 = require(\"./eip2930Transaction\");\nObject.defineProperty(exports, \"AccessListEIP2930Transaction\", { enumerable: true, get: function () { return eip2930Transaction_1.default; } });\nvar transactionFactory_1 = require(\"./transactionFactory\");\nObject.defineProperty(exports, \"TransactionFactory\", { enumerable: true, get: function () { return transactionFactory_1.default; } });\n__exportStar(require(\"./types\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar types_1 = require(\"./types\");\nvar baseTransaction_1 = require(\"./baseTransaction\");\n/**\n * An Ethereum non-typed (legacy) transaction\n */\nvar Transaction = /** @class */ (function (_super) {\n __extends(Transaction, _super);\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n function Transaction(txData, opts) {\n if (opts === void 0) { opts = {}; }\n var _a;\n var _this = _super.call(this, txData, opts) || this;\n _this._validateCannotExceedMaxInteger({ r: _this.r, s: _this.s });\n _this._validateTxV(_this.v);\n var freeze = (_a = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _a !== void 0 ? _a : true;\n if (freeze) {\n Object.freeze(_this);\n }\n return _this;\n }\n Object.defineProperty(Transaction.prototype, \"transactionType\", {\n get: function () {\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Instantiate a transaction from a data dictionary\n */\n Transaction.fromTxData = function (txData, opts) {\n if (opts === void 0) { opts = {}; }\n return new Transaction(txData, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n */\n Transaction.fromSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n var values = ethereumjs_util_1.rlp.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input. Must be array');\n }\n return this.fromValuesArray(values, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of `fromSerializedTx()`)\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the `fromSerializedTx()` constructor\n */\n Transaction.fromRlpSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n return Transaction.fromSerializedTx(serialized, opts);\n };\n /**\n * Create a transaction from a values array.\n *\n * The format is:\n * nonce, gasPrice, gasLimit, to, value, data, v, r, s\n */\n Transaction.fromValuesArray = function (values, opts) {\n if (opts === void 0) { opts = {}; }\n // If length is not 6, it has length 9. If v/r/s are empty Buffers, it is still an unsigned transaction\n // This happens if you get the RLP data from `raw()`\n if (values.length !== 6 && values.length !== 9) {\n throw new Error('Invalid transaction. Only expecting 6 values (for unsigned tx) or 9 values (for signed tx).');\n }\n var _a = __read(values, 9), nonce = _a[0], gasPrice = _a[1], gasLimit = _a[2], to = _a[3], value = _a[4], data = _a[5], v = _a[6], r = _a[7], s = _a[8];\n var emptyBuffer = Buffer.from([]);\n return new Transaction({\n nonce: new ethereumjs_util_1.BN(nonce),\n gasPrice: new ethereumjs_util_1.BN(gasPrice),\n gasLimit: new ethereumjs_util_1.BN(gasLimit),\n to: to && to.length > 0 ? new ethereumjs_util_1.Address(to) : undefined,\n value: new ethereumjs_util_1.BN(value),\n data: data !== null && data !== void 0 ? data : emptyBuffer,\n v: v !== undefined && !v.equals(emptyBuffer) ? new ethereumjs_util_1.BN(v) : undefined,\n r: r !== undefined && !r.equals(emptyBuffer) ? new ethereumjs_util_1.BN(r) : undefined,\n s: s !== undefined && !s.equals(emptyBuffer) ? new ethereumjs_util_1.BN(s) : undefined,\n }, opts);\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n */\n Transaction.prototype.raw = function () {\n return [\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.gasPrice),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n this.v !== undefined ? ethereumjs_util_1.bnToRlp(this.v) : Buffer.from([]),\n this.r !== undefined ? ethereumjs_util_1.bnToRlp(this.r) : Buffer.from([]),\n this.s !== undefined ? ethereumjs_util_1.bnToRlp(this.s) : Buffer.from([]),\n ];\n };\n /**\n * Returns the rlp encoding of the transaction.\n */\n Transaction.prototype.serialize = function () {\n return ethereumjs_util_1.rlp.encode(this.raw());\n };\n Transaction.prototype._unsignedTxImplementsEIP155 = function () {\n return this.common.gteHardfork('spuriousDragon');\n };\n Transaction.prototype._getMessageToSign = function (withEIP155) {\n var values = [\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.gasPrice),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n ];\n if (withEIP155) {\n values.push(ethereumjs_util_1.toBuffer(this.common.chainIdBN()));\n values.push(ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(0)));\n values.push(ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(0)));\n }\n return ethereumjs_util_1.rlphash(values);\n };\n /**\n * Computes a sha3-256 hash of the serialized unsigned tx, which is used to sign the transaction.\n */\n Transaction.prototype.getMessageToSign = function () {\n return this._getMessageToSign(this._unsignedTxImplementsEIP155());\n };\n /**\n * Computes a sha3-256 hash of the serialized tx\n */\n Transaction.prototype.hash = function () {\n return ethereumjs_util_1.rlphash(this.raw());\n };\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n Transaction.prototype.getMessageToVerifySignature = function () {\n var withEIP155 = this._signedTxImplementsEIP155();\n return this._getMessageToSign(withEIP155);\n };\n /**\n * Returns the public key of the sender\n */\n Transaction.prototype.getSenderPublicKey = function () {\n var _a;\n var msgHash = this.getMessageToVerifySignature();\n // All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n if (this.common.gteHardfork('homestead') && ((_a = this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var _b = this, v = _b.v, r = _b.r, s = _b.s;\n if (!v || !r || !s) {\n throw new Error('Missing values to derive sender public key from signed tx');\n }\n try {\n return ethereumjs_util_1.ecrecover(msgHash, v, ethereumjs_util_1.bnToRlp(r), ethereumjs_util_1.bnToRlp(s), this._signedTxImplementsEIP155() ? this.common.chainIdBN() : undefined);\n }\n catch (e) {\n throw new Error('Invalid Signature');\n }\n };\n /**\n * Process the v, r, s values from the `sign` method of the base transaction.\n */\n Transaction.prototype._processSignature = function (v, r, s) {\n var vBN = new ethereumjs_util_1.BN(v);\n if (this._unsignedTxImplementsEIP155()) {\n vBN.iadd(this.common.chainIdBN().muln(2).addn(8));\n }\n var opts = {\n common: this.common,\n };\n return Transaction.fromTxData({\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n v: vBN,\n r: new ethereumjs_util_1.BN(r),\n s: new ethereumjs_util_1.BN(s),\n }, opts);\n };\n /**\n * Returns an object with the JSON representation of the transaction\n */\n Transaction.prototype.toJSON = function () {\n return {\n nonce: ethereumjs_util_1.bnToHex(this.nonce),\n gasPrice: ethereumjs_util_1.bnToHex(this.gasPrice),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: ethereumjs_util_1.bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n v: this.v !== undefined ? ethereumjs_util_1.bnToHex(this.v) : undefined,\n r: this.r !== undefined ? ethereumjs_util_1.bnToHex(this.r) : undefined,\n s: this.s !== undefined ? ethereumjs_util_1.bnToHex(this.s) : undefined,\n };\n };\n /**\n * Validates tx's `v` value\n */\n Transaction.prototype._validateTxV = function (v) {\n if (v === undefined || v.eqn(0)) {\n return;\n }\n if (!this.common.gteHardfork('spuriousDragon')) {\n return;\n }\n if (v.eqn(27) || v.eqn(28)) {\n return;\n }\n var chainIdDoubled = this.common.chainIdBN().muln(2);\n var isValidEIP155V = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36));\n if (!isValidEIP155V) {\n throw new Error(\"Incompatible EIP155-based V \" + v.toString() + \" and chain id \" + this.common\n .chainIdBN()\n .toString() + \". See the Common parameter of the Transaction constructor to set the chain id.\");\n }\n };\n Transaction.prototype._signedTxImplementsEIP155 = function () {\n if (!this.isSigned()) {\n throw Error('This transaction is not signed');\n }\n var onEIP155BlockOrLater = this.common.gteHardfork('spuriousDragon');\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36, then when computing the hash of a transaction for purposes of signing or recovering, instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data), hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n var v = this.v;\n var chainIdDoubled = this.common.chainIdBN().muln(2);\n var vAndChainIdMeetEIP155Conditions = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36));\n return vAndChainIdMeetEIP155Conditions && onEIP155BlockOrLater;\n };\n return Transaction;\n}(baseTransaction_1.BaseTransaction));\nexports.default = Transaction;\n//# sourceMappingURL=legacyTransaction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar baseTransaction_1 = require(\"./baseTransaction\");\nvar types_1 = require(\"./types\");\n/**\n * Typed transaction with optional access lists\n *\n * - TransactionType: 1\n * - EIP: [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)\n */\nvar AccessListEIP2930Transaction = /** @class */ (function (_super) {\n __extends(AccessListEIP2930Transaction, _super);\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n function AccessListEIP2930Transaction(txData, opts) {\n if (opts === void 0) { opts = {}; }\n var _a, _b;\n var _this = this;\n var chainId = txData.chainId, accessList = txData.accessList;\n _this = _super.call(this, txData, opts) || this;\n // EIP-2718 check is done in Common\n if (!_this.common.isActivatedEIP(2930)) {\n throw new Error('EIP-2930 not enabled on Common');\n }\n // check the type of AccessList. If it's a JSON-type, we have to convert it to a Buffer.\n var usedAccessList;\n if (accessList && types_1.isAccessList(accessList)) {\n _this.AccessListJSON = accessList;\n var newAccessList = [];\n for (var i = 0; i < accessList.length; i++) {\n var item = accessList[i];\n var addressBuffer = ethereumjs_util_1.toBuffer(item.address);\n var storageItems = [];\n for (var index = 0; index < item.storageKeys.length; index++) {\n storageItems.push(ethereumjs_util_1.toBuffer(item.storageKeys[index]));\n }\n newAccessList.push([addressBuffer, storageItems]);\n }\n usedAccessList = newAccessList;\n }\n else {\n usedAccessList = accessList !== null && accessList !== void 0 ? accessList : [];\n // build the JSON\n var json = [];\n for (var i = 0; i < usedAccessList.length; i++) {\n var data = usedAccessList[i];\n var address = ethereumjs_util_1.bufferToHex(data[0]);\n var storageKeys = [];\n for (var item = 0; item < data[1].length; item++) {\n storageKeys.push(ethereumjs_util_1.bufferToHex(data[1][item]));\n }\n var jsonItem = {\n address: address,\n storageKeys: storageKeys,\n };\n json.push(jsonItem);\n }\n _this.AccessListJSON = json;\n }\n _this.chainId = chainId ? new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(chainId)) : _this.common.chainIdBN();\n _this.accessList = usedAccessList;\n if (!_this.chainId.eq(_this.common.chainIdBN())) {\n throw new Error('The chain ID does not match the chain ID of Common');\n }\n if (_this.v && !_this.v.eqn(0) && !_this.v.eqn(1)) {\n throw new Error('The y-parity of the transaction should either be 0 or 1');\n }\n if (_this.common.gteHardfork('homestead') && ((_a = _this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n // Verify the access list format.\n for (var key = 0; key < _this.accessList.length; key++) {\n var accessListItem = _this.accessList[key];\n var address = accessListItem[0];\n var storageSlots = accessListItem[1];\n if (accessListItem[2] !== undefined) {\n throw new Error('Access list item cannot have 3 elements. It can only have an address, and an array of storage slots.');\n }\n if (address.length != 20) {\n throw new Error('Invalid EIP-2930 transaction: address length should be 20 bytes');\n }\n for (var storageSlot = 0; storageSlot < storageSlots.length; storageSlot++) {\n if (storageSlots[storageSlot].length != 32) {\n throw new Error('Invalid EIP-2930 transaction: storage slot length should be 32 bytes');\n }\n }\n }\n var freeze = (_b = opts === null || opts === void 0 ? void 0 : opts.freeze) !== null && _b !== void 0 ? _b : true;\n if (freeze) {\n Object.freeze(_this);\n }\n return _this;\n }\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"transactionType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"senderS\", {\n // EIP-2930 alias for `s`\n get: function () {\n return this.s;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"senderR\", {\n // EIP-2930 alias for `r`\n get: function () {\n return this.r;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AccessListEIP2930Transaction.prototype, \"yParity\", {\n // EIP-2930 alias for `v`\n get: function () {\n return this.v;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Instantiate a transaction from a data dictionary\n */\n AccessListEIP2930Transaction.fromTxData = function (txData, opts) {\n if (opts === void 0) { opts = {}; }\n return new AccessListEIP2930Transaction(txData, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Note: this means that the Buffer should start with 0x01.\n */\n AccessListEIP2930Transaction.fromSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n if (serialized[0] !== 1) {\n throw new Error(\"Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: 1, received: \" + serialized[0]);\n }\n var values = ethereumjs_util_1.rlp.decode(serialized.slice(1));\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array');\n }\n return AccessListEIP2930Transaction.fromValuesArray(values, opts);\n };\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of `fromSerializedTx()`)\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the `fromSerializedTx()` constructor\n */\n AccessListEIP2930Transaction.fromRlpSerializedTx = function (serialized, opts) {\n if (opts === void 0) { opts = {}; }\n return AccessListEIP2930Transaction.fromSerializedTx(serialized, opts);\n };\n /**\n * Create a transaction from a values array.\n *\n * The format is:\n * chainId, nonce, gasPrice, gasLimit, to, value, data, access_list, yParity (v), senderR (r), senderS (s)\n */\n AccessListEIP2930Transaction.fromValuesArray = function (values, opts) {\n if (opts === void 0) { opts = {}; }\n if (values.length !== 8 && values.length !== 11) {\n throw new Error('Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx).');\n }\n var _a = __read(values, 11), chainId = _a[0], nonce = _a[1], gasPrice = _a[2], gasLimit = _a[3], to = _a[4], value = _a[5], data = _a[6], accessList = _a[7], v = _a[8], r = _a[9], s = _a[10];\n var emptyBuffer = Buffer.from([]);\n return new AccessListEIP2930Transaction({\n chainId: new ethereumjs_util_1.BN(chainId),\n nonce: new ethereumjs_util_1.BN(nonce),\n gasPrice: new ethereumjs_util_1.BN(gasPrice),\n gasLimit: new ethereumjs_util_1.BN(gasLimit),\n to: to && to.length > 0 ? new ethereumjs_util_1.Address(to) : undefined,\n value: new ethereumjs_util_1.BN(value),\n data: data !== null && data !== void 0 ? data : emptyBuffer,\n accessList: accessList !== null && accessList !== void 0 ? accessList : emptyBuffer,\n v: v !== undefined ? new ethereumjs_util_1.BN(v) : undefined,\n r: r !== undefined && !r.equals(emptyBuffer) ? new ethereumjs_util_1.BN(r) : undefined,\n s: s !== undefined && !s.equals(emptyBuffer) ? new ethereumjs_util_1.BN(s) : undefined,\n }, opts);\n };\n /**\n * The amount of gas paid for the data in this tx\n */\n AccessListEIP2930Transaction.prototype.getDataFee = function () {\n var cost = _super.prototype.getDataFee.call(this);\n var accessListStorageKeyCost = this.common.param('gasPrices', 'accessListStorageKeyCost');\n var accessListAddressCost = this.common.param('gasPrices', 'accessListAddressCost');\n var slots = 0;\n for (var index = 0; index < this.accessList.length; index++) {\n var item = this.accessList[index];\n var storageSlots = item[1];\n slots += storageSlots.length;\n }\n var addresses = this.accessList.length;\n cost.iaddn(addresses * accessListAddressCost + slots * accessListStorageKeyCost);\n return cost;\n };\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n *\n * Use `serialize()` to add to block data for `Block.fromValuesArray()`.\n */\n AccessListEIP2930Transaction.prototype.raw = function () {\n return [\n ethereumjs_util_1.bnToRlp(this.chainId),\n ethereumjs_util_1.bnToRlp(this.nonce),\n ethereumjs_util_1.bnToRlp(this.gasPrice),\n ethereumjs_util_1.bnToRlp(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n ethereumjs_util_1.bnToRlp(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? ethereumjs_util_1.bnToRlp(this.v) : Buffer.from([]),\n this.r !== undefined ? ethereumjs_util_1.bnToRlp(this.r) : Buffer.from([]),\n this.s !== undefined ? ethereumjs_util_1.bnToRlp(this.s) : Buffer.from([]),\n ];\n };\n /**\n * Returns the serialized encoding of the transaction.\n */\n AccessListEIP2930Transaction.prototype.serialize = function () {\n var base = this.raw();\n return Buffer.concat([Buffer.from('01', 'hex'), ethereumjs_util_1.rlp.encode(base)]);\n };\n /**\n * Computes a sha3-256 hash of the serialized unsigned tx, which is used to sign the transaction.\n */\n AccessListEIP2930Transaction.prototype.getMessageToSign = function () {\n var base = this.raw().slice(0, 8);\n return ethereumjs_util_1.keccak256(Buffer.concat([Buffer.from('01', 'hex'), ethereumjs_util_1.rlp.encode(base)]));\n };\n /**\n * Computes a sha3-256 hash of the serialized tx\n */\n AccessListEIP2930Transaction.prototype.hash = function () {\n if (!this.isSigned()) {\n throw new Error('Cannot call hash method if transaction is not signed');\n }\n return ethereumjs_util_1.keccak256(this.serialize());\n };\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n AccessListEIP2930Transaction.prototype.getMessageToVerifySignature = function () {\n return this.getMessageToSign();\n };\n /**\n * Returns the public key of the sender\n */\n AccessListEIP2930Transaction.prototype.getSenderPublicKey = function () {\n var _a;\n if (!this.isSigned()) {\n throw new Error('Cannot call this method if transaction is not signed');\n }\n var msgHash = this.getMessageToVerifySignature();\n // All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // TODO: verify if this is the case for EIP-2930\n if (this.common.gteHardfork('homestead') && ((_a = this.s) === null || _a === void 0 ? void 0 : _a.gt(types_1.N_DIV_2))) {\n throw new Error('Invalid Signature: s-values greater than secp256k1n/2 are considered invalid');\n }\n var _b = this, yParity = _b.yParity, r = _b.r, s = _b.s;\n if (yParity === undefined || !r || !s) {\n throw new Error('Missing values to derive sender public key from signed tx');\n }\n try {\n return ethereumjs_util_1.ecrecover(msgHash, yParity.addn(27), // Recover the 27 which was stripped from ecsign\n ethereumjs_util_1.bnToRlp(r), ethereumjs_util_1.bnToRlp(s));\n }\n catch (e) {\n throw new Error('Invalid Signature');\n }\n };\n AccessListEIP2930Transaction.prototype._processSignature = function (v, r, s) {\n var opts = {\n common: this.common,\n };\n return AccessListEIP2930Transaction.fromTxData({\n chainId: this.chainId,\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new ethereumjs_util_1.BN(v - 27),\n r: new ethereumjs_util_1.BN(r),\n s: new ethereumjs_util_1.BN(s),\n }, opts);\n };\n /**\n * Returns an object with the JSON representation of the transaction\n */\n AccessListEIP2930Transaction.prototype.toJSON = function () {\n var accessListJSON = [];\n for (var index = 0; index < this.accessList.length; index++) {\n var item = this.accessList[index];\n var JSONItem = {\n address: '0x' + ethereumjs_util_1.setLengthLeft(item[0], 20).toString('hex'),\n storageKeys: [],\n };\n var storageSlots = item[1];\n for (var slot = 0; slot < storageSlots.length; slot++) {\n var storageSlot = storageSlots[slot];\n JSONItem.storageKeys.push('0x' + ethereumjs_util_1.setLengthLeft(storageSlot, 32).toString('hex'));\n }\n accessListJSON.push(JSONItem);\n }\n return {\n chainId: ethereumjs_util_1.bnToHex(this.chainId),\n nonce: ethereumjs_util_1.bnToHex(this.nonce),\n gasPrice: ethereumjs_util_1.bnToHex(this.gasPrice),\n gasLimit: ethereumjs_util_1.bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: ethereumjs_util_1.bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n };\n };\n return AccessListEIP2930Transaction;\n}(baseTransaction_1.BaseTransaction));\nexports.default = AccessListEIP2930Transaction;\n//# sourceMappingURL=eip2930Transaction.js.map","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar ES5Type = require('../5/Type');\n\n// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values\n\nmodule.exports = function Type(x) {\n\tif (typeof x === 'symbol') {\n\t\treturn 'Symbol';\n\t}\n\tif (typeof x === 'bigint') {\n\t\treturn 'BigInt';\n\t}\n\treturn ES5Type(x);\n};\n","\"use strict\";\n/*!\n * @ganache/colors\n *\n * @copyright Truffle Blockchain Group\n * @author David Murdoch\n * @license MIT\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/index\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _requestCoordinator;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Executor = void 0;\nconst has_own_1 = require(\"./has-own\");\nclass Executor {\n /**\n * The Executor handles execution of methods on the given API\n */\n constructor(requestCoordinator) {\n _requestCoordinator.set(this, void 0);\n __classPrivateFieldSet(this, _requestCoordinator, requestCoordinator);\n }\n /**\n * Executes the method with the given methodName on the API\n * @param methodName The name of the JSON-RPC method to execute.\n * @param params The params to pass to the JSON-RPC method.\n */\n execute(api, methodName, params) {\n // The methodName is user-entered data and can be all sorts of weird hackery\n // Make sure we only accept what we expect to avoid headache and heartache\n if (typeof methodName === \"string\") {\n // Only allow executing our *own* methods. We allow:\n // * functions added to the Instance by the class, e.g.,\n // class SomeClass {\n // method = () => {} // api.hasOwnProperty(\"method\") === true\n // }\n // * Or by the class' prototype:\n // class SomeClass {\n // method(){} // api.__proto__.hasOwnProperty(\"method\") === true\n // }\n if ((has_own_1.hasOwn(api.__proto__, methodName) && methodName !== \"constructor\") ||\n has_own_1.hasOwn(api, methodName)) {\n // cast methodName from `KnownKeys & string` back to KnownKeys so our return type isn't weird.\n const fn = api[methodName];\n // just double check, in case a API breaks the rules and adds non-fns\n // to their API interface.\n if (typeof fn === \"function\") {\n // queue up this method for actual execution:\n return __classPrivateFieldGet(this, _requestCoordinator).queue(fn, api, params);\n }\n }\n }\n throw new Error(`The method ${methodName} does not exist/is not available`);\n }\n}\nexports.Executor = Executor;\n_requestCoordinator = new WeakMap();\n//# sourceMappingURL=executor.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _paused, _process;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestCoordinator = void 0;\nconst noop = () => { };\n/**\n * Responsible for managing global concurrent requests.\n */\nclass RequestCoordinator {\n /**\n * Promise-based FIFO queue.\n * @param limit The number of requests that can be processed at a time.\n * Default value is is no limit (`0`).\n */\n constructor(limit) {\n /**\n * The pending requests. You can't do anything with this array.\n */\n this.pending = [];\n /**\n * The number of tasks currently being processed.\n */\n this.runningTasks = 0;\n _paused.set(this, true);\n /**\n * Pause processing. This will *not* cancel any promises that are currently\n * running.\n */\n this.pause = () => {\n __classPrivateFieldSet(this, _paused, true);\n };\n /**\n * Resume processing.\n */\n this.resume = () => {\n __classPrivateFieldSet(this, _paused, false);\n __classPrivateFieldGet(this, _process).call(this);\n };\n _process.set(this, () => {\n // if we aren't paused and the number of things we're processing is under\n // our limit and we have things to process: do it!\n while (!this.paused &&\n this.pending.length > 0 &&\n (!this.limit || this.runningTasks < this.limit)) {\n const current = this.pending.shift();\n this.runningTasks++;\n current()\n // By now, we've resolved the fn's `value` by sending it to the parent scope.\n // But over here, we're also waiting for this fn's _value_ to settle _itself_ (it might be a promise) before\n // continuing through the `pending` queue. Because we wait for it again here, it could potentially throw here,\n // in which case we just need to catch it and throw the result away. We could probably use\n // `Promise.allSettled([current()]).finally` to do this instead of the `current().catch(noop).finally`. /shrug\n .catch(noop)\n .finally(() => {\n this.runningTasks--;\n __classPrivateFieldGet(this, _process).call(this);\n });\n }\n });\n /**\n * Insert a new function into the queue.\n */\n this.queue = (fn, thisArgument, argumentsList) => {\n return new Promise((resolve, reject) => {\n // const executor is `async` to force the return value into a Promise.\n const executor = async () => {\n try {\n const value = Reflect.apply(fn, thisArgument, argumentsList || []);\n resolve({ value });\n return value;\n }\n catch (e) {\n reject(e);\n }\n };\n this.pending.push(executor);\n __classPrivateFieldGet(this, _process).call(this);\n });\n };\n this.limit = limit;\n }\n get paused() {\n return __classPrivateFieldGet(this, _paused);\n }\n}\nexports.RequestCoordinator = RequestCoordinator;\n_paused = new WeakMap(), _process = new WeakMap();\n//# sourceMappingURL=request-coordinator.js.map","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar PromiEvent_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst emittery_1 = __importDefault(require(\"emittery\"));\nconst emitteryMethods = [\n \"clearListeners\",\n \"once\",\n \"on\",\n \"emit\",\n \"onAny\"\n];\nlet PromiEvent = PromiEvent_1 = class PromiEvent extends Promise {\n constructor(executor) {\n super(executor);\n /**\n * Used to immediately clear all event listeners on the instance and prevent\n * any additional binding or emission from the Emitter.\n *\n * Once disposed no listeners can be bound to this emitter.\n *\n * Note: `dispose` is pre-bound to the `this`, making it possible to pass the\n * method around detached from it's context.\n */\n this.dispose = () => {\n if (!this.clearListeners)\n throw new Error(\"PromiEvent already disposed\");\n this.clearListeners();\n // Ensure that once disposed no listeners can be bound to this emitter.\n const fn = () => {\n throw new Error(\"PromiEvent bound after dispose\");\n };\n emitteryMethods\n .filter(m => m !== \"emit\")\n .forEach(methodName => {\n Object.defineProperty(this, methodName, {\n enumerable: false,\n value: fn\n });\n });\n };\n }\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A PromiEvent for the completion of the callback.\n */\n catch(onrejected) {\n const prom = new PromiEvent_1((resolve, reject) => {\n this.onAny((eventName, eventData) => {\n return prom.emit(eventName, eventData);\n });\n const p = super.catch(onrejected);\n p.then(resolve, reject);\n });\n return prom;\n }\n static resolve(value) {\n return new PromiEvent_1(resolve => {\n resolve(value);\n });\n }\n};\nPromiEvent = PromiEvent_1 = __decorate([\n emittery_1.default.mixin(Symbol.for(\"emittery\"), emitteryMethods)\n], PromiEvent);\nexports.default = PromiEvent;\n//# sourceMappingURL=promievent.js.map","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar 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 bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlphash = exports.ripemd160 = exports.sha256 = exports.keccak256 = exports.keccak = void 0;\nvar _a = require('ethereum-cryptography/keccak'), keccak224 = _a.keccak224, keccak384 = _a.keccak384, k256 = _a.keccak256, keccak512 = _a.keccak512;\nvar createHash = require('create-hash');\nvar ethjsUtil = require('ethjs-util');\nvar rlp = require(\"rlp\");\nvar bytes_1 = require(\"./bytes\");\n/**\n * Creates Keccak hash of the input\n * @param a The input data (Buffer|Array|String|Number) If the string is a 0x-prefixed hex value\n * it's interpreted as hexadecimal, otherwise as utf8.\n * @param bits The Keccak width\n */\nexports.keccak = function (a, bits) {\n if (bits === void 0) { bits = 256; }\n if (typeof a === 'string' && !ethjsUtil.isHexString(a)) {\n a = Buffer.from(a, 'utf8');\n }\n else {\n a = bytes_1.toBuffer(a);\n }\n if (!bits)\n bits = 256;\n switch (bits) {\n case 224: {\n return keccak224(a);\n }\n case 256: {\n return k256(a);\n }\n case 384: {\n return keccak384(a);\n }\n case 512: {\n return keccak512(a);\n }\n default: {\n throw new Error(\"Invald algorithm: keccak\" + bits);\n }\n }\n};\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer|Array|String|Number)\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n/**\n * Creates SHA256 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n */\nexports.sha256 = function (a) {\n a = bytes_1.toBuffer(a);\n return createHash('sha256')\n .update(a)\n .digest();\n};\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexports.ripemd160 = function (a, padded) {\n a = bytes_1.toBuffer(a);\n var hash = createHash('rmd160')\n .update(a)\n .digest();\n if (padded === true) {\n return bytes_1.setLength(hash, 32);\n }\n else {\n return hash;\n }\n};\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n//# sourceMappingURL=hash.js.map","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar 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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.computeIntrinsics = exports.computeHash = exports.computeFromAddress = exports.publicKeyConvert = exports.ecdaRecover = exports.isValidSigRecovery = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nlet secp256k1;\ntry {\n secp256k1 = require(\"node-gyp-build\")(__dirname);\n}\ncatch (err) {\n secp256k1 = require(\"secp256k1/lib/elliptic\");\n}\nconst intToBuffer = (value) => value === 0 ? utils_1.BUFFER_EMPTY : utils_1.uintToBuffer(value);\n/**\n * Copies `length` bytes from `source` to the `target`, filling remaining\n * bytes beyond `length - source.length` with `0`. Fills to the left.\n *\n * ```typescript\n * const source = Buffer.from([1, 2, 3]);\n * const target = Buffer.from([9, 9, 9, 9, 9, 9]);\n * copyOrFill(source, target, 1, 4);\n * // target.equals(Buffer.from([9, 0, 1, 2, 3, 9]));\n * // ^ ^ ^ ^\n * ```\n *\n * @param source A Buffer to copy from.\n * @param target A Buffer to copy into.\n * @param targetStart The offset within `target` at which to begin writing.\n * @param length The amount of bytes to copy or fill into the `target`.\n */\nfunction copyOrFill(source, target, targetStart, length) {\n if (source.byteLength > length)\n throw new Error(\"Invalid signature\");\n // first, copy zeroes\n const numZeroes = length - source.byteLength;\n const endZeroes = targetStart + numZeroes;\n let i = targetStart;\n for (; i < endZeroes; i++) {\n target[i] = 0;\n }\n // then copy the source into the target:\n let end = targetStart + length;\n const sourceOffset = targetStart + numZeroes;\n for (; i < end; i++) {\n target[i] = source[i - sourceOffset];\n }\n}\nconst isValidSigRecovery = (recovery) => {\n return recovery === 1 || recovery === 0;\n};\nexports.isValidSigRecovery = isValidSigRecovery;\n/**\n *\n * @param sharedBuffer A Buffer, where bytes 0 - 97 are to be used by this function\n * @param r\n * @param s\n * @param msgHash\n * @param recovery\n */\nconst ecdaRecover = (partialRlp, sharedBuffer, v, chainId, raw) => {\n let data;\n let recid;\n const eip155V = chainId * 2 + 35;\n const isEip155 = v === eip155V || v === eip155V + 1;\n if (isEip155) {\n const chainBuf = intToBuffer(chainId);\n const extras = [chainBuf, utils_1.BUFFER_EMPTY, utils_1.BUFFER_EMPTY];\n const epilogue = rlp_1.encodeRange(extras, 0, 3);\n data = rlp_1.digest([partialRlp.output, epilogue.output], partialRlp.length + epilogue.length);\n recid = v - eip155V;\n }\n else {\n data = rlp_1.digest([partialRlp.output], partialRlp.length);\n recid = v - 27;\n }\n if (!exports.isValidSigRecovery(recid)) {\n throw new Error(\"Invalid signature v value\");\n }\n const message = utils_1.keccak(data);\n const signature = sharedBuffer.slice(0, 64);\n copyOrFill(raw[7], signature, 0, 32);\n copyOrFill(raw[8], signature, 32, 32);\n const output = sharedBuffer.slice(0, 33);\n const success = secp256k1.ecdsaRecover(output, signature, recid, message);\n if (success !== 0) {\n throw new Error(\"Invalid Signature\");\n }\n return output;\n};\nexports.ecdaRecover = ecdaRecover;\n/**\n *\n * @param sharedBuffer A Buffer, bytes 0 - 65 will be overwritten\n * @param senderPubKey\n */\nconst publicKeyConvert = (sharedBuffer, senderPubKey) => {\n const publicKey = sharedBuffer.slice(0, 65);\n const result = secp256k1.publicKeyConvert(publicKey, senderPubKey);\n if (result !== 0) {\n throw new Error(\"Invalid Signature\");\n }\n return publicKey;\n};\nexports.publicKeyConvert = publicKeyConvert;\n/**\n * A Buffer that can be reused by `computeFromAddress`.\n */\nconst SHARED_BUFFER = Buffer.allocUnsafe(65);\nconst computeFromAddress = (partialRlp, v, raw, chainId) => {\n const senderPubKey = exports.ecdaRecover(partialRlp, SHARED_BUFFER, v, chainId, raw);\n const publicKey = exports.publicKeyConvert(SHARED_BUFFER, senderPubKey);\n return ethereum_address_1.Address.from(utils_1.keccak(publicKey.slice(1)).slice(-20));\n};\nexports.computeFromAddress = computeFromAddress;\nconst computeHash = (raw) => {\n return utils_1.Data.from(utils_1.keccak(rlp_1.encode(raw)), 32);\n};\nexports.computeHash = computeHash;\nconst computeIntrinsics = (v, raw, chainId) => {\n const encodedData = rlp_1.encodeRange(raw, 0, 6);\n const encodedSignature = rlp_1.encodeRange(raw, 6, 3);\n const serialized = rlp_1.digest([encodedData.output, encodedSignature.output], encodedData.length + encodedSignature.length);\n return {\n from: exports.computeFromAddress(encodedData, v.toNumber(), raw, chainId),\n hash: utils_1.Data.from(utils_1.keccak(serialized), 32),\n serialized,\n encodedData,\n encodedSignature\n };\n};\nexports.computeIntrinsics = computeIntrinsics;\n//# sourceMappingURL=signing.js.map","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar 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","module.exports = require('./lib')(require('./lib/elliptic'))\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar 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\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar 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","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _defaults, _namespaces;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OptionsConfig = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst checkForConflicts = (name, namespace, suppliedOptions, conflicts) => {\n if (!conflicts)\n return;\n for (const conflict of conflicts) {\n if (suppliedOptions.has(conflict)) {\n throw new Error(`Values for both \"${namespace}.${name}\" and ` +\n `\"${namespace}.${conflict}\" cannot ` +\n `be specified; they are mutually exclusive.`);\n }\n }\n};\nfunction fill(defaults, options, target, namespace) {\n const def = defaults[namespace];\n const config = (target[namespace] = target[namespace] || {});\n const flavor = options.flavor;\n const suppliedOptions = new Set();\n const keys = Object.keys(def);\n if (utils_1.hasOwn(options, namespace)) {\n const namespaceOptions = options[namespace];\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n const propDefinition = def[key];\n let value = namespaceOptions[key];\n if (value !== undefined) {\n checkForConflicts(key, namespace, suppliedOptions, propDefinition.conflicts);\n const normalized = propDefinition.normalize(namespaceOptions[key]);\n config[key] = normalized;\n suppliedOptions.add(key);\n }\n else {\n const legacyName = propDefinition.legacyName || key;\n value = options[legacyName];\n if (value !== undefined) {\n checkForConflicts(key, namespace, suppliedOptions, propDefinition.conflicts);\n const normalized = propDefinition.normalize(value);\n config[key] = normalized;\n suppliedOptions.add(key);\n }\n else if (utils_1.hasOwn(propDefinition, \"default\")) {\n config[key] = propDefinition.default(config, flavor);\n }\n }\n }\n }\n else {\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n const propDefinition = def[key];\n const legacyName = propDefinition.legacyName || key;\n const value = options[legacyName];\n if (value !== undefined) {\n checkForConflicts(key, namespace, suppliedOptions, propDefinition.conflicts);\n const normalized = propDefinition.normalize(value);\n config[key] = normalized;\n suppliedOptions.add(key);\n }\n else if (utils_1.hasOwn(propDefinition, \"default\")) {\n config[key] = propDefinition.default(config, flavor);\n }\n }\n }\n}\nclass OptionsConfig {\n constructor(defaults) {\n _defaults.set(this, void 0);\n _namespaces.set(this, void 0);\n __classPrivateFieldSet(this, _defaults, defaults);\n __classPrivateFieldSet(this, _namespaces, Object.keys(defaults));\n }\n normalize(options) {\n const defaults = __classPrivateFieldGet(this, _defaults);\n const out = {};\n __classPrivateFieldGet(this, _namespaces).forEach(namespace => {\n fill(defaults, options, out, namespace);\n });\n return out;\n }\n}\nexports.OptionsConfig = OptionsConfig;\n_defaults = new WeakMap(), _namespaces = new WeakMap();\n//# sourceMappingURL=create.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\nvar Semaphore_1 = require(\"./Semaphore\");\nexports[\"default\"] = Semaphore_1[\"default\"];\n__export(require(\"./Lock\"));\n","module.exports = require('level-packager')(require('memdown'))\n","'use strict'\n\n// For (old) browser support\nvar xtend = require('xtend')\nvar assign = require('xtend/mutable')\n\nmodule.exports = function supports () {\n var manifest = xtend.apply(null, arguments)\n\n return assign(manifest, {\n // Features of abstract-leveldown\n bufferKeys: manifest.bufferKeys || false,\n snapshots: manifest.snapshots || false,\n permanence: manifest.permanence || false,\n seek: manifest.seek || false,\n clear: manifest.clear || false,\n\n // Features of abstract-leveldown that levelup doesn't have\n status: manifest.status || false,\n\n // Features of disk-based implementations\n createIfMissing: manifest.createIfMissing || false,\n errorIfExists: manifest.errorIfExists || false,\n\n // Features of level(up) that abstract-leveldown doesn't have yet\n deferredOpen: manifest.deferredOpen || false,\n openCallback: manifest.openCallback || false,\n promises: manifest.promises || false,\n streams: manifest.streams || false,\n encodings: manifest.encodings || false,\n\n // Methods that are not part of abstract-leveldown or levelup\n additionalMethods: xtend(manifest.additionalMethods)\n })\n}\n","var all = module.exports.all = [\n {\n errno: -2,\n code: 'ENOENT',\n description: 'no such file or directory'\n },\n {\n errno: -1,\n code: 'UNKNOWN',\n description: 'unknown error'\n },\n {\n errno: 0,\n code: 'OK',\n description: 'success'\n },\n {\n errno: 1,\n code: 'EOF',\n description: 'end of file'\n },\n {\n errno: 2,\n code: 'EADDRINFO',\n description: 'getaddrinfo error'\n },\n {\n errno: 3,\n code: 'EACCES',\n description: 'permission denied'\n },\n {\n errno: 4,\n code: 'EAGAIN',\n description: 'resource temporarily unavailable'\n },\n {\n errno: 5,\n code: 'EADDRINUSE',\n description: 'address already in use'\n },\n {\n errno: 6,\n code: 'EADDRNOTAVAIL',\n description: 'address not available'\n },\n {\n errno: 7,\n code: 'EAFNOSUPPORT',\n description: 'address family not supported'\n },\n {\n errno: 8,\n code: 'EALREADY',\n description: 'connection already in progress'\n },\n {\n errno: 9,\n code: 'EBADF',\n description: 'bad file descriptor'\n },\n {\n errno: 10,\n code: 'EBUSY',\n description: 'resource busy or locked'\n },\n {\n errno: 11,\n code: 'ECONNABORTED',\n description: 'software caused connection abort'\n },\n {\n errno: 12,\n code: 'ECONNREFUSED',\n description: 'connection refused'\n },\n {\n errno: 13,\n code: 'ECONNRESET',\n description: 'connection reset by peer'\n },\n {\n errno: 14,\n code: 'EDESTADDRREQ',\n description: 'destination address required'\n },\n {\n errno: 15,\n code: 'EFAULT',\n description: 'bad address in system call argument'\n },\n {\n errno: 16,\n code: 'EHOSTUNREACH',\n description: 'host is unreachable'\n },\n {\n errno: 17,\n code: 'EINTR',\n description: 'interrupted system call'\n },\n {\n errno: 18,\n code: 'EINVAL',\n description: 'invalid argument'\n },\n {\n errno: 19,\n code: 'EISCONN',\n description: 'socket is already connected'\n },\n {\n errno: 20,\n code: 'EMFILE',\n description: 'too many open files'\n },\n {\n errno: 21,\n code: 'EMSGSIZE',\n description: 'message too long'\n },\n {\n errno: 22,\n code: 'ENETDOWN',\n description: 'network is down'\n },\n {\n errno: 23,\n code: 'ENETUNREACH',\n description: 'network is unreachable'\n },\n {\n errno: 24,\n code: 'ENFILE',\n description: 'file table overflow'\n },\n {\n errno: 25,\n code: 'ENOBUFS',\n description: 'no buffer space available'\n },\n {\n errno: 26,\n code: 'ENOMEM',\n description: 'not enough memory'\n },\n {\n errno: 27,\n code: 'ENOTDIR',\n description: 'not a directory'\n },\n {\n errno: 28,\n code: 'EISDIR',\n description: 'illegal operation on a directory'\n },\n {\n errno: 29,\n code: 'ENONET',\n description: 'machine is not on the network'\n },\n {\n errno: 31,\n code: 'ENOTCONN',\n description: 'socket is not connected'\n },\n {\n errno: 32,\n code: 'ENOTSOCK',\n description: 'socket operation on non-socket'\n },\n {\n errno: 33,\n code: 'ENOTSUP',\n description: 'operation not supported on socket'\n },\n {\n errno: 34,\n code: 'ENOENT',\n description: 'no such file or directory'\n },\n {\n errno: 35,\n code: 'ENOSYS',\n description: 'function not implemented'\n },\n {\n errno: 36,\n code: 'EPIPE',\n description: 'broken pipe'\n },\n {\n errno: 37,\n code: 'EPROTO',\n description: 'protocol error'\n },\n {\n errno: 38,\n code: 'EPROTONOSUPPORT',\n description: 'protocol not supported'\n },\n {\n errno: 39,\n code: 'EPROTOTYPE',\n description: 'protocol wrong type for socket'\n },\n {\n errno: 40,\n code: 'ETIMEDOUT',\n description: 'connection timed out'\n },\n {\n errno: 41,\n code: 'ECHARSET',\n description: 'invalid Unicode character'\n },\n {\n errno: 42,\n code: 'EAIFAMNOSUPPORT',\n description: 'address family for hostname not supported'\n },\n {\n errno: 44,\n code: 'EAISERVICE',\n description: 'servname not supported for ai_socktype'\n },\n {\n errno: 45,\n code: 'EAISOCKTYPE',\n description: 'ai_socktype not supported'\n },\n {\n errno: 46,\n code: 'ESHUTDOWN',\n description: 'cannot send after transport endpoint shutdown'\n },\n {\n errno: 47,\n code: 'EEXIST',\n description: 'file already exists'\n },\n {\n errno: 48,\n code: 'ESRCH',\n description: 'no such process'\n },\n {\n errno: 49,\n code: 'ENAMETOOLONG',\n description: 'name too long'\n },\n {\n errno: 50,\n code: 'EPERM',\n description: 'operation not permitted'\n },\n {\n errno: 51,\n code: 'ELOOP',\n description: 'too many symbolic links encountered'\n },\n {\n errno: 52,\n code: 'EXDEV',\n description: 'cross-device link not permitted'\n },\n {\n errno: 53,\n code: 'ENOTEMPTY',\n description: 'directory not empty'\n },\n {\n errno: 54,\n code: 'ENOSPC',\n description: 'no space left on device'\n },\n {\n errno: 55,\n code: 'EIO',\n description: 'i/o error'\n },\n {\n errno: 56,\n code: 'EROFS',\n description: 'read-only file system'\n },\n {\n errno: 57,\n code: 'ENODEV',\n description: 'no such device'\n },\n {\n errno: 58,\n code: 'ESPIPE',\n description: 'invalid seek'\n },\n {\n errno: 59,\n code: 'ECANCELED',\n description: 'operation canceled'\n }\n]\n\nmodule.exports.errno = {}\nmodule.exports.code = {}\n\nall.forEach(function (error) {\n module.exports.errno[error.errno] = error\n module.exports.code[error.code] = error\n})\n\nmodule.exports.custom = require('./custom')(module.exports)\nmodule.exports.create = module.exports.custom.createError\n","\nexports.compare = function (a, b) {\n\n if(Buffer.isBuffer(a)) {\n var l = Math.min(a.length, b.length)\n for(var i = 0; i < l; i++) {\n var cmp = a[i] - b[i]\n if(cmp) return cmp\n }\n return a.length - b.length\n }\n\n return a < b ? -1 : a > b ? 1 : 0\n}\n\n// to be compatible with the current abstract-leveldown tests\n// nullish or empty strings.\n// I could use !!val but I want to permit numbers and booleans,\n// if possible.\n\nfunction isDef (val) {\n return val !== undefined && val !== ''\n}\n\nfunction has (range, name) {\n return Object.hasOwnProperty.call(range, name)\n}\n\nfunction hasKey(range, name) {\n return Object.hasOwnProperty.call(range, name) && name\n}\n\nvar lowerBoundKey = exports.lowerBoundKey = function (range) {\n return (\n hasKey(range, 'gt')\n || hasKey(range, 'gte')\n || hasKey(range, 'min')\n || (range.reverse ? hasKey(range, 'end') : hasKey(range, 'start'))\n || undefined\n )\n}\n\nvar lowerBound = exports.lowerBound = function (range, def) {\n var k = lowerBoundKey(range)\n return k ? range[k] : def\n}\n\nvar lowerBoundInclusive = exports.lowerBoundInclusive = function (range) {\n return has(range, 'gt') ? false : true\n}\n\nvar upperBoundInclusive = exports.upperBoundInclusive =\n function (range) {\n return (has(range, 'lt') /*&& !range.maxEx*/) ? false : true\n }\n\nvar lowerBoundExclusive = exports.lowerBoundExclusive =\n function (range) {\n return !lowerBoundInclusive(range)\n }\n\nvar upperBoundExclusive = exports.upperBoundExclusive =\n function (range) {\n return !upperBoundInclusive(range)\n }\n\nvar upperBoundKey = exports.upperBoundKey = function (range) {\n return (\n hasKey(range, 'lt')\n || hasKey(range, 'lte')\n || hasKey(range, 'max')\n || (range.reverse ? hasKey(range, 'start') : hasKey(range, 'end'))\n || undefined\n )\n}\n\nvar upperBound = exports.upperBound = function (range, def) {\n var k = upperBoundKey(range)\n return k ? range[k] : def\n}\n\nexports.start = function (range, def) {\n return range.reverse ? upperBound(range, def) : lowerBound(range, def)\n}\nexports.end = function (range, def) {\n return range.reverse ? lowerBound(range, def) : upperBound(range, def)\n}\nexports.startInclusive = function (range) {\n return (\n range.reverse\n ? upperBoundInclusive(range)\n : lowerBoundInclusive(range)\n )\n}\nexports.endInclusive = function (range) {\n return (\n range.reverse\n ? lowerBoundInclusive(range)\n : upperBoundInclusive(range)\n )\n}\n\nfunction id (e) { return e }\n\nexports.toLtgt = function (range, _range, map, lower, upper) {\n _range = _range || {}\n map = map || id\n var defaults = arguments.length > 3\n var lb = exports.lowerBoundKey(range)\n var ub = exports.upperBoundKey(range)\n if(lb) {\n if(lb === 'gt') _range.gt = map(range.gt, false)\n else _range.gte = map(range[lb], false)\n }\n else if(defaults)\n _range.gte = map(lower, false)\n\n if(ub) {\n if(ub === 'lt') _range.lt = map(range.lt, true)\n else _range.lte = map(range[ub], true)\n }\n else if(defaults)\n _range.lte = map(upper, true)\n\n if(range.reverse != null)\n _range.reverse = !!range.reverse\n\n //if range was used mutably\n //(in level-sublevel it's part of an options object\n //that has more properties on it.)\n if(has(_range, 'max')) delete _range.max\n if(has(_range, 'min')) delete _range.min\n if(has(_range, 'start')) delete _range.start\n if(has(_range, 'end')) delete _range.end\n\n return _range\n}\n\nexports.contains = function (range, key, compare) {\n compare = compare || exports.compare\n\n var lb = lowerBound(range)\n if(isDef(lb)) {\n var cmp = compare(key, lb)\n if(cmp < 0 || (cmp === 0 && lowerBoundExclusive(range)))\n return false\n }\n\n var ub = upperBound(range)\n if(isDef(ub)) {\n var cmp = compare(key, ub)\n if(cmp > 0 || (cmp === 0) && upperBoundExclusive(range))\n return false\n }\n\n return true\n}\n\nexports.filter = function (range, compare) {\n return function (key) {\n return exports.contains(range, key, compare)\n }\n}\n\n\n","\nexports.compare = function (a, b) {\n\n if(Buffer.isBuffer(a)) {\n var l = Math.min(a.length, b.length)\n for(var i = 0; i < l; i++) {\n var cmp = a[i] - b[i]\n if(cmp) return cmp\n }\n return a.length - b.length\n }\n\n return a < b ? -1 : a > b ? 1 : 0\n}\n\n// to be compatible with the current abstract-leveldown tests\n// nullish or empty strings.\n// I could use !!val but I want to permit numbers and booleans,\n// if possible.\n\nfunction isDef (val) {\n return val !== undefined && val !== ''\n}\n\nfunction has (range, name) {\n return Object.hasOwnProperty.call(range, name)\n}\n\nfunction hasKey(range, name) {\n return Object.hasOwnProperty.call(range, name) && name\n}\n\nvar lowerBoundKey = exports.lowerBoundKey = function (range) {\n return (\n hasKey(range, 'gt')\n || hasKey(range, 'gte')\n || hasKey(range, 'min')\n || (range.reverse ? hasKey(range, 'end') : hasKey(range, 'start'))\n || undefined\n )\n}\n\nvar lowerBound = exports.lowerBound = function (range, def) {\n var k = lowerBoundKey(range)\n return k ? range[k] : def\n}\n\nvar lowerBoundInclusive = exports.lowerBoundInclusive = function (range) {\n return has(range, 'gt') ? false : true\n}\n\nvar upperBoundInclusive = exports.upperBoundInclusive =\n function (range) {\n return (has(range, 'lt') /*&& !range.maxEx*/) ? false : true\n }\n\nvar lowerBoundExclusive = exports.lowerBoundExclusive =\n function (range) {\n return !lowerBoundInclusive(range)\n }\n\nvar upperBoundExclusive = exports.upperBoundExclusive =\n function (range) {\n return !upperBoundInclusive(range)\n }\n\nvar upperBoundKey = exports.upperBoundKey = function (range) {\n return (\n hasKey(range, 'lt')\n || hasKey(range, 'lte')\n || hasKey(range, 'max')\n || (range.reverse ? hasKey(range, 'start') : hasKey(range, 'end'))\n || undefined\n )\n}\n\nvar upperBound = exports.upperBound = function (range, def) {\n var k = upperBoundKey(range)\n return k ? range[k] : def\n}\n\nexports.start = function (range, def) {\n return range.reverse ? upperBound(range, def) : lowerBound(range, def)\n}\nexports.end = function (range, def) {\n return range.reverse ? lowerBound(range, def) : upperBound(range, def)\n}\nexports.startInclusive = function (range) {\n return (\n range.reverse\n ? upperBoundInclusive(range)\n : lowerBoundInclusive(range)\n )\n}\nexports.endInclusive = function (range) {\n return (\n range.reverse\n ? lowerBoundInclusive(range)\n : upperBoundInclusive(range)\n )\n}\n\nfunction id (e) { return e }\n\nexports.toLtgt = function (range, _range, map, lower, upper) {\n _range = _range || {}\n map = map || id\n var defaults = arguments.length > 3\n var lb = exports.lowerBoundKey(range)\n var ub = exports.upperBoundKey(range)\n if(lb) {\n if(lb === 'gt') _range.gt = map(range.gt, false)\n else _range.gte = map(range[lb], false)\n }\n else if(defaults)\n _range.gte = map(lower, false)\n\n if(ub) {\n if(ub === 'lt') _range.lt = map(range.lt, true)\n else _range.lte = map(range[ub], true)\n }\n else if(defaults)\n _range.lte = map(upper, true)\n\n if(range.reverse != null)\n _range.reverse = !!range.reverse\n\n //if range was used mutably\n //(in level-sublevel it's part of an options object\n //that has more properties on it.)\n if(has(_range, 'max')) delete _range.max\n if(has(_range, 'min')) delete _range.min\n if(has(_range, 'start')) delete _range.start\n if(has(_range, 'end')) delete _range.end\n\n return _range\n}\n\nexports.contains = function (range, key, compare) {\n compare = compare || exports.compare\n\n var lb = lowerBound(range)\n if(isDef(lb)) {\n var cmp = compare(key, lb)\n if(cmp < 0 || (cmp === 0 && lowerBoundExclusive(range)))\n return false\n }\n\n var ub = upperBound(range)\n if(isDef(ub)) {\n var cmp = compare(key, ub)\n if(cmp > 0 || (cmp === 0) && upperBoundExclusive(range))\n return false\n }\n\n return true\n}\n\nexports.filter = function (range, compare) {\n return function (key) {\n return exports.contains(range, key, compare)\n }\n}\n\n\n","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chains = exports._getInitializedChains = void 0;\nvar mainnet_json_1 = __importDefault(require(\"./mainnet.json\"));\nvar ropsten_json_1 = __importDefault(require(\"./ropsten.json\"));\nvar rinkeby_json_1 = __importDefault(require(\"./rinkeby.json\"));\nvar kovan_json_1 = __importDefault(require(\"./kovan.json\"));\nvar goerli_json_1 = __importDefault(require(\"./goerli.json\"));\nvar yolov3_json_1 = __importDefault(require(\"./yolov3.json\"));\nvar aleut_json_1 = __importDefault(require(\"./aleut.json\"));\nvar baikal_json_1 = __importDefault(require(\"./baikal.json\"));\n/**\n * @hidden\n */\nfunction _getInitializedChains(customChains) {\n var e_1, _a;\n var names = {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '5': 'goerli',\n '34180983699157880': 'yolov3',\n '7822': 'aleut',\n '1642': 'baikal',\n };\n var chains = {\n mainnet: mainnet_json_1.default,\n ropsten: ropsten_json_1.default,\n rinkeby: rinkeby_json_1.default,\n kovan: kovan_json_1.default,\n goerli: goerli_json_1.default,\n yolov3: yolov3_json_1.default,\n aleut: aleut_json_1.default,\n baikal: baikal_json_1.default,\n };\n if (customChains) {\n try {\n for (var customChains_1 = __values(customChains), customChains_1_1 = customChains_1.next(); !customChains_1_1.done; customChains_1_1 = customChains_1.next()) {\n var chain = customChains_1_1.value;\n var name_1 = chain.name;\n names[chain.chainId.toString()] = name_1;\n chains[name_1] = chain;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (customChains_1_1 && !customChains_1_1.done && (_a = customChains_1.return)) _a.call(customChains_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n chains['names'] = names;\n return chains;\n}\nexports._getInitializedChains = _getInitializedChains;\n/**\n * @deprecated this constant will be internalized (removed)\n * on next major version update\n */\nexports.chains = _getInitializedChains();\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.N_DIV_2 = exports.isAccessList = exports.isAccessListBuffer = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nfunction isAccessListBuffer(input) {\n if (input.length === 0) {\n return true;\n }\n var firstItem = input[0];\n if (Array.isArray(firstItem)) {\n return true;\n }\n return false;\n}\nexports.isAccessListBuffer = isAccessListBuffer;\nfunction isAccessList(input) {\n return !isAccessListBuffer(input); // This is exactly the same method, except the output is negated.\n}\nexports.isAccessList = isAccessList;\n/**\n * A const defining secp256k1n/2\n */\nexports.N_DIV_2 = new ethereumjs_util_1.BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chains = exports._getInitializedChains = void 0;\nvar mainnet_json_1 = __importDefault(require(\"./mainnet.json\"));\nvar ropsten_json_1 = __importDefault(require(\"./ropsten.json\"));\nvar rinkeby_json_1 = __importDefault(require(\"./rinkeby.json\"));\nvar kovan_json_1 = __importDefault(require(\"./kovan.json\"));\nvar goerli_json_1 = __importDefault(require(\"./goerli.json\"));\nvar yolov3_json_1 = __importDefault(require(\"./yolov3.json\"));\nvar aleut_json_1 = __importDefault(require(\"./aleut.json\"));\nvar baikal_json_1 = __importDefault(require(\"./baikal.json\"));\n/**\n * @hidden\n */\nfunction _getInitializedChains(customChains) {\n var e_1, _a;\n var names = {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '5': 'goerli',\n '34180983699157880': 'yolov3',\n '7822': 'aleut',\n '1642': 'baikal',\n };\n var chains = {\n mainnet: mainnet_json_1.default,\n ropsten: ropsten_json_1.default,\n rinkeby: rinkeby_json_1.default,\n kovan: kovan_json_1.default,\n goerli: goerli_json_1.default,\n yolov3: yolov3_json_1.default,\n aleut: aleut_json_1.default,\n baikal: baikal_json_1.default,\n };\n if (customChains) {\n try {\n for (var customChains_1 = __values(customChains), customChains_1_1 = customChains_1.next(); !customChains_1_1.done; customChains_1_1 = customChains_1.next()) {\n var chain = customChains_1_1.value;\n var name_1 = chain.name;\n names[chain.chainId.toString()] = name_1;\n chains[name_1] = chain;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (customChains_1_1 && !customChains_1_1.done && (_a = customChains_1.return)) _a.call(customChains_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n chains['names'] = names;\n return chains;\n}\nexports._getInitializedChains = _getInitializedChains;\n/**\n * @deprecated this constant will be internalized (removed)\n * on next major version update\n */\nexports.chains = _getInitializedChains();\n//# sourceMappingURL=index.js.map","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG1Point = _a.BLS12_381_ToG1Point, BLS12_381_FromG1Point = _a.BLS12_381_FromG1Point;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, gasUsed, zeroBytes16, zeroByteCheck, index, slicedBuffer, mclPoint1, mclPoint2, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n gasUsed = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381G1AddGas', 2537));\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length != 256) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n [128, 144],\n [192, 208],\n ];\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0], zeroByteCheck[index][1]);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n try {\n mclPoint1 = BLS12_381_ToG1Point(opts.data.slice(0, 128), mcl);\n mclPoint2 = BLS12_381_ToG1Point(opts.data.slice(128, 256), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n result = mcl.add(mclPoint1, mclPoint2);\n returnValue = BLS12_381_FromG1Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=0a-bls12-g1add.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG1Point = _a.BLS12_381_ToG1Point, BLS12_381_FromG1Point = _a.BLS12_381_FromG1Point, BLS12_381_ToFrPoint = _a.BLS12_381_ToFrPoint;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, gasUsed, zeroBytes16, zeroByteCheck, index, slicedBuffer, mclPoint, frPoint, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n gasUsed = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381G1MulGas', 2537));\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length != 160) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n ];\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0], zeroByteCheck[index][1]);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n try {\n mclPoint = BLS12_381_ToG1Point(opts.data.slice(0, 128), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n frPoint = BLS12_381_ToFrPoint(opts.data.slice(128, 160), mcl);\n result = mcl.mul(mclPoint, frPoint);\n returnValue = BLS12_381_FromG1Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=0b-bls12-g1mul.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG1Point = _a.BLS12_381_ToG1Point, BLS12_381_ToFrPoint = _a.BLS12_381_ToFrPoint, BLS12_381_FromG1Point = _a.BLS12_381_FromG1Point;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, numPairs, gasUsedPerPair, gasDiscountArray, gasDiscountMax, gasDiscountMultiplier, gasUsed, zeroBytes16, zeroByteCheck, G1Array, FrArray, k, pairStart, index, slicedBuffer, G1, Fr, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n if (inputData.length == 0) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INPUT_EMPTY), opts.gasLimit)]; // follow Geths implementation\n }\n numPairs = Math.floor(inputData.length / 160);\n gasUsedPerPair = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381G1MulGas', 2537));\n gasDiscountArray = opts._common.paramByEIP('gasPrices', 'Bls12381MultiExpGasDiscount', 2537);\n gasDiscountMax = gasDiscountArray[gasDiscountArray.length - 1][1];\n if (numPairs <= gasDiscountArray.length) {\n if (numPairs == 0) {\n gasDiscountMultiplier = 0; // this implicitly sets gasUsed to 0 as per the EIP.\n }\n else {\n gasDiscountMultiplier = gasDiscountArray[numPairs - 1][1];\n }\n }\n else {\n gasDiscountMultiplier = gasDiscountMax;\n }\n gasUsed = gasUsedPerPair.imuln(numPairs).imuln(gasDiscountMultiplier).idivn(1000);\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length % 160 != 0) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n ];\n G1Array = [];\n FrArray = [];\n for (k = 0; k < inputData.length / 160; k++) {\n pairStart = 160 * k;\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0] + pairStart, zeroByteCheck[index][1] + pairStart);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n G1 = void 0;\n try {\n G1 = BLS12_381_ToG1Point(opts.data.slice(pairStart, pairStart + 128), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n Fr = BLS12_381_ToFrPoint(opts.data.slice(pairStart + 128, pairStart + 160), mcl);\n G1Array.push(G1);\n FrArray.push(Fr);\n }\n result = mcl.mulVec(G1Array, FrArray);\n returnValue = BLS12_381_FromG1Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=0c-bls12-g1multiexp.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG2Point = _a.BLS12_381_ToG2Point, BLS12_381_FromG2Point = _a.BLS12_381_FromG2Point;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, gasUsed, zeroBytes16, zeroByteCheck, index, slicedBuffer, mclPoint1, mclPoint2, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n gasUsed = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381G2AddGas', 2537));\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length != 512) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n [128, 144],\n [192, 208],\n [256, 272],\n [320, 336],\n [384, 400],\n [448, 464],\n ];\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0], zeroByteCheck[index][1]);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n try {\n mclPoint1 = BLS12_381_ToG2Point(opts.data.slice(0, 256), mcl);\n mclPoint2 = BLS12_381_ToG2Point(opts.data.slice(256, 512), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n result = mcl.add(mclPoint1, mclPoint2);\n returnValue = BLS12_381_FromG2Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=0d-bls12-g2add.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG2Point = _a.BLS12_381_ToG2Point, BLS12_381_FromG2Point = _a.BLS12_381_FromG2Point, BLS12_381_ToFrPoint = _a.BLS12_381_ToFrPoint;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, gasUsed, zeroBytes16, zeroByteCheck, index, slicedBuffer, mclPoint, frPoint, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n gasUsed = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381G2MulGas', 2537));\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length != 288) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n [128, 144],\n [192, 208],\n ];\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0], zeroByteCheck[index][1]);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n try {\n mclPoint = BLS12_381_ToG2Point(opts.data.slice(0, 256), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n frPoint = BLS12_381_ToFrPoint(opts.data.slice(256, 288), mcl);\n result = mcl.mul(mclPoint, frPoint);\n returnValue = BLS12_381_FromG2Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=0e-bls12-g2mul.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG2Point = _a.BLS12_381_ToG2Point, BLS12_381_ToFrPoint = _a.BLS12_381_ToFrPoint, BLS12_381_FromG2Point = _a.BLS12_381_FromG2Point;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, numPairs, gasUsedPerPair, gasDiscountArray, gasDiscountMax, gasDiscountMultiplier, gasUsed, zeroBytes16, zeroByteCheck, G2Array, FrArray, k, pairStart, index, slicedBuffer, G2, Fr, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n if (inputData.length == 0) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INPUT_EMPTY), opts.gasLimit)]; // follow Geths implementation\n }\n numPairs = Math.floor(inputData.length / 288);\n gasUsedPerPair = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381G2MulGas', 2537));\n gasDiscountArray = opts._common.paramByEIP('gasPrices', 'Bls12381MultiExpGasDiscount', 2537);\n gasDiscountMax = gasDiscountArray[gasDiscountArray.length - 1][1];\n if (numPairs <= gasDiscountArray.length) {\n if (numPairs == 0) {\n gasDiscountMultiplier = 0; // this implicitly sets gasUsed to 0 as per the EIP.\n }\n else {\n gasDiscountMultiplier = gasDiscountArray[numPairs - 1][1];\n }\n }\n else {\n gasDiscountMultiplier = gasDiscountMax;\n }\n gasUsed = gasUsedPerPair.imuln(numPairs).imuln(gasDiscountMultiplier).idivn(1000);\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length % 288 != 0) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n [128, 144],\n [192, 208],\n ];\n G2Array = [];\n FrArray = [];\n for (k = 0; k < inputData.length / 288; k++) {\n pairStart = 288 * k;\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0] + pairStart, zeroByteCheck[index][1] + pairStart);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n G2 = void 0;\n try {\n G2 = BLS12_381_ToG2Point(opts.data.slice(pairStart, pairStart + 256), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n Fr = BLS12_381_ToFrPoint(opts.data.slice(pairStart + 256, pairStart + 288), mcl);\n G2Array.push(G2);\n FrArray.push(Fr);\n }\n result = mcl.mulVec(G2Array, FrArray);\n returnValue = BLS12_381_FromG2Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=0f-bls12-g2multiexp.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToG1Point = _a.BLS12_381_ToG1Point, BLS12_381_ToG2Point = _a.BLS12_381_ToG2Point;\nvar zeroBuffer = Buffer.alloc(32, 0);\nvar oneBuffer = Buffer.concat([Buffer.alloc(31, 0), Buffer.from('01', 'hex')]);\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, baseGas, gasUsedPerPair, gasUsed, pairs, zeroBytes16, zeroByteCheck, k, pairStart, index, slicedBuffer, G1, g2start, G2, GT, index, pair, G1, G2, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n baseGas = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381PairingBaseGas', 2537));\n if (inputData.length == 0) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INPUT_EMPTY), opts.gasLimit)];\n }\n gasUsedPerPair = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381PairingPerPairGas', 2537));\n gasUsed = baseGas.iadd(gasUsedPerPair.imul(new ethereumjs_util_1.BN(Math.floor(inputData.length / 384))));\n if (inputData.length % 384 != 0) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n pairs = [];\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n [128, 144],\n [192, 208],\n [256, 272],\n [320, 336],\n ];\n for (k = 0; k < inputData.length / 384; k++) {\n pairStart = 384 * k;\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0] + pairStart, zeroByteCheck[index][1] + pairStart);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n G1 = void 0;\n try {\n G1 = BLS12_381_ToG1Point(opts.data.slice(pairStart, pairStart + 128), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n g2start = pairStart + 128;\n G2 = void 0;\n try {\n G2 = BLS12_381_ToG2Point(opts.data.slice(g2start, g2start + 256), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n pairs.push([G1, G2]);\n }\n for (index = 0; index < pairs.length; index++) {\n pair = pairs[index];\n G1 = pair[0];\n G2 = pair[1];\n if (index == 0) {\n GT = mcl.millerLoop(G1, G2);\n }\n else {\n GT = mcl.mul(GT, mcl.millerLoop(G1, G2));\n }\n }\n GT = mcl.finalExp(GT);\n if (GT.isOne()) {\n returnValue = oneBuffer;\n }\n else {\n returnValue = zeroBuffer;\n }\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=10-bls12-pairing.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToFpPoint = _a.BLS12_381_ToFpPoint, BLS12_381_FromG1Point = _a.BLS12_381_FromG1Point;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, gasUsed, zeroBytes16, Fp1Point, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n gasUsed = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381MapG1Gas', 2537));\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length != 64) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n if (!opts.data.slice(0, 16).equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n try {\n Fp1Point = BLS12_381_ToFpPoint(opts.data.slice(0, 64), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n result = Fp1Point.mapToG1();\n returnValue = BLS12_381_FromG1Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=11-bls12-map-fp-to-g1.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar evm_1 = require(\"../evm\");\nvar exceptions_1 = require(\"../../exceptions\");\nvar assert = require('assert');\nvar _a = require('./util/bls12_381'), BLS12_381_ToFp2Point = _a.BLS12_381_ToFp2Point, BLS12_381_FromG2Point = _a.BLS12_381_FromG2Point;\nfunction default_1(opts) {\n return __awaiter(this, void 0, void 0, function () {\n var mcl, inputData, gasUsed, zeroBytes16, zeroByteCheck, index, slicedBuffer, Fp2Point, result, returnValue;\n return __generator(this, function (_a) {\n assert(opts.data);\n mcl = opts._VM._mcl;\n inputData = opts.data;\n gasUsed = new ethereumjs_util_1.BN(opts._common.paramByEIP('gasPrices', 'Bls12381MapG2Gas', 2537));\n if (opts.gasLimit.lt(gasUsed)) {\n return [2 /*return*/, evm_1.OOGResult(opts.gasLimit)];\n }\n if (inputData.length != 128) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_INVALID_INPUT_LENGTH), opts.gasLimit)];\n }\n zeroBytes16 = Buffer.alloc(16, 0);\n zeroByteCheck = [\n [0, 16],\n [64, 80],\n ];\n for (index in zeroByteCheck) {\n slicedBuffer = opts.data.slice(zeroByteCheck[index][0], zeroByteCheck[index][1]);\n if (!slicedBuffer.equals(zeroBytes16)) {\n return [2 /*return*/, evm_1.VmErrorResult(new exceptions_1.VmError(exceptions_1.ERROR.BLS_12_381_POINT_NOT_ON_CURVE), opts.gasLimit)];\n }\n }\n try {\n Fp2Point = BLS12_381_ToFp2Point(opts.data.slice(0, 64), opts.data.slice(64, 128), mcl);\n }\n catch (e) {\n return [2 /*return*/, evm_1.VmErrorResult(e, opts.gasLimit)];\n }\n result = Fp2Point.mapToG2();\n returnValue = BLS12_381_FromG2Point(result);\n return [2 /*return*/, {\n gasUsed: gasUsed,\n returnValue: returnValue,\n }];\n });\n });\n}\nexports.default = default_1;\n//# sourceMappingURL=12-bls12-map-fp2-to-g2.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @ignore\n */\nfunction runBlockchain(blockchain, maxBlocks) {\n return __awaiter(this, void 0, void 0, function () {\n var headBlock, parentState;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n blockchain = blockchain || this.blockchain;\n return [4 /*yield*/, blockchain.iterator('vm', function (block, reorg) { return __awaiter(_this, void 0, void 0, function () {\n var parentBlock, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!headBlock || reorg)) return [3 /*break*/, 4];\n return [4 /*yield*/, blockchain.getBlock(block.header.parentHash)];\n case 1:\n parentBlock = _a.sent();\n parentState = parentBlock.header.stateRoot;\n if (!!headBlock) return [3 /*break*/, 3];\n return [4 /*yield*/, this.stateManager.generateCanonicalGenesis()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n parentState = headBlock.header.stateRoot;\n _a.label = 4;\n case 4:\n _a.trys.push([4, 6, , 8]);\n return [4 /*yield*/, this.runBlock({ block: block, root: parentState })\n // set as new head block\n ];\n case 5:\n _a.sent();\n // set as new head block\n headBlock = block;\n return [3 /*break*/, 8];\n case 6:\n error_1 = _a.sent();\n // remove invalid block\n return [4 /*yield*/, blockchain.delBlock(block.header.hash())];\n case 7:\n // remove invalid block\n _a.sent();\n throw error_1;\n case 8: return [2 /*return*/];\n }\n });\n }); }, maxBlocks)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n}\nexports.default = runBlockchain;\n//# sourceMappingURL=runBlockchain.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _blockchain;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nclass AccountManager {\n constructor(blockchain) {\n _blockchain.set(this, void 0);\n __classPrivateFieldSet(this, _blockchain, blockchain);\n }\n async get(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const raw = await this.getRaw(address, blockNumber);\n if (raw == null)\n return null;\n return ethereum_utils_1.Account.fromBuffer(raw);\n }\n async getRaw(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const { trie, blocks } = __classPrivateFieldGet(this, _blockchain);\n // get the block, its state root, and the trie at that state root\n const { stateRoot, number } = (await blocks.get(blockNumber)).header;\n const trieCopy = trie.copy(false);\n trieCopy.setContext(stateRoot.toBuffer(), null, number);\n // get the account from the trie\n return await trieCopy.get(address.toBuffer());\n }\n async getStorageAt(address, key, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const { trie, blocks } = __classPrivateFieldGet(this, _blockchain);\n // get the block, its state root, and the trie at that state root\n const { stateRoot, number } = (await blocks.get(blockNumber)).header;\n const trieCopy = trie.copy(false);\n trieCopy.setContext(stateRoot.toBuffer(), address.toBuffer(), number);\n // get the account from the trie\n return await trieCopy.get(key);\n }\n async getNonce(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const data = await this.getRaw(address, blockNumber);\n if (data == null)\n return utils_1.RPCQUANTITY_ZERO;\n const [nonce] = rlp_1.decode(data);\n return nonce.length === 0 ? utils_1.RPCQUANTITY_ZERO : utils_1.Quantity.from(nonce);\n }\n async getBalance(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const data = await this.getRaw(address, blockNumber);\n if (data == null)\n return utils_1.RPCQUANTITY_ZERO;\n const [, balance] = rlp_1.decode(data);\n return balance.length === 0 ? utils_1.RPCQUANTITY_ZERO : utils_1.Quantity.from(balance);\n }\n async getCode(address, blockNumber = ethereum_utils_1.Tag.LATEST) {\n const data = await this.getRaw(address, blockNumber);\n if (data == null)\n return utils_1.Data.from(utils_1.BUFFER_EMPTY);\n const [, , , codeHash] = rlp_1.decode(data);\n if (codeHash.equals(ethereumjs_util_1.KECCAK256_NULL))\n return utils_1.Data.from(utils_1.BUFFER_EMPTY);\n else\n return __classPrivateFieldGet(this, _blockchain).trie.db.get(codeHash).then(utils_1.Data.from);\n }\n}\nexports.default = AccountManager;\n_blockchain = new WeakMap();\n//# sourceMappingURL=account-manager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateSstoreGas = exports.writeCallOutput = exports.subMemUsage = exports.maxCallGas = exports.jumpSubIsValid = exports.jumpIsValid = exports.getFullname = exports.getDataSlice = exports.getContractStorage = exports.short = exports.divCeil = exports.describeLocation = exports.addressToBuffer = exports.trap = exports.setLengthLeftStorage = void 0;\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst exceptions_1 = require(\"./../../exceptions\");\nconst EIP2929_1 = require(\"./EIP2929\");\nconst MASK_160 = new ethereumjs_util_1.BN(1).shln(160).subn(1);\n/**\n * Proxy function for ethereumjs-util's setLengthLeft, except it returns a zero\n *\n * length buffer in case the buffer is full of zeros.\n * @param {Buffer} value Buffer which we want to pad\n */\nfunction setLengthLeftStorage(value) {\n if (value.equals(Buffer.alloc(value.length, 0))) {\n // return the empty buffer (the value is zero)\n return Buffer.alloc(0);\n }\n else {\n return ethereumjs_util_1.setLengthLeft(value, 32);\n }\n}\nexports.setLengthLeftStorage = setLengthLeftStorage;\n/**\n * Wraps error message as VMError\n *\n * @param {string} err\n */\nfunction trap(err) {\n // TODO: facilitate extra data along with errors\n throw new exceptions_1.VmError(err);\n}\nexports.trap = trap;\n/**\n * Converts BN address (they're stored like this on the stack) to buffer address\n *\n * @param {BN} address\n * @return {Buffer}\n */\nfunction addressToBuffer(address) {\n if (Buffer.isBuffer(address))\n return address;\n return address.and(MASK_160).toArrayLike(Buffer, 'be', 20);\n}\nexports.addressToBuffer = addressToBuffer;\n/**\n * Error message helper - generates location string\n *\n * @param {RunState} runState\n * @return {string}\n */\nfunction describeLocation(runState) {\n const hash = ethereumjs_util_1.keccak256(runState.eei.getCode()).toString('hex');\n const address = runState.eei.getAddress().buf.toString('hex');\n const pc = runState.programCounter - 1;\n return `${hash}/${address}:${pc}`;\n}\nexports.describeLocation = describeLocation;\n/**\n * Find Ceil(a / b)\n *\n * @param {BN} a\n * @param {BN} b\n * @return {BN}\n */\nfunction divCeil(a, b) {\n const div = a.div(b);\n const mod = a.mod(b);\n // Fast case - exact division\n if (mod.isZero())\n return div;\n // Round up\n return div.isNeg() ? div.isubn(1) : div.iaddn(1);\n}\nexports.divCeil = divCeil;\nfunction short(buffer) {\n const MAX_LENGTH = 50;\n const bufferStr = buffer.toString('hex');\n if (bufferStr.length <= MAX_LENGTH) {\n return bufferStr;\n }\n return bufferStr.slice(0, MAX_LENGTH) + '...';\n}\nexports.short = short;\n/**\n * Calls relevant stateManager.getContractStorage method based on hardfork\n *\n * @param {RunState} runState [description]\n * @param {Buffer} address [description]\n * @param {Buffer} key [description]\n * @return {Promise}\n */\nasync function getContractStorage(runState, address, key) {\n const current = setLengthLeftStorage(await runState.stateManager.getContractStorage(address, key));\n if (runState._common.hardfork() === 'constantinople' ||\n runState._common.gteHardfork('istanbul')) {\n const original = setLengthLeftStorage(await runState.stateManager.getOriginalContractStorage(address, key));\n return { current, original };\n }\n else {\n return current;\n }\n}\nexports.getContractStorage = getContractStorage;\n/**\n * Returns an overflow-safe slice of an array. It right-pads\n * the data with zeros to `length`.\n *\n * @param {BN} offset\n * @param {BN} length\n * @param {Buffer} data\n * @returns {Buffer}\n */\nfunction getDataSlice(data, offset, length) {\n const len = new ethereumjs_util_1.BN(data.length);\n if (offset.gt(len)) {\n offset = len;\n }\n let end = offset.add(length);\n if (end.gt(len)) {\n end = len;\n }\n data = data.slice(offset.toNumber(), end.toNumber());\n // Right-pad with zeros to fill dataLength bytes\n data = ethereumjs_util_1.setLengthRight(data, length.toNumber());\n return data;\n}\nexports.getDataSlice = getDataSlice;\n/**\n * Get full opcode name from its name and code.\n *\n * @param code {number} Integer code of opcode.\n * @param name {string} Short name of the opcode.\n * @returns {string} Full opcode name\n */\nfunction getFullname(code, name) {\n switch (name) {\n case 'LOG':\n name += code - 0xa0;\n break;\n case 'PUSH':\n name += code - 0x5f;\n break;\n case 'DUP':\n name += code - 0x7f;\n break;\n case 'SWAP':\n name += code - 0x8f;\n break;\n }\n return name;\n}\nexports.getFullname = getFullname;\n/**\n * Checks if a jump is valid given a destination\n *\n * @param {RunState} runState\n * @param {number} dest\n * @return {boolean}\n */\nfunction jumpIsValid(runState, dest) {\n return runState.validJumps.indexOf(dest) !== -1;\n}\nexports.jumpIsValid = jumpIsValid;\n/**\n * Checks if a jumpsub is valid given a destination\n *\n * @param {RunState} runState\n * @param {number} dest\n * @return {boolean}\n */\nfunction jumpSubIsValid(runState, dest) {\n return runState.validJumpSubs.indexOf(dest) !== -1;\n}\nexports.jumpSubIsValid = jumpSubIsValid;\n/**\n * Returns an overflow-safe slice of an array. It right-pads\n *\n * the data with zeros to `length`.\n * @param {BN} gasLimit - requested gas Limit\n * @param {BN} gasLeft - current gas left\n * @param {RunState} runState - the current runState\n */\nfunction maxCallGas(gasLimit, gasLeft, runState) {\n const isTangerineWhistleOrLater = runState._common.gteHardfork('tangerineWhistle');\n if (isTangerineWhistleOrLater) {\n const gasAllowed = gasLeft.sub(gasLeft.divn(64));\n return gasLimit.gt(gasAllowed) ? gasAllowed : gasLimit;\n }\n else {\n return gasLimit;\n }\n}\nexports.maxCallGas = maxCallGas;\n/**\n * Subtracts the amount needed for memory usage from `runState.gasLeft`\n *\n * @method subMemUsage\n * @param {Object} runState\n * @param {BN} offset\n * @param {BN} length\n */\nfunction subMemUsage(runState, offset, length) {\n // YP (225): access with zero length will not extend the memory\n if (length.isZero())\n return;\n const newMemoryWordCount = divCeil(offset.add(length), new ethereumjs_util_1.BN(32));\n if (newMemoryWordCount.lte(runState.memoryWordCount))\n return;\n const words = newMemoryWordCount;\n const fee = new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'memory'));\n const quadCoeff = new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'quadCoeffDiv'));\n // words * 3 + words ^2 / 512\n const cost = words.mul(fee).add(words.mul(words).div(quadCoeff));\n if (cost.gt(runState.highestMemCost)) {\n runState.eei.useGas(cost.sub(runState.highestMemCost), 'subMemUsage');\n runState.highestMemCost = cost;\n }\n runState.memoryWordCount = newMemoryWordCount;\n}\nexports.subMemUsage = subMemUsage;\n/**\n * Writes data returned by eei.call* methods to memory\n *\n * @param {RunState} runState\n * @param {BN} outOffset\n * @param {BN} outLength\n */\nfunction writeCallOutput(runState, outOffset, outLength) {\n const returnData = runState.eei.getReturnData();\n if (returnData.length > 0) {\n const memOffset = outOffset.toNumber();\n let dataLength = outLength.toNumber();\n if (returnData.length < dataLength) {\n dataLength = returnData.length;\n }\n const data = getDataSlice(returnData, new ethereumjs_util_1.BN(0), new ethereumjs_util_1.BN(dataLength));\n runState.memory.extend(memOffset, dataLength);\n runState.memory.write(memOffset, dataLength, data);\n }\n}\nexports.writeCallOutput = writeCallOutput;\n/** The first rule set of SSTORE rules, which are the rules pre-Constantinople and in Petersburg\n * @param {RunState} runState\n * @param {any} found\n * @param {Buffer} value\n * @param {Buffer} keyBuf\n */\nfunction updateSstoreGas(runState, found, value, keyBuf) {\n const sstoreResetCost = runState._common.param('gasPrices', 'sstoreReset');\n if ((value.length === 0 && !found.length) || (value.length !== 0 && found.length)) {\n runState.eei.useGas(new ethereumjs_util_1.BN(EIP2929_1.adjustSstoreGasEIP2929(runState, keyBuf, sstoreResetCost, 'reset')), 'updateSstoreGas');\n }\n else if (value.length === 0 && found.length) {\n runState.eei.useGas(new ethereumjs_util_1.BN(EIP2929_1.adjustSstoreGasEIP2929(runState, keyBuf, sstoreResetCost, 'reset')), 'updateSstoreGas');\n runState.eei.refundGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sstoreRefund')), 'updateSstoreGas');\n }\n else if (value.length !== 0 && !found.length) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'sstoreSet')), 'updateSstoreGas');\n }\n}\nexports.updateSstoreGas = updateSstoreGas;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nconst normalize = (rawInput) => rawInput;\nexports.normalize = normalize;\n//# sourceMappingURL=helpers.js.map","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nmodule.exports = function requirePromise() {\n\tif (typeof Promise !== 'function') {\n\t\tthrow new TypeError('`Promise.allSettled` requires a global `Promise` be available.');\n\t}\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _connections;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst websocket_close_codes_1 = __importDefault(require(\"./utils/websocket-close-codes\"));\nclass WebsocketServer {\n constructor(app, connector, options) {\n _connections.set(this, new Map());\n const connections = __classPrivateFieldGet(this, _connections);\n const wsBinary = options.wsBinary;\n const autoBinary = wsBinary === \"auto\";\n app.ws(options.rpcEndpoint, {\n /* WS Options */\n maxPayloadLength: 16 * 1024,\n idleTimeout: 120,\n // Note that compression is disabled (the default option)\n // due to not being able to link against electron@12\n // with compression included\n /* Handlers */\n open: (ws) => {\n ws.closed = false;\n connections.set(ws, new Set());\n },\n message: async (ws, message, isBinary) => {\n // We have to use type any instead of ReturnType\n // on `payload` because Typescript isn't smart enough to understand the\n // ambiguity doesn't actually exist\n let payload;\n const useBinary = autoBinary ? isBinary : wsBinary;\n try {\n payload = connector.parse(Buffer.from(message));\n }\n catch (err) {\n const response = connector.formatError(err, payload);\n ws.send(response, useBinary);\n return;\n }\n let response;\n try {\n const { value } = await connector.handle(payload, ws);\n // The socket may have closed while we were waiting for the response\n // Don't bother trying to send to it if it was.\n if (ws.closed)\n return;\n const resultEmitter = value;\n const result = await resultEmitter;\n if (ws.closed)\n return;\n response = connector.format(result, payload);\n // if the result is an emitter listen to its `\"message\"` event\n // We check if `on` is a function rather than check if\n // `resultEmitter instanceof PromiEvent` because `@ganache/filecoin`\n // and `ganache` webpack `@ganache/utils` separately. This causes\n // instanceof to fail here. Since we know `resultEmitter` is MergePromiseT\n // we can safely assume that if `on` is a function, then we have a PromiEvent\n if (typeof resultEmitter[\"on\"] === \"function\") {\n const resultEmitterPromiEvent = resultEmitter;\n resultEmitterPromiEvent.on(\"message\", (result) => {\n // note: we _don't_ need to check if `ws.closed` here because when\n // `ws.closed` is set we remove this event handler anyway.\n const message = JSON.stringify({\n jsonrpc: \"2.0\",\n method: result.type,\n params: result.data\n });\n ws.send(message, isBinary);\n });\n // keep track of listeners to dispose off when the ws disconnects\n connections.get(ws).add(resultEmitterPromiEvent.dispose);\n }\n }\n catch (err) {\n // ensure the connector's `handle` fn doesn't throw outside of a Promise\n if (ws.closed)\n return;\n response = connector.formatError(err, payload);\n }\n ws.send(response, useBinary);\n },\n drain: (ws) => {\n // This is there so tests can detect if a small amount of backpressure\n // is happening and that things will still work if it does. We actually\n // don't do anything to manage excessive backpressure.\n // TODO: handle back pressure for real!\n // options.logger.log(\"WebSocket backpressure: \" + ws.getBufferedAmount());\n },\n close: (ws) => {\n ws.closed = true;\n connections.get(ws).forEach(dispose => dispose());\n connections.delete(ws);\n }\n });\n }\n close() {\n __classPrivateFieldGet(this, _connections).forEach((_, ws) => ws.end(websocket_close_codes_1.default.CLOSE_NORMAL, \"Server closed by client\"));\n }\n}\nexports.default = WebsocketServer;\n_connections = new WeakMap();\n//# sourceMappingURL=ws-server.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.provider = exports.server = exports._DefaultServerOptions = exports.ServerStatus = exports.Server = void 0;\nconst connector_loader_1 = __importDefault(require(\"./src/connector-loader\"));\nconst server_1 = __importDefault(require(\"./src/server\"));\nvar server_2 = require(\"./src/server\");\nObject.defineProperty(exports, \"Server\", { enumerable: true, get: function () { return server_2.Server; } });\nObject.defineProperty(exports, \"ServerStatus\", { enumerable: true, get: function () { return server_2.ServerStatus; } });\nObject.defineProperty(exports, \"_DefaultServerOptions\", { enumerable: true, get: function () { return server_2._DefaultServerOptions; } });\n/**\n * @public\n */\nconst Ganache = {\n /**\n * Creates a Ganache server instance that creates and\n * serves an underlying Ganache provider. Initialization\n * doesn't begin until `server.listen(...)` is called.\n * `server.listen(...)` returns a promise that resolves\n * when initialization is finished.\n *\n * @param options - Configuration options for the server;\n * `options` includes provider based options as well.\n * @returns A provider instance for the flavor\n * `options.flavor` which defaults to `ethereum`.\n */\n server: (options) => new server_1.default(options),\n /**\n * Initializes a Web3 provider for a Ganache instance.\n * This function starts an asynchronous task, but does not\n * finish it by the time the function returns. Listen to\n * `provider.on(\"connect\", () => {...})` or wait for\n * `await provider.once(\"connect\")` for initialization to\n * finish. You may start sending requests to the provider\n * before initialization finishes however; these requests\n * will start being consumed after initialization finishes.\n *\n * @param options - Configuration options for the provider.\n * @returns A provider instance for the flavor\n * `options.flavor` which defaults to `ethereum`.\n */\n provider: (options) => {\n const connector = connector_loader_1.default.initialize(options);\n return connector.provider;\n }\n};\nexports.server = Ganache.server;\nexports.provider = Ganache.provider;\n/**\n * @public\n */\nexports.default = Ganache;\n//# sourceMappingURL=index.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ecdhUnsafe = exports.ecdh = exports.recover = exports.verify = exports.sign = exports.signatureImportLax = exports.signatureImport = exports.signatureExport = exports.signatureNormalize = exports.publicKeyCombine = exports.publicKeyTweakMul = exports.publicKeyTweakAdd = exports.publicKeyVerify = exports.publicKeyConvert = exports.publicKeyCreate = exports.privateKeyTweakMul = exports.privateKeyTweakAdd = exports.privateKeyModInverse = exports.privateKeyNegate = exports.privateKeyImport = exports.privateKeyExport = exports.privateKeyVerify = void 0;\nvar secp256k1 = require('ethereum-cryptography/secp256k1');\nvar secp256k1v3 = require('./secp256k1v3-lib/index');\nvar der = require('./secp256k1v3-lib/der');\n/**\n * Verify an ECDSA privateKey\n * @method privateKeyVerify\n * @param {Buffer} privateKey\n * @return {boolean}\n */\nexports.privateKeyVerify = function (privateKey) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n return false;\n }\n return secp256k1.privateKeyVerify(Uint8Array.from(privateKey));\n};\n/**\n * Export a privateKey in DER format\n * @method privateKeyExport\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {boolean}\n */\nexports.privateKeyExport = function (privateKey, compressed) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n var publicKey = secp256k1v3.privateKeyExport(privateKey, compressed);\n return der.privateKeyExport(privateKey, publicKey, compressed);\n};\n/**\n * Import a privateKey in DER format\n * @method privateKeyImport\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nexports.privateKeyImport = function (privateKey) {\n // privateKeyImport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n privateKey = der.privateKeyImport(privateKey);\n if (privateKey !== null && privateKey.length === 32 && exports.privateKeyVerify(privateKey)) {\n return privateKey;\n }\n throw new Error(\"couldn't import from DER format\");\n};\n/**\n * Negate a privateKey by subtracting it from the order of the curve's base point\n * @method privateKeyNegate\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nexports.privateKeyNegate = function (privateKey) {\n return Buffer.from(secp256k1.privateKeyNegate(Uint8Array.from(privateKey)));\n};\n/**\n * Compute the inverse of a privateKey (modulo the order of the curve's base point).\n * @method privateKeyModInverse\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nexports.privateKeyModInverse = function (privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('private key length is invalid');\n }\n return Buffer.from(secp256k1v3.privateKeyModInverse(Uint8Array.from(privateKey)));\n};\n/**\n * Tweak a privateKey by adding tweak to it.\n * @method privateKeyTweakAdd\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nexports.privateKeyTweakAdd = function (privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakAdd(Uint8Array.from(privateKey), tweak));\n};\n/**\n * Tweak a privateKey by multiplying it by a tweak.\n * @method privateKeyTweakMul\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nexports.privateKeyTweakMul = function (privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakMul(Uint8Array.from(privateKey), Uint8Array.from(tweak)));\n};\n/**\n * Compute the public key for a privateKey.\n * @method publicKeyCreate\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nexports.publicKeyCreate = function (privateKey, compressed) {\n return Buffer.from(secp256k1.publicKeyCreate(Uint8Array.from(privateKey), compressed));\n};\n/**\n * Convert a publicKey to compressed or uncompressed form.\n * @method publicKeyConvert\n * @param {Buffer} publicKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nexports.publicKeyConvert = function (publicKey, compressed) {\n return Buffer.from(secp256k1.publicKeyConvert(Uint8Array.from(publicKey), compressed));\n};\n/**\n * Verify an ECDSA publicKey.\n * @method publicKeyVerify\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nexports.publicKeyVerify = function (publicKey) {\n // secp256k1 v4 version throws when publicKey length is not 33 or 65\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n return false;\n }\n return secp256k1.publicKeyVerify(Uint8Array.from(publicKey));\n};\n/**\n * Tweak a publicKey by adding tweak times the generator to it.\n * @method publicKeyTweakAdd\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nexports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakAdd(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n/**\n * Tweak a publicKey by multiplying it by a tweak value\n * @method publicKeyTweakMul\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nexports.publicKeyTweakMul = function (publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakMul(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n/**\n * Add a given publicKeys together.\n * @method publicKeyCombine\n * @param {Array} publicKeys\n * @param {boolean} compressed\n * @return {Buffer}\n */\nexports.publicKeyCombine = function (publicKeys, compressed) {\n var keys = [];\n publicKeys.forEach(function (publicKey) {\n keys.push(Uint8Array.from(publicKey));\n });\n return Buffer.from(secp256k1.publicKeyCombine(keys, compressed));\n};\n/**\n * Convert a signature to a normalized lower-S form.\n * @method signatureNormalize\n * @param {Buffer} signature\n * @return {Buffer}\n */\nexports.signatureNormalize = function (signature) {\n return Buffer.from(secp256k1.signatureNormalize(Uint8Array.from(signature)));\n};\n/**\n * Serialize an ECDSA signature in DER format.\n * @method signatureExport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nexports.signatureExport = function (signature) {\n return Buffer.from(secp256k1.signatureExport(Uint8Array.from(signature)));\n};\n/**\n * Parse a DER ECDSA signature (follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nexports.signatureImport = function (signature) {\n return Buffer.from(secp256k1.signatureImport(Uint8Array.from(signature)));\n};\n/**\n * Parse a DER ECDSA signature (not follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImportLax\n * @param {Buffer} signature\n * @return {Buffer}\n */\nexports.signatureImportLax = function (signature) {\n // signatureImportLax method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure that signature is greater than 0\n if (signature.length === 0) {\n throw new RangeError('signature length is invalid');\n }\n var sigObj = der.signatureImportLax(signature);\n if (sigObj === null) {\n throw new Error(\"couldn't parse DER signature\");\n }\n return secp256k1v3.signatureImport(sigObj);\n};\n/**\n * Create an ECDSA signature. Always return low-S signature.\n * @method sign\n * @param {Buffer} message\n * @param {Buffer} privateKey\n * @param {Object} options\n * @return {Buffer}\n */\nexports.sign = function (message, privateKey, options) {\n if (options === null) {\n throw new TypeError('options should be an Object');\n }\n var signOptions = undefined;\n if (options) {\n signOptions = {};\n if (options.data === null) {\n // validate option.data length\n throw new TypeError('options.data should be a Buffer');\n }\n if (options.data) {\n if (options.data.length != 32) {\n throw new RangeError('options.data length is invalid');\n }\n signOptions.data = new Uint8Array(options.data);\n }\n if (options.noncefn === null) {\n throw new TypeError('options.noncefn should be a Function');\n }\n if (options.noncefn) {\n // convert option.noncefn function signature\n signOptions.noncefn = function (message, privateKey, algo, data, attempt) {\n var bufferAlgo = algo != null ? Buffer.from(algo) : null;\n var bufferData = data != null ? Buffer.from(data) : null;\n var buffer = Buffer.from('');\n if (options.noncefn) {\n buffer = options.noncefn(Buffer.from(message), Buffer.from(privateKey), bufferAlgo, bufferData, attempt);\n }\n return new Uint8Array(buffer);\n };\n }\n }\n var sig = secp256k1.ecdsaSign(Uint8Array.from(message), Uint8Array.from(privateKey), signOptions);\n return {\n signature: Buffer.from(sig.signature),\n recovery: sig.recid,\n };\n};\n/**\n * Verify an ECDSA signature.\n * @method verify\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nexports.verify = function (message, signature, publicKey) {\n return secp256k1.ecdsaVerify(Uint8Array.from(signature), Uint8Array.from(message), publicKey);\n};\n/**\n * Recover an ECDSA public key from a signature.\n * @method recover\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Number} recid\n * @param {boolean} compressed\n * @return {Buffer}\n */\nexports.recover = function (message, signature, recid, compressed) {\n return Buffer.from(secp256k1.ecdsaRecover(Uint8Array.from(signature), recid, Uint8Array.from(message), compressed));\n};\n/**\n * Compute an EC Diffie-Hellman secret and applied sha256 to compressed public key.\n * @method ecdh\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nexports.ecdh = function (publicKey, privateKey) {\n // note: secp256k1 v3 doesn't allow optional parameter\n return Buffer.from(secp256k1.ecdh(Uint8Array.from(publicKey), Uint8Array.from(privateKey), {}));\n};\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n // ecdhUnsafe method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure valid publicKey length\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n throw new RangeError('public key length is invalid');\n }\n // ensure valid privateKey length\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n return Buffer.from(secp256k1v3.ecdhUnsafe(Uint8Array.from(publicKey), Uint8Array.from(privateKey), compressed));\n};\n//# sourceMappingURL=secp256k1v3-adapter.js.map","'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","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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = void 0;\nvar BN = require(\"bn.js\");\n/**\n * The max integer that this VM can handle\n */\nexports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n/**\n * 2^256\n */\nexports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16);\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\n//# sourceMappingURL=constants.js.map","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseTransaction = exports.calculateIntrinsicGas = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst params_1 = require(\"./params\");\nconst MAX_UINT64 = 1n << (64n - 1n);\n/**\n * Compute the 'intrinsic gas' for a message with the given data.\n * @param data - The transaction's data\n * @param hasToAddress - boolean,\n * @param common - The Common use to determine gas costs\n * @returns The absolute minimum amount of gas this transaction will consume,\n * or `-1` if the data in invalid (gas consumption would exceed `MAX_UINT64`\n * (`(2n ** 64n) - 1n`).\n */\nconst calculateIntrinsicGas = (data, hasToAddress, common) => {\n const hardfork = common.hardfork();\n // Set the starting gas for the raw transaction\n let gas = params_1.Params.TRANSACTION_GAS;\n // if it doesn't have a \"to\" address this is a contract creation and it costs\n // `TRANSACTION_CREATION` more gas.\n if (!hasToAddress)\n gas += params_1.Params.TRANSACTION_CREATION;\n if (data) {\n const input = data.toBuffer();\n // Bump the required gas by the amount of transactional data\n const dataLength = input.byteLength;\n if (dataLength > 0) {\n const TRANSACTION_DATA_NON_ZERO_GAS = params_1.Params.TRANSACTION_DATA_NON_ZERO_GAS.get(hardfork);\n const TRANSACTION_DATA_ZERO_GAS = params_1.Params.TRANSACTION_DATA_ZERO_GAS;\n // Zero and non-zero bytes are priced differently\n let nonZeroBytes = 0n;\n for (const b of input) {\n if (b !== 0) {\n nonZeroBytes++;\n }\n }\n // Make sure we don't exceed uint64 for all data combinations.\n // TODO: make sure these upper-bound checks are safe to remove, then\n // remove if so.\n // NOTE: This is an upper-bounds limit ported from geth that doesn't\n // make sense for Ethereum, as exceeding the upper bound would require\n // something like 200+ Petabytes of data.\n // https://github.com/ethereum/go-ethereum/blob/cf856ea1ad96ac39ea477087822479b63417036a/core/state_transition.go#L106-L141\n //\n // explanation:\n // `(MAX_UINT64 - gas) / TRANSACTION_DATA_NON_ZERO_GAS` is the maximum\n // number of \"non-zero bytes\" geth can handle.\n if ((MAX_UINT64 - gas) / TRANSACTION_DATA_NON_ZERO_GAS < nonZeroBytes) {\n return -1n;\n }\n gas += nonZeroBytes * TRANSACTION_DATA_NON_ZERO_GAS;\n const zeroBytes = BigInt(dataLength) - nonZeroBytes;\n // explanation:\n // `(MAX_UINT64 - gas) / TRANSACTION_DATA_ZERO_GAS` is the maximum number\n // of \"zero bytes\" geth can handle after subtracting out the cost of\n // the \"non-zero bytes\"\n if ((MAX_UINT64 - gas) / TRANSACTION_DATA_ZERO_GAS < zeroBytes) {\n return -1n;\n }\n gas += zeroBytes * TRANSACTION_DATA_ZERO_GAS;\n }\n }\n return gas;\n};\nexports.calculateIntrinsicGas = calculateIntrinsicGas;\nclass BaseTransaction {\n constructor(common) {\n this.common = common;\n }\n toVmTransaction() {\n const sender = this.from.toBuffer();\n const to = this.to.toBuffer();\n const data = this.data.toBuffer();\n return {\n hash: () => utils_1.BUFFER_32_ZERO,\n nonce: new ethereumjs_util_1.BN(this.nonce.toBuffer()),\n gasPrice: new ethereumjs_util_1.BN(this.gasPrice.toBuffer()),\n gasLimit: new ethereumjs_util_1.BN(this.gas.toBuffer()),\n to: to.length === 0\n ? null\n : { buf: to, equals: (a) => to.equals(a.buf) },\n value: new ethereumjs_util_1.BN(this.value.toBuffer()),\n data,\n getSenderAddress: () => ({\n buf: sender,\n equals: (a) => sender.equals(a.buf)\n }),\n /**\n * the minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n */\n getBaseFee: () => {\n const fee = this.calculateIntrinsicGas();\n return new ethereumjs_util_1.BN(utils_1.Quantity.from(fee).toBuffer());\n },\n getUpfrontCost: () => {\n const { gas, gasPrice, value } = this;\n try {\n const c = gas.toBigInt() * gasPrice.toBigInt() + value.toBigInt();\n return new ethereumjs_util_1.BN(utils_1.Quantity.from(c).toBuffer());\n }\n catch (e) {\n throw e;\n }\n }\n };\n }\n calculateIntrinsicGas() {\n const hasToAddress = this.to != null && !this.to.toBuffer().equals(utils_1.BUFFER_EMPTY);\n return exports.calculateIntrinsicGas(this.data, hasToAddress, this.common);\n }\n}\nexports.BaseTransaction = BaseTransaction;\n//# sourceMappingURL=base-transaction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLength = exports.decode = exports.encode = void 0;\nvar BN = require(\"bn.js\");\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 **/\nfunction encode(input) {\n if (Array.isArray(input)) {\n var output = [];\n for (var i = 0; i < input.length; i++) {\n output.push(encode(input[i]));\n }\n var buf = Buffer.concat(output);\n return Buffer.concat([encodeLength(buf.length, 192), buf]);\n }\n else {\n var inputBuf = toBuffer(input);\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf]);\n }\n}\nexports.encode = encode;\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, base) {\n if (v.slice(0, 2) === '00') {\n throw new Error('invalid RLP: extra zeros');\n }\n return parseInt(v, base);\n}\nfunction encodeLength(len, offset) {\n if (len < 56) {\n return Buffer.from([len + offset]);\n }\n else {\n var hexLength = intToHex(len);\n var lLength = hexLength.length / 2;\n var firstByte = intToHex(offset + 55 + lLength);\n return Buffer.from(firstByte + hexLength, 'hex');\n }\n}\nfunction decode(input, stream) {\n if (stream === void 0) { stream = false; }\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var decoded = _decode(inputBuffer);\n if (stream) {\n return decoded;\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder');\n }\n return decoded.data;\n}\nexports.decode = decode;\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 */\nfunction getLength(input) {\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var firstByte = inputBuffer[0];\n if (firstByte <= 0x7f) {\n return inputBuffer.length;\n }\n else if (firstByte <= 0xb7) {\n return firstByte - 0x7f;\n }\n else if (firstByte <= 0xbf) {\n return firstByte - 0xb6;\n }\n else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf;\n }\n else {\n // a list over 55 bytes long\n var llength = firstByte - 0xf6;\n var length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16);\n return llength + length;\n }\n}\nexports.getLength = getLength;\n/** Decode an input with RLP */\nfunction _decode(input) {\n var length, llength, data, innerRemainder, d;\n var decoded = [];\n var firstByte = input[0];\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 }\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 // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([]);\n }\n else {\n data = input.slice(1, length);\n }\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80');\n }\n return {\n data: data,\n remainder: input.slice(length),\n };\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 return {\n data: data,\n remainder: input.slice(length + llength),\n };\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);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(length),\n };\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 var totalLength = llength + length;\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data');\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 while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n };\n }\n}\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str) {\n return str.slice(0, 2) === '0x';\n}\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer) {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!');\n }\n var hex = integer.toString(16);\n return hex.length % 2 ? \"0\" + hex : hex;\n}\n/** Pad a string to be even */\nfunction padToEven(a) {\n return a.length % 2 ? \"0\" + a : a;\n}\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer) {\n var hex = intToHex(integer);\n return Buffer.from(hex, 'hex');\n}\n/** Transform anything into a Buffer */\nfunction toBuffer(v) {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex');\n }\n else {\n return Buffer.from(v);\n }\n }\n else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([]);\n }\n else {\n return intToBuffer(v);\n }\n }\n else if (v === null || v === undefined) {\n return Buffer.from([]);\n }\n else if (v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n else {\n throw new Error('invalid type');\n }\n }\n return v;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'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","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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLength = exports.decode = exports.encode = void 0;\nvar BN = require(\"bn.js\");\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 **/\nfunction encode(input) {\n if (Array.isArray(input)) {\n var output = [];\n for (var i = 0; i < input.length; i++) {\n output.push(encode(input[i]));\n }\n var buf = Buffer.concat(output);\n return Buffer.concat([encodeLength(buf.length, 192), buf]);\n }\n else {\n var inputBuf = toBuffer(input);\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf]);\n }\n}\nexports.encode = encode;\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, base) {\n if (v.slice(0, 2) === '00') {\n throw new Error('invalid RLP: extra zeros');\n }\n return parseInt(v, base);\n}\nfunction encodeLength(len, offset) {\n if (len < 56) {\n return Buffer.from([len + offset]);\n }\n else {\n var hexLength = intToHex(len);\n var lLength = hexLength.length / 2;\n var firstByte = intToHex(offset + 55 + lLength);\n return Buffer.from(firstByte + hexLength, 'hex');\n }\n}\nfunction decode(input, stream) {\n if (stream === void 0) { stream = false; }\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var decoded = _decode(inputBuffer);\n if (stream) {\n return decoded;\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder');\n }\n return decoded.data;\n}\nexports.decode = decode;\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 */\nfunction getLength(input) {\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var firstByte = inputBuffer[0];\n if (firstByte <= 0x7f) {\n return inputBuffer.length;\n }\n else if (firstByte <= 0xb7) {\n return firstByte - 0x7f;\n }\n else if (firstByte <= 0xbf) {\n return firstByte - 0xb6;\n }\n else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf;\n }\n else {\n // a list over 55 bytes long\n var llength = firstByte - 0xf6;\n var length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16);\n return llength + length;\n }\n}\nexports.getLength = getLength;\n/** Decode an input with RLP */\nfunction _decode(input) {\n var length, llength, data, innerRemainder, d;\n var decoded = [];\n var firstByte = input[0];\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 }\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 // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([]);\n }\n else {\n data = input.slice(1, length);\n }\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80');\n }\n return {\n data: data,\n remainder: input.slice(length),\n };\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 return {\n data: data,\n remainder: input.slice(length + llength),\n };\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);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(length),\n };\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 var totalLength = llength + length;\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data');\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 while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n };\n }\n}\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str) {\n return str.slice(0, 2) === '0x';\n}\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer) {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!');\n }\n var hex = integer.toString(16);\n return hex.length % 2 ? \"0\" + hex : hex;\n}\n/** Pad a string to be even */\nfunction padToEven(a) {\n return a.length % 2 ? \"0\" + a : a;\n}\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer) {\n var hex = intToHex(integer);\n return Buffer.from(hex, 'hex');\n}\n/** Transform anything into a Buffer */\nfunction toBuffer(v) {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex');\n }\n else {\n return Buffer.from(v);\n }\n }\n else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([]);\n }\n else {\n return intToBuffer(v);\n }\n }\n else if (v === null || v === undefined) {\n return Buffer.from([]);\n }\n else if (v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n else {\n throw new Error('invalid type');\n }\n }\n return v;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'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","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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'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","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 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","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","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\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","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\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","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","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n 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.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","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nconst seedrandom_1 = __importDefault(require(\"seedrandom\"));\nconst bip39_1 = require(\"bip39\");\nconst options_1 = require(\"@ganache/options\");\nconst unseededRng = seedrandom_1.default();\n/**\n * WARNING: to maintain compatibility with ganache v2 this RNG only generates\n * numbers from 0-254 instead of 0-255! Hence the name, `notVeryRandomBytes`\n * @param length\n * @param rng\n */\nfunction notVeryRandomBytes(length, rng) {\n const buf = Buffer.allocUnsafe(length);\n for (let i = 0; i < length; i++) {\n buf[i] = (rng() * 255) | 0;\n }\n return buf;\n}\nconst randomAlphaNumericString = (() => {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const alphabetLength = alphabet.length;\n return (length, rng) => {\n let text = \"\";\n for (let i = 0; i < length; i++) {\n text += alphabet[(rng() * alphabetLength) | 0];\n }\n return text;\n };\n})();\nexports.WalletOptions = {\n accounts: {\n normalize: helpers_1.normalize,\n cliDescription: `Account data in the form \\`,\\`, can be specified multiple times. Note that private keys are 64 characters long and must be entered as an 0x-prefixed hex string. Balance can either be input as an integer, or as a 0x-prefixed hex string with either form specifying the initial balance in wei.`,\n legacyName: \"accounts\",\n cliAliases: [\"account\"],\n cliType: \"array:string\",\n cliCoerce: rawInput => {\n return rawInput.map(accountString => {\n // split *1* time on the first comma\n const [secretKey, balance] = accountString.split(/,(.+)/);\n return {\n secretKey,\n balance: BigInt(balance)\n };\n });\n },\n conflicts: [\"totalAccounts\"]\n },\n totalAccounts: {\n normalize: helpers_1.normalize,\n cliDescription: \"Number of accounts to generate at startup.\",\n default: config => (config.accounts == null ? 10 : 0),\n legacyName: \"total_accounts\",\n cliAliases: [\"a\", \"accounts\"],\n cliType: \"number\",\n conflicts: [\"accounts\"]\n },\n deterministic: {\n normalize: helpers_1.normalize,\n cliDescription: \"Use pre-defined, deterministic seed.\",\n default: () => false,\n cliAliases: [\"d\", \"deterministic\"],\n cliType: \"boolean\",\n conflicts: [\"mnemonic\", \"seed\"]\n },\n seed: {\n normalize: helpers_1.normalize,\n cliDescription: \"Seed to use to generate a mnemonic.\",\n // The order of the options matter here! `wallet.deterministic`\n // needs to be prior to `wallet.seed` for `config.deterministic`\n // below to be set correctly\n default: config => config.deterministic === true\n ? options_1.DeterministicSeedPhrase\n : randomAlphaNumericString(10, unseededRng),\n defaultDescription: \"Random value, unless wallet.deterministic is specified\",\n legacyName: \"seed\",\n cliAliases: [\"s\", \"seed\"],\n cliType: \"string\",\n conflicts: [\"mnemonic\", \"deterministic\"]\n },\n mnemonic: {\n normalize: helpers_1.normalize,\n cliDescription: \"Use a specific HD wallet mnemonic to generate initial addresses.\",\n // The order of the options matter here! `wallet.seed`\n // needs to be prior to `wallet.mnemonic` for `config.seed`\n // below to be set correctly\n default: config => bip39_1.entropyToMnemonic(notVeryRandomBytes(16, seedrandom_1.default(config.seed))),\n defaultDescription: \"Generated from wallet.seed\",\n legacyName: \"mnemonic\",\n cliAliases: [\"m\", \"mnemonic\"],\n cliType: \"string\",\n conflicts: [\"seed\", \"deterministic\"]\n },\n unlockedAccounts: {\n normalize: helpers_1.normalize,\n cliDescription: \"Array of addresses or address indexes specifying which accounts should be unlocked.\",\n legacyName: \"unlocked_accounts\",\n cliAliases: [\"u\", \"unlock\"],\n cliType: \"array:string\"\n },\n secure: {\n normalize: helpers_1.normalize,\n cliDescription: \"Lock available accounts by default (good for third party transaction signing).\",\n default: () => false,\n legacyName: \"secure\",\n cliAliases: [\"n\", \"secure\"],\n cliType: \"boolean\"\n },\n accountKeysPath: {\n normalize: helpers_1.normalize,\n cliDescription: \"Specifies a file to save accounts and private keys to, for testing.\",\n legacyName: \"account_keys_path\",\n cliAliases: [\"account_keys_path\", \"acctKeys\"],\n cliType: \"string\"\n },\n defaultBalance: {\n normalize: helpers_1.normalize,\n cliDescription: \"The default account balance, specified in ether.\",\n default: () => 1000,\n legacyName: \"default_balance_ether\",\n cliAliases: [\"e\", \"defaultBalanceEther\"],\n cliType: \"number\"\n },\n hdPath: {\n normalize: helpers_1.normalize,\n cliDescription: \"The hierarchical deterministic path to use when generating accounts.\",\n default: () => \"m/44'/60'/0'/0/\",\n legacyName: \"hd_path\",\n cliType: \"string\"\n }\n};\n//# sourceMappingURL=wallet-options.js.map","/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","var EventEmitter = require('events').EventEmitter\nvar inherits = require('util').inherits\nvar extend = require('xtend')\nvar DeferredLevelDOWN = require('deferred-leveldown')\nvar IteratorStream = require('level-iterator-stream')\nvar Batch = require('./batch')\nvar errors = require('level-errors')\nvar supports = require('level-supports')\nvar assert = require('assert')\nvar promisify = require('./promisify')\nvar getCallback = require('./common').getCallback\nvar getOptions = require('./common').getOptions\n\nvar WriteError = errors.WriteError\nvar ReadError = errors.ReadError\nvar NotFoundError = errors.NotFoundError\nvar OpenError = errors.OpenError\nvar InitializationError = errors.InitializationError\n\n// Possible AbstractLevelDOWN#status values:\n// - 'new' - newly created, not opened or closed\n// - 'opening' - waiting for the database to be opened, post open()\n// - 'open' - successfully opened the database, available for use\n// - 'closing' - waiting for the database to be closed, post close()\n// - 'closed' - database has been successfully closed, should not be\n// used except for another open() operation\n\nfunction LevelUP (db, options, callback) {\n if (!(this instanceof LevelUP)) {\n return new LevelUP(db, options, callback)\n }\n\n var error\n var self = this\n\n EventEmitter.call(this)\n this.setMaxListeners(Infinity)\n\n if (typeof options === 'function') {\n callback = options\n options = {}\n }\n\n options = options || {}\n\n if (!db || typeof db !== 'object') {\n error = new InitializationError('First argument must be an abstract-leveldown compliant store')\n if (typeof callback === 'function') {\n return process.nextTick(callback, error)\n }\n throw error\n }\n\n assert.strictEqual(typeof db.status, 'string', '.status required, old abstract-leveldown')\n\n this.options = getOptions(options)\n this._db = db\n this.db = new DeferredLevelDOWN(db)\n this.open(callback || function (err) {\n if (err) self.emit('error', err)\n })\n\n // Create manifest based on deferred-leveldown's\n this.supports = supports(this.db.supports, {\n status: false,\n deferredOpen: true,\n openCallback: true,\n promises: true,\n streams: true\n })\n\n // Experimental: enrich levelup interface\n Object.keys(this.supports.additionalMethods).forEach(function (method) {\n if (this[method] != null) return\n\n // Don't do this.db[method].bind() because this.db is dynamic.\n this[method] = function () {\n return this.db[method].apply(this.db, arguments)\n }\n }, this)\n}\n\nLevelUP.prototype.emit = EventEmitter.prototype.emit\nLevelUP.prototype.once = EventEmitter.prototype.once\ninherits(LevelUP, EventEmitter)\n\nLevelUP.prototype.open = function (opts, callback) {\n var self = this\n var promise\n\n if (typeof opts === 'function') {\n callback = opts\n opts = null\n }\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (!opts) {\n opts = this.options\n }\n\n if (this.isOpen()) {\n process.nextTick(callback, null, self)\n return promise\n }\n\n if (this._isOpening()) {\n this.once('open', function () { callback(null, self) })\n return promise\n }\n\n this.emit('opening')\n\n this.db.open(opts, function (err) {\n if (err) {\n return callback(new OpenError(err))\n }\n self.db = self._db\n callback(null, self)\n self.emit('open')\n self.emit('ready')\n })\n\n return promise\n}\n\nLevelUP.prototype.close = function (callback) {\n var self = this\n var promise\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (this.isOpen()) {\n this.db.close(function () {\n self.emit('closed')\n callback.apply(null, arguments)\n })\n this.emit('closing')\n this.db = new DeferredLevelDOWN(this._db)\n } else if (this.isClosed()) {\n process.nextTick(callback)\n } else if (this.db.status === 'closing') {\n this.once('closed', callback)\n } else if (this._isOpening()) {\n this.once('open', function () {\n self.close(callback)\n })\n }\n\n return promise\n}\n\nLevelUP.prototype.isOpen = function () {\n return this.db.status === 'open'\n}\n\nLevelUP.prototype._isOpening = function () {\n return this.db.status === 'opening'\n}\n\nLevelUP.prototype.isClosed = function () {\n return (/^clos|new/).test(this.db.status)\n}\n\nLevelUP.prototype.get = function (key, options, callback) {\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.get(key, options, function (err, value) {\n if (err) {\n if ((/notfound/i).test(err) || err.notFound) {\n err = new NotFoundError('Key not found in database [' + key + ']', err)\n } else {\n err = new ReadError(err)\n }\n return callback(err)\n }\n callback(null, value)\n })\n\n return promise\n}\n\nLevelUP.prototype.put = function (key, value, options, callback) {\n var self = this\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.put(key, value, options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('put', key, value)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.del = function (key, options, callback) {\n var self = this\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.del(key, options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('del', key)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.batch = function (arr, options, callback) {\n if (!arguments.length) {\n return new Batch(this)\n }\n\n var self = this\n var promise\n\n if (typeof arr === 'function') callback = arr\n else callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.batch(arr, options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('batch', arr)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.iterator = function (options) {\n return this.db.iterator(options)\n}\n\nLevelUP.prototype.clear = function (options, callback) {\n var self = this\n var promise\n\n callback = getCallback(options, callback)\n options = getOptions(options)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) {\n return promise\n }\n\n this.db.clear(options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('clear', options)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.readStream =\nLevelUP.prototype.createReadStream = function (options) {\n options = extend({ keys: true, values: true }, options)\n if (typeof options.limit !== 'number') { options.limit = -1 }\n return new IteratorStream(this.db.iterator(options), options)\n}\n\nLevelUP.prototype.keyStream =\nLevelUP.prototype.createKeyStream = function (options) {\n return this.createReadStream(extend(options, { keys: true, values: false }))\n}\n\nLevelUP.prototype.valueStream =\nLevelUP.prototype.createValueStream = function (options) {\n return this.createReadStream(extend(options, { keys: false, values: true }))\n}\n\nLevelUP.prototype.toString = function () {\n return 'LevelUP'\n}\n\nLevelUP.prototype.type = 'levelup'\n\nfunction maybeError (db, callback) {\n if (!db._isOpening() && !db.isOpen()) {\n process.nextTick(callback, new ReadError('Database is not open'))\n return true\n }\n}\n\nLevelUP.errors = errors\nmodule.exports = LevelUP.default = LevelUP\n","var createError = require('errno').create\nvar LevelUPError = createError('LevelUPError')\nvar NotFoundError = createError('NotFoundError', LevelUPError)\n\nNotFoundError.prototype.notFound = true\nNotFoundError.prototype.status = 404\n\nmodule.exports = {\n LevelUPError: LevelUPError,\n InitializationError: createError('InitializationError', LevelUPError),\n OpenError: createError('OpenError', LevelUPError),\n ReadError: createError('ReadError', LevelUPError),\n WriteError: createError('WriteError', LevelUPError),\n NotFoundError: NotFoundError,\n EncodingError: createError('EncodingError', LevelUPError)\n}\n","/*!\n * prr\n * (c) 2013 Rod Vagg \n * https://github.com/rvagg/prr\n * License: MIT\n */\n\n(function (name, context, definition) {\n if (typeof module != 'undefined' && module.exports)\n module.exports = definition()\n else\n context[name] = definition()\n})('prr', this, function() {\n\n var setProperty = typeof Object.defineProperty == 'function'\n ? function (obj, key, options) {\n Object.defineProperty(obj, key, options)\n return obj\n }\n : function (obj, key, options) { // < es5\n obj[key] = options.value\n return obj\n }\n\n , makeOptions = function (value, options) {\n var oo = typeof options == 'object'\n , os = !oo && typeof options == 'string'\n , op = function (p) {\n return oo\n ? !!options[p]\n : os\n ? options.indexOf(p[0]) > -1\n : false\n }\n\n return {\n enumerable : op('enumerable')\n , configurable : op('configurable')\n , writable : op('writable')\n , value : value\n }\n }\n\n , prr = function (obj, key, value, options) {\n var k\n\n options = makeOptions(value, options)\n\n if (typeof key == 'object') {\n for (k in key) {\n if (Object.hasOwnProperty.call(key, k)) {\n options.value = key[k]\n setProperty(obj, k, options)\n }\n }\n return obj\n }\n\n return setProperty(obj, key, options)\n }\n\n return prr\n})","exports.getCallback = function (options, callback) {\n return typeof options === 'function' ? options : callback\n}\n\nexports.getOptions = function (options) {\n return typeof options === 'object' && options !== null ? options : {}\n}\n","'use strict'\n\nvar AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar AbstractChainedBatch = require('abstract-leveldown').AbstractChainedBatch\nvar AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar inherits = require('inherits')\nvar Codec = require('level-codec')\nvar EncodingError = require('level-errors').EncodingError\nvar rangeMethods = ['approximateSize', 'compactRange']\n\nmodule.exports = DB.default = DB\n\nfunction DB (db, opts) {\n if (!(this instanceof DB)) return new DB(db, opts)\n\n var manifest = db.supports || {}\n var additionalMethods = manifest.additionalMethods || {}\n\n AbstractLevelDOWN.call(this, manifest)\n\n this.supports.encodings = true\n this.supports.additionalMethods = {}\n\n rangeMethods.forEach(function (m) {\n // TODO (future major): remove this fallback\n var fallback = typeof db[m] === 'function'\n\n if (additionalMethods[m] || fallback) {\n this.supports.additionalMethods[m] = true\n\n this[m] = function (start, end, opts, cb) {\n start = this.codec.encodeKey(start, opts)\n end = this.codec.encodeKey(end, opts)\n return this.db[m](start, end, opts, cb)\n }\n }\n }, this)\n\n opts = opts || {}\n if (typeof opts.keyEncoding === 'undefined') opts.keyEncoding = 'utf8'\n if (typeof opts.valueEncoding === 'undefined') opts.valueEncoding = 'utf8'\n\n this.db = db\n this.codec = new Codec(opts)\n}\n\ninherits(DB, AbstractLevelDOWN)\n\nDB.prototype.type = 'encoding-down'\n\nDB.prototype._serializeKey =\nDB.prototype._serializeValue = function (datum) {\n return datum\n}\n\nDB.prototype._open = function (opts, cb) {\n this.db.open(opts, cb)\n}\n\nDB.prototype._close = function (cb) {\n this.db.close(cb)\n}\n\nDB.prototype._put = function (key, value, opts, cb) {\n key = this.codec.encodeKey(key, opts)\n value = this.codec.encodeValue(value, opts)\n this.db.put(key, value, opts, cb)\n}\n\nDB.prototype._get = function (key, opts, cb) {\n var self = this\n key = this.codec.encodeKey(key, opts)\n opts.asBuffer = this.codec.valueAsBuffer(opts)\n this.db.get(key, opts, function (err, value) {\n if (err) return cb(err)\n try {\n value = self.codec.decodeValue(value, opts)\n } catch (err) {\n return cb(new EncodingError(err))\n }\n cb(null, value)\n })\n}\n\nDB.prototype._del = function (key, opts, cb) {\n key = this.codec.encodeKey(key, opts)\n this.db.del(key, opts, cb)\n}\n\nDB.prototype._chainedBatch = function () {\n return new Batch(this)\n}\n\nDB.prototype._batch = function (ops, opts, cb) {\n ops = this.codec.encodeBatch(ops, opts)\n this.db.batch(ops, opts, cb)\n}\n\nDB.prototype._iterator = function (opts) {\n opts.keyAsBuffer = this.codec.keyAsBuffer(opts)\n opts.valueAsBuffer = this.codec.valueAsBuffer(opts)\n return new Iterator(this, opts)\n}\n\nDB.prototype._clear = function (opts, callback) {\n opts = this.codec.encodeLtgt(opts)\n this.db.clear(opts, callback)\n}\n\nfunction Iterator (db, opts) {\n AbstractIterator.call(this, db)\n this.codec = db.codec\n this.keys = opts.keys\n this.values = opts.values\n this.opts = this.codec.encodeLtgt(opts)\n this.it = db.db.iterator(this.opts)\n}\n\ninherits(Iterator, AbstractIterator)\n\nIterator.prototype._next = function (cb) {\n var self = this\n this.it.next(function (err, key, value) {\n if (err) return cb(err)\n try {\n if (self.keys && typeof key !== 'undefined') {\n key = self.codec.decodeKey(key, self.opts)\n } else {\n key = undefined\n }\n\n if (self.values && typeof value !== 'undefined') {\n value = self.codec.decodeValue(value, self.opts)\n } else {\n value = undefined\n }\n } catch (err) {\n return cb(new EncodingError(err))\n }\n cb(null, key, value)\n })\n}\n\nIterator.prototype._seek = function (key) {\n key = this.codec.encodeKey(key, this.opts)\n this.it.seek(key)\n}\n\nIterator.prototype._end = function (cb) {\n this.it.end(cb)\n}\n\nfunction Batch (db, codec) {\n AbstractChainedBatch.call(this, db)\n this.codec = db.codec\n this.batch = db.db.batch()\n}\n\ninherits(Batch, AbstractChainedBatch)\n\nBatch.prototype._put = function (key, value) {\n key = this.codec.encodeKey(key)\n value = this.codec.encodeValue(value)\n this.batch.put(key, value)\n}\n\nBatch.prototype._del = function (key) {\n key = this.codec.encodeKey(key)\n this.batch.del(key)\n}\n\nBatch.prototype._clear = function () {\n this.batch.clear()\n}\n\nBatch.prototype._write = function (opts, cb) {\n this.batch.write(opts, cb)\n}\n","exports.AbstractLevelDOWN = require('./abstract-leveldown')\nexports.AbstractIterator = require('./abstract-iterator')\nexports.AbstractChainedBatch = require('./abstract-chained-batch')\n","\"use strict\"\n\nmodule.exports = createRBTree\n\nvar RED = 0\nvar BLACK = 1\n\nfunction RBNode(color, key, value, left, right, count) {\n this._color = color\n this.key = key\n this.value = value\n this.left = left\n this.right = right\n this._count = count\n}\n\nfunction cloneNode(node) {\n return new RBNode(node._color, node.key, node.value, node.left, node.right, node._count)\n}\n\nfunction repaint(color, node) {\n return new RBNode(color, node.key, node.value, node.left, node.right, node._count)\n}\n\nfunction recount(node) {\n node._count = 1 + (node.left ? node.left._count : 0) + (node.right ? node.right._count : 0)\n}\n\nfunction RedBlackTree(compare, root) {\n this._compare = compare\n this.root = root\n}\n\nvar proto = RedBlackTree.prototype\n\nObject.defineProperty(proto, \"keys\", {\n get: function() {\n var result = []\n this.forEach(function(k,v) {\n result.push(k)\n })\n return result\n }\n})\n\nObject.defineProperty(proto, \"values\", {\n get: function() {\n var result = []\n this.forEach(function(k,v) {\n result.push(v)\n })\n return result\n }\n})\n\n//Returns the number of nodes in the tree\nObject.defineProperty(proto, \"length\", {\n get: function() {\n if(this.root) {\n return this.root._count\n }\n return 0\n }\n})\n\n//Insert a new item into the tree\nproto.insert = function(key, value) {\n var cmp = this._compare\n //Find point to insert new node at\n var n = this.root\n var n_stack = []\n var d_stack = []\n while(n) {\n var d = cmp(key, n.key)\n n_stack.push(n)\n d_stack.push(d)\n if(d <= 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n //Rebuild path to leaf node\n n_stack.push(new RBNode(RED, key, value, null, null, 1))\n for(var s=n_stack.length-2; s>=0; --s) {\n var n = n_stack[s]\n if(d_stack[s] <= 0) {\n n_stack[s] = new RBNode(n._color, n.key, n.value, n_stack[s+1], n.right, n._count+1)\n } else {\n n_stack[s] = new RBNode(n._color, n.key, n.value, n.left, n_stack[s+1], n._count+1)\n }\n }\n //Rebalance tree using rotations\n //console.log(\"start insert\", key, d_stack)\n for(var s=n_stack.length-1; s>1; --s) {\n var p = n_stack[s-1]\n var n = n_stack[s]\n if(p._color === BLACK || n._color === BLACK) {\n break\n }\n var pp = n_stack[s-2]\n if(pp.left === p) {\n if(p.left === n) {\n var y = pp.right\n if(y && y._color === RED) {\n //console.log(\"LLr\")\n p._color = BLACK\n pp.right = repaint(BLACK, y)\n pp._color = RED\n s -= 1\n } else {\n //console.log(\"LLb\")\n pp._color = RED\n pp.left = p.right\n p._color = BLACK\n p.right = pp\n n_stack[s-2] = p\n n_stack[s-1] = n\n recount(pp)\n recount(p)\n if(s >= 3) {\n var ppp = n_stack[s-3]\n if(ppp.left === pp) {\n ppp.left = p\n } else {\n ppp.right = p\n }\n }\n break\n }\n } else {\n var y = pp.right\n if(y && y._color === RED) {\n //console.log(\"LRr\")\n p._color = BLACK\n pp.right = repaint(BLACK, y)\n pp._color = RED\n s -= 1\n } else {\n //console.log(\"LRb\")\n p.right = n.left\n pp._color = RED\n pp.left = n.right\n n._color = BLACK\n n.left = p\n n.right = pp\n n_stack[s-2] = n\n n_stack[s-1] = p\n recount(pp)\n recount(p)\n recount(n)\n if(s >= 3) {\n var ppp = n_stack[s-3]\n if(ppp.left === pp) {\n ppp.left = n\n } else {\n ppp.right = n\n }\n }\n break\n }\n }\n } else {\n if(p.right === n) {\n var y = pp.left\n if(y && y._color === RED) {\n //console.log(\"RRr\", y.key)\n p._color = BLACK\n pp.left = repaint(BLACK, y)\n pp._color = RED\n s -= 1\n } else {\n //console.log(\"RRb\")\n pp._color = RED\n pp.right = p.left\n p._color = BLACK\n p.left = pp\n n_stack[s-2] = p\n n_stack[s-1] = n\n recount(pp)\n recount(p)\n if(s >= 3) {\n var ppp = n_stack[s-3]\n if(ppp.right === pp) {\n ppp.right = p\n } else {\n ppp.left = p\n }\n }\n break\n }\n } else {\n var y = pp.left\n if(y && y._color === RED) {\n //console.log(\"RLr\")\n p._color = BLACK\n pp.left = repaint(BLACK, y)\n pp._color = RED\n s -= 1\n } else {\n //console.log(\"RLb\")\n p.left = n.right\n pp._color = RED\n pp.right = n.left\n n._color = BLACK\n n.right = p\n n.left = pp\n n_stack[s-2] = n\n n_stack[s-1] = p\n recount(pp)\n recount(p)\n recount(n)\n if(s >= 3) {\n var ppp = n_stack[s-3]\n if(ppp.right === pp) {\n ppp.right = n\n } else {\n ppp.left = n\n }\n }\n break\n }\n }\n }\n }\n //Return new tree\n n_stack[0]._color = BLACK\n return new RedBlackTree(cmp, n_stack[0])\n}\n\n\n//Visit all nodes inorder\nfunction doVisitFull(visit, node) {\n if(node.left) {\n var v = doVisitFull(visit, node.left)\n if(v) { return v }\n }\n var v = visit(node.key, node.value)\n if(v) { return v }\n if(node.right) {\n return doVisitFull(visit, node.right)\n }\n}\n\n//Visit half nodes in order\nfunction doVisitHalf(lo, compare, visit, node) {\n var l = compare(lo, node.key)\n if(l <= 0) {\n if(node.left) {\n var v = doVisitHalf(lo, compare, visit, node.left)\n if(v) { return v }\n }\n var v = visit(node.key, node.value)\n if(v) { return v }\n }\n if(node.right) {\n return doVisitHalf(lo, compare, visit, node.right)\n }\n}\n\n//Visit all nodes within a range\nfunction doVisit(lo, hi, compare, visit, node) {\n var l = compare(lo, node.key)\n var h = compare(hi, node.key)\n var v\n if(l <= 0) {\n if(node.left) {\n v = doVisit(lo, hi, compare, visit, node.left)\n if(v) { return v }\n }\n if(h > 0) {\n v = visit(node.key, node.value)\n if(v) { return v }\n }\n }\n if(h > 0 && node.right) {\n return doVisit(lo, hi, compare, visit, node.right)\n }\n}\n\n\nproto.forEach = function rbTreeForEach(visit, lo, hi) {\n if(!this.root) {\n return\n }\n switch(arguments.length) {\n case 1:\n return doVisitFull(visit, this.root)\n break\n\n case 2:\n return doVisitHalf(lo, this._compare, visit, this.root)\n break\n\n case 3:\n if(this._compare(lo, hi) >= 0) {\n return\n }\n return doVisit(lo, hi, this._compare, visit, this.root)\n break\n }\n}\n\n//First item in list\nObject.defineProperty(proto, \"begin\", {\n get: function() {\n var stack = []\n var n = this.root\n while(n) {\n stack.push(n)\n n = n.left\n }\n return new RedBlackTreeIterator(this, stack)\n }\n})\n\n//Last item in list\nObject.defineProperty(proto, \"end\", {\n get: function() {\n var stack = []\n var n = this.root\n while(n) {\n stack.push(n)\n n = n.right\n }\n return new RedBlackTreeIterator(this, stack)\n }\n})\n\n//Find the ith item in the tree\nproto.at = function(idx) {\n if(idx < 0) {\n return new RedBlackTreeIterator(this, [])\n }\n var n = this.root\n var stack = []\n while(true) {\n stack.push(n)\n if(n.left) {\n if(idx < n.left._count) {\n n = n.left\n continue\n }\n idx -= n.left._count\n }\n if(!idx) {\n return new RedBlackTreeIterator(this, stack)\n }\n idx -= 1\n if(n.right) {\n if(idx >= n.right._count) {\n break\n }\n n = n.right\n } else {\n break\n }\n }\n return new RedBlackTreeIterator(this, [])\n}\n\nproto.ge = function(key) {\n var cmp = this._compare\n var n = this.root\n var stack = []\n var last_ptr = 0\n while(n) {\n var d = cmp(key, n.key)\n stack.push(n)\n if(d <= 0) {\n last_ptr = stack.length\n }\n if(d <= 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n stack.length = last_ptr\n return new RedBlackTreeIterator(this, stack)\n}\n\nproto.gt = function(key) {\n var cmp = this._compare\n var n = this.root\n var stack = []\n var last_ptr = 0\n while(n) {\n var d = cmp(key, n.key)\n stack.push(n)\n if(d < 0) {\n last_ptr = stack.length\n }\n if(d < 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n stack.length = last_ptr\n return new RedBlackTreeIterator(this, stack)\n}\n\nproto.lt = function(key) {\n var cmp = this._compare\n var n = this.root\n var stack = []\n var last_ptr = 0\n while(n) {\n var d = cmp(key, n.key)\n stack.push(n)\n if(d > 0) {\n last_ptr = stack.length\n }\n if(d <= 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n stack.length = last_ptr\n return new RedBlackTreeIterator(this, stack)\n}\n\nproto.le = function(key) {\n var cmp = this._compare\n var n = this.root\n var stack = []\n var last_ptr = 0\n while(n) {\n var d = cmp(key, n.key)\n stack.push(n)\n if(d >= 0) {\n last_ptr = stack.length\n }\n if(d < 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n stack.length = last_ptr\n return new RedBlackTreeIterator(this, stack)\n}\n\n//Finds the item with key if it exists\nproto.find = function(key) {\n var cmp = this._compare\n var n = this.root\n var stack = []\n while(n) {\n var d = cmp(key, n.key)\n stack.push(n)\n if(d === 0) {\n return new RedBlackTreeIterator(this, stack)\n }\n if(d <= 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n return new RedBlackTreeIterator(this, [])\n}\n\n//Removes item with key from tree\nproto.remove = function(key) {\n var iter = this.find(key)\n if(iter) {\n return iter.remove()\n }\n return this\n}\n\n//Returns the item at `key`\nproto.get = function(key) {\n var cmp = this._compare\n var n = this.root\n while(n) {\n var d = cmp(key, n.key)\n if(d === 0) {\n return n.value\n }\n if(d <= 0) {\n n = n.left\n } else {\n n = n.right\n }\n }\n return\n}\n\n//Iterator for red black tree\nfunction RedBlackTreeIterator(tree, stack) {\n this.tree = tree\n this._stack = stack\n}\n\nvar iproto = RedBlackTreeIterator.prototype\n\n//Test if iterator is valid\nObject.defineProperty(iproto, \"valid\", {\n get: function() {\n return this._stack.length > 0\n }\n})\n\n//Node of the iterator\nObject.defineProperty(iproto, \"node\", {\n get: function() {\n if(this._stack.length > 0) {\n return this._stack[this._stack.length-1]\n }\n return null\n },\n enumerable: true\n})\n\n//Makes a copy of an iterator\niproto.clone = function() {\n return new RedBlackTreeIterator(this.tree, this._stack.slice())\n}\n\n//Swaps two nodes\nfunction swapNode(n, v) {\n n.key = v.key\n n.value = v.value\n n.left = v.left\n n.right = v.right\n n._color = v._color\n n._count = v._count\n}\n\n//Fix up a double black node in a tree\nfunction fixDoubleBlack(stack) {\n var n, p, s, z\n for(var i=stack.length-1; i>=0; --i) {\n n = stack[i]\n if(i === 0) {\n n._color = BLACK\n return\n }\n //console.log(\"visit node:\", n.key, i, stack[i].key, stack[i-1].key)\n p = stack[i-1]\n if(p.left === n) {\n //console.log(\"left child\")\n s = p.right\n if(s.right && s.right._color === RED) {\n //console.log(\"case 1: right sibling child red\")\n s = p.right = cloneNode(s)\n z = s.right = cloneNode(s.right)\n p.right = s.left\n s.left = p\n s.right = z\n s._color = p._color\n n._color = BLACK\n p._color = BLACK\n z._color = BLACK\n recount(p)\n recount(s)\n if(i > 1) {\n var pp = stack[i-2]\n if(pp.left === p) {\n pp.left = s\n } else {\n pp.right = s\n }\n }\n stack[i-1] = s\n return\n } else if(s.left && s.left._color === RED) {\n //console.log(\"case 1: left sibling child red\")\n s = p.right = cloneNode(s)\n z = s.left = cloneNode(s.left)\n p.right = z.left\n s.left = z.right\n z.left = p\n z.right = s\n z._color = p._color\n p._color = BLACK\n s._color = BLACK\n n._color = BLACK\n recount(p)\n recount(s)\n recount(z)\n if(i > 1) {\n var pp = stack[i-2]\n if(pp.left === p) {\n pp.left = z\n } else {\n pp.right = z\n }\n }\n stack[i-1] = z\n return\n }\n if(s._color === BLACK) {\n if(p._color === RED) {\n //console.log(\"case 2: black sibling, red parent\", p.right.value)\n p._color = BLACK\n p.right = repaint(RED, s)\n return\n } else {\n //console.log(\"case 2: black sibling, black parent\", p.right.value)\n p.right = repaint(RED, s)\n continue \n }\n } else {\n //console.log(\"case 3: red sibling\")\n s = cloneNode(s)\n p.right = s.left\n s.left = p\n s._color = p._color\n p._color = RED\n recount(p)\n recount(s)\n if(i > 1) {\n var pp = stack[i-2]\n if(pp.left === p) {\n pp.left = s\n } else {\n pp.right = s\n }\n }\n stack[i-1] = s\n stack[i] = p\n if(i+1 < stack.length) {\n stack[i+1] = n\n } else {\n stack.push(n)\n }\n i = i+2\n }\n } else {\n //console.log(\"right child\")\n s = p.left\n if(s.left && s.left._color === RED) {\n //console.log(\"case 1: left sibling child red\", p.value, p._color)\n s = p.left = cloneNode(s)\n z = s.left = cloneNode(s.left)\n p.left = s.right\n s.right = p\n s.left = z\n s._color = p._color\n n._color = BLACK\n p._color = BLACK\n z._color = BLACK\n recount(p)\n recount(s)\n if(i > 1) {\n var pp = stack[i-2]\n if(pp.right === p) {\n pp.right = s\n } else {\n pp.left = s\n }\n }\n stack[i-1] = s\n return\n } else if(s.right && s.right._color === RED) {\n //console.log(\"case 1: right sibling child red\")\n s = p.left = cloneNode(s)\n z = s.right = cloneNode(s.right)\n p.left = z.right\n s.right = z.left\n z.right = p\n z.left = s\n z._color = p._color\n p._color = BLACK\n s._color = BLACK\n n._color = BLACK\n recount(p)\n recount(s)\n recount(z)\n if(i > 1) {\n var pp = stack[i-2]\n if(pp.right === p) {\n pp.right = z\n } else {\n pp.left = z\n }\n }\n stack[i-1] = z\n return\n }\n if(s._color === BLACK) {\n if(p._color === RED) {\n //console.log(\"case 2: black sibling, red parent\")\n p._color = BLACK\n p.left = repaint(RED, s)\n return\n } else {\n //console.log(\"case 2: black sibling, black parent\")\n p.left = repaint(RED, s)\n continue \n }\n } else {\n //console.log(\"case 3: red sibling\")\n s = cloneNode(s)\n p.left = s.right\n s.right = p\n s._color = p._color\n p._color = RED\n recount(p)\n recount(s)\n if(i > 1) {\n var pp = stack[i-2]\n if(pp.right === p) {\n pp.right = s\n } else {\n pp.left = s\n }\n }\n stack[i-1] = s\n stack[i] = p\n if(i+1 < stack.length) {\n stack[i+1] = n\n } else {\n stack.push(n)\n }\n i = i+2\n }\n }\n }\n}\n\n//Removes item at iterator from tree\niproto.remove = function() {\n var stack = this._stack\n if(stack.length === 0) {\n return this.tree\n }\n //First copy path to node\n var cstack = new Array(stack.length)\n var n = stack[stack.length-1]\n cstack[cstack.length-1] = new RBNode(n._color, n.key, n.value, n.left, n.right, n._count)\n for(var i=stack.length-2; i>=0; --i) {\n var n = stack[i]\n if(n.left === stack[i+1]) {\n cstack[i] = new RBNode(n._color, n.key, n.value, cstack[i+1], n.right, n._count)\n } else {\n cstack[i] = new RBNode(n._color, n.key, n.value, n.left, cstack[i+1], n._count)\n }\n }\n\n //Get node\n n = cstack[cstack.length-1]\n //console.log(\"start remove: \", n.value)\n\n //If not leaf, then swap with previous node\n if(n.left && n.right) {\n //console.log(\"moving to leaf\")\n\n //First walk to previous leaf\n var split = cstack.length\n n = n.left\n while(n.right) {\n cstack.push(n)\n n = n.right\n }\n //Copy path to leaf\n var v = cstack[split-1]\n cstack.push(new RBNode(n._color, v.key, v.value, n.left, n.right, n._count))\n cstack[split-1].key = n.key\n cstack[split-1].value = n.value\n\n //Fix up stack\n for(var i=cstack.length-2; i>=split; --i) {\n n = cstack[i]\n cstack[i] = new RBNode(n._color, n.key, n.value, n.left, cstack[i+1], n._count)\n }\n cstack[split-1].left = cstack[split]\n }\n //console.log(\"stack=\", cstack.map(function(v) { return v.value }))\n\n //Remove leaf node\n n = cstack[cstack.length-1]\n if(n._color === RED) {\n //Easy case: removing red leaf\n //console.log(\"RED leaf\")\n var p = cstack[cstack.length-2]\n if(p.left === n) {\n p.left = null\n } else if(p.right === n) {\n p.right = null\n }\n cstack.pop()\n for(var i=0; i 0) {\n return this._stack[this._stack.length-1].key\n }\n return\n },\n enumerable: true\n})\n\n//Returns value\nObject.defineProperty(iproto, \"value\", {\n get: function() {\n if(this._stack.length > 0) {\n return this._stack[this._stack.length-1].value\n }\n return\n },\n enumerable: true\n})\n\n\n//Returns the position of this iterator in the sorted list\nObject.defineProperty(iproto, \"index\", {\n get: function() {\n var idx = 0\n var stack = this._stack\n if(stack.length === 0) {\n var r = this.tree.root\n if(r) {\n return r._count\n }\n return 0\n } else if(stack[stack.length-1].left) {\n idx = stack[stack.length-1].left._count\n }\n for(var s=stack.length-2; s>=0; --s) {\n if(stack[s+1] === stack[s].right) {\n ++idx\n if(stack[s].left) {\n idx += stack[s].left._count\n }\n }\n }\n return idx\n },\n enumerable: true\n})\n\n//Advances iterator to next element in list\niproto.next = function() {\n var stack = this._stack\n if(stack.length === 0) {\n return\n }\n var n = stack[stack.length-1]\n if(n.right) {\n n = n.right\n while(n) {\n stack.push(n)\n n = n.left\n }\n } else {\n stack.pop()\n while(stack.length > 0 && stack[stack.length-1].right === n) {\n n = stack[stack.length-1]\n stack.pop()\n }\n }\n}\n\n//Checks if iterator is at end of tree\nObject.defineProperty(iproto, \"hasNext\", {\n get: function() {\n var stack = this._stack\n if(stack.length === 0) {\n return false\n }\n if(stack[stack.length-1].right) {\n return true\n }\n for(var s=stack.length-1; s>0; --s) {\n if(stack[s-1].left === stack[s]) {\n return true\n }\n }\n return false\n }\n})\n\n//Update value\niproto.update = function(value) {\n var stack = this._stack\n if(stack.length === 0) {\n throw new Error(\"Can't update empty node!\")\n }\n var cstack = new Array(stack.length)\n var n = stack[stack.length-1]\n cstack[cstack.length-1] = new RBNode(n._color, n.key, value, n.left, n.right, n._count)\n for(var i=stack.length-2; i>=0; --i) {\n n = stack[i]\n if(n.left === stack[i+1]) {\n cstack[i] = new RBNode(n._color, n.key, n.value, cstack[i+1], n.right, n._count)\n } else {\n cstack[i] = new RBNode(n._color, n.key, n.value, n.left, cstack[i+1], n._count)\n }\n }\n return new RedBlackTree(this.tree._compare, cstack[0])\n}\n\n//Moves iterator backward one element\niproto.prev = function() {\n var stack = this._stack\n if(stack.length === 0) {\n return\n }\n var n = stack[stack.length-1]\n if(n.left) {\n n = n.left\n while(n) {\n stack.push(n)\n n = n.right\n }\n } else {\n stack.pop()\n while(stack.length > 0 && stack[stack.length-1].left === n) {\n n = stack[stack.length-1]\n stack.pop()\n }\n }\n}\n\n//Checks if iterator is at start of tree\nObject.defineProperty(iproto, \"hasPrev\", {\n get: function() {\n var stack = this._stack\n if(stack.length === 0) {\n return false\n }\n if(stack[stack.length-1].left) {\n return true\n }\n for(var s=stack.length-1; s>0; --s) {\n if(stack[s-1].right === stack[s]) {\n return true\n }\n }\n return false\n }\n})\n\n//Default comparison function\nfunction defaultCompare(a, b) {\n if(a < b) {\n return -1\n }\n if(a > b) {\n return 1\n }\n return 0\n}\n\n//Build a tree\nfunction createRBTree(compare) {\n return new RedBlackTree(compare || defaultCompare, null)\n}","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","var subdown = require('./leveldown')\nvar levelup = require('levelup')\nvar encoding = require('encoding-down')\n\nmodule.exports = function (db, prefix, opts) {\n if (typeof prefix === 'object' && !opts) return module.exports(db, null, prefix)\n if (!opts) opts = {}\n\n return levelup(encoding(subdown(db, prefix, opts), opts), opts)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;\nconst ethjs_util_1 = require(\"ethjs-util\");\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexports.assertIsHexString = function (input) {\n if (!ethjs_util_1.isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexports.assertIsBuffer = function (input) {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexports.assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexports.assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DBOp = exports.DBTarget = void 0;\nvar constants_1 = require(\"./constants\");\nvar DBTarget;\n(function (DBTarget) {\n DBTarget[DBTarget[\"Heads\"] = 0] = \"Heads\";\n DBTarget[DBTarget[\"HeadHeader\"] = 1] = \"HeadHeader\";\n DBTarget[DBTarget[\"HeadBlock\"] = 2] = \"HeadBlock\";\n DBTarget[DBTarget[\"HashToNumber\"] = 3] = \"HashToNumber\";\n DBTarget[DBTarget[\"NumberToHash\"] = 4] = \"NumberToHash\";\n DBTarget[DBTarget[\"TotalDifficulty\"] = 5] = \"TotalDifficulty\";\n DBTarget[DBTarget[\"Body\"] = 6] = \"Body\";\n DBTarget[DBTarget[\"Header\"] = 7] = \"Header\";\n DBTarget[DBTarget[\"CliqueSignerStates\"] = 8] = \"CliqueSignerStates\";\n DBTarget[DBTarget[\"CliqueVotes\"] = 9] = \"CliqueVotes\";\n DBTarget[DBTarget[\"CliqueBlockSigners\"] = 10] = \"CliqueBlockSigners\";\n})(DBTarget = exports.DBTarget || (exports.DBTarget = {}));\n/**\n * The DBOp class aids creating database operations which is used by `level` using a more high-level interface\n */\nvar DBOp = /** @class */ (function () {\n function DBOp(operationTarget, key) {\n this.operationTarget = operationTarget;\n this.baseDBOp = {\n key: '',\n keyEncoding: 'binary',\n valueEncoding: 'binary',\n };\n switch (operationTarget) {\n case DBTarget.Heads: {\n this.baseDBOp.key = constants_1.HEADS_KEY;\n this.baseDBOp.valueEncoding = 'json';\n break;\n }\n case DBTarget.HeadHeader: {\n this.baseDBOp.key = constants_1.HEAD_HEADER_KEY;\n break;\n }\n case DBTarget.HeadBlock: {\n this.baseDBOp.key = constants_1.HEAD_BLOCK_KEY;\n break;\n }\n case DBTarget.HashToNumber: {\n this.baseDBOp.key = constants_1.hashToNumberKey(key.blockHash);\n this.cacheString = 'hashToNumber';\n break;\n }\n case DBTarget.NumberToHash: {\n this.baseDBOp.key = constants_1.numberToHashKey(key.blockNumber);\n this.cacheString = 'numberToHash';\n break;\n }\n case DBTarget.TotalDifficulty: {\n this.baseDBOp.key = constants_1.tdKey(key.blockNumber, key.blockHash);\n this.cacheString = 'td';\n break;\n }\n case DBTarget.Body: {\n this.baseDBOp.key = constants_1.bodyKey(key.blockNumber, key.blockHash);\n this.cacheString = 'body';\n break;\n }\n case DBTarget.Header: {\n this.baseDBOp.key = constants_1.headerKey(key.blockNumber, key.blockHash);\n this.cacheString = 'header';\n break;\n }\n case DBTarget.CliqueSignerStates: {\n this.baseDBOp.key = constants_1.CLIQUE_SIGNERS_KEY;\n break;\n }\n case DBTarget.CliqueVotes: {\n this.baseDBOp.key = constants_1.CLIQUE_VOTES_KEY;\n break;\n }\n case DBTarget.CliqueBlockSigners: {\n this.baseDBOp.key = constants_1.CLIQUE_BLOCK_SIGNERS_KEY;\n break;\n }\n }\n }\n DBOp.get = function (operationTarget, key) {\n return new DBOp(operationTarget, key);\n };\n // set operation: note: value/key is not in default order\n DBOp.set = function (operationTarget, value, key) {\n var dbOperation = new DBOp(operationTarget, key);\n dbOperation.baseDBOp.value = value;\n dbOperation.baseDBOp.type = 'put';\n if (operationTarget == DBTarget.Heads) {\n dbOperation.baseDBOp.valueEncoding = 'json';\n }\n else {\n dbOperation.baseDBOp.valueEncoding = 'binary';\n }\n return dbOperation;\n };\n DBOp.del = function (operationTarget, key) {\n var dbOperation = new DBOp(operationTarget, key);\n dbOperation.baseDBOp.type = 'del';\n return dbOperation;\n };\n DBOp.prototype.updateCache = function (cacheMap) {\n if (this.cacheString && cacheMap[this.cacheString] && Buffer.isBuffer(this.baseDBOp.value)) {\n if (this.baseDBOp.type == 'put') {\n cacheMap[this.cacheString].set(this.baseDBOp.key, this.baseDBOp.value);\n }\n else if (this.baseDBOp.type == 'del') {\n cacheMap[this.cacheString].del(this.baseDBOp.key);\n }\n else {\n throw new Error('unsupported db operation on cache');\n }\n }\n };\n return DBOp;\n}());\nexports.DBOp = DBOp;\n//# sourceMappingURL=operation.js.map","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","module.exports = {};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","module.exports = true;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!has(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar Message = /** @class */ (function () {\n function Message(opts) {\n this.to = opts.to;\n this.value = opts.value ? opts.value : new ethereumjs_util_1.BN(0);\n this.caller = opts.caller;\n this.gasLimit = opts.gasLimit;\n this.data = opts.data || Buffer.alloc(0);\n this.depth = opts.depth || 0;\n this.code = opts.code;\n this._codeAddress = opts.codeAddress;\n this.isStatic = opts.isStatic || false;\n this.isCompiled = opts.isCompiled || false; // For CALLCODE, TODO: Move from here\n this.salt = opts.salt; // For CREATE2, TODO: Move from here\n this.selfdestruct = opts.selfdestruct; // TODO: Move from here\n this.delegatecall = opts.delegatecall || false;\n }\n Object.defineProperty(Message.prototype, \"codeAddress\", {\n get: function () {\n return this._codeAddress ? this._codeAddress : this.to;\n },\n enumerable: false,\n configurable: true\n });\n return Message;\n}());\nexports.default = Message;\n//# sourceMappingURL=message.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar assert_1 = __importDefault(require(\"assert\"));\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar BYTE_SIZE = 256;\nvar Bloom = /** @class */ (function () {\n /**\n * Represents a Bloom filter.\n */\n function Bloom(bitvector) {\n if (!bitvector) {\n this.bitvector = ethereumjs_util_1.zeros(BYTE_SIZE);\n }\n else {\n assert_1.default(bitvector.length === BYTE_SIZE, 'bitvectors must be 2048 bits long');\n this.bitvector = bitvector;\n }\n }\n /**\n * Adds an element to a bit vector of a 64 byte bloom filter.\n * @param e - The element to add\n */\n Bloom.prototype.add = function (e) {\n assert_1.default(Buffer.isBuffer(e), 'Element should be buffer');\n e = ethereumjs_util_1.keccak256(e);\n var mask = 2047; // binary 11111111111\n for (var i = 0; i < 3; i++) {\n var first2bytes = e.readUInt16BE(i * 2);\n var loc = mask & first2bytes;\n var byteLoc = loc >> 3;\n var bitLoc = 1 << loc % 8;\n this.bitvector[BYTE_SIZE - byteLoc - 1] |= bitLoc;\n }\n };\n /**\n * Checks if an element is in the bloom.\n * @param e - The element to check\n */\n Bloom.prototype.check = function (e) {\n assert_1.default(Buffer.isBuffer(e), 'Element should be Buffer');\n e = ethereumjs_util_1.keccak256(e);\n var mask = 2047; // binary 11111111111\n var match = true;\n for (var i = 0; i < 3 && match; i++) {\n var first2bytes = e.readUInt16BE(i * 2);\n var loc = mask & first2bytes;\n var byteLoc = loc >> 3;\n var bitLoc = 1 << loc % 8;\n match = (this.bitvector[BYTE_SIZE - byteLoc - 1] & bitLoc) !== 0;\n }\n return Boolean(match);\n };\n /**\n * Checks if multiple topics are in a bloom.\n * @returns `true` if every topic is in the bloom\n */\n Bloom.prototype.multiCheck = function (topics) {\n var _this = this;\n return topics.every(function (t) { return _this.check(t); });\n };\n /**\n * Bitwise or blooms together.\n */\n Bloom.prototype.or = function (bloom) {\n if (bloom) {\n for (var i = 0; i <= BYTE_SIZE; i++) {\n this.bitvector[i] = this.bitvector[i] | bloom.bitvector[i];\n }\n }\n };\n return Bloom;\n}());\nexports.default = Bloom;\n//# sourceMappingURL=index.js.map","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = slice;\nfunction slice(arrayLike, start) {\n start = start | 0;\n var newLen = Math.max(arrayLike.length - start, 0);\n var newArr = Array(newLen);\n for (var idx = 0; idx < newLen; idx++) {\n newArr[idx] = arrayLike[start + idx];\n }\n return newArr;\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Set = require('core-js-pure/es/set');\nconst debug_1 = require(\"debug\");\nconst merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst rlp_1 = require(\"rlp\");\nconst common_1 = __importDefault(require(\"@ethereumjs/common\"));\nconst genesisStates_1 = require(\"@ethereumjs/common/dist/genesisStates\");\nconst cache_1 = __importDefault(require(\"./cache\"));\nconst precompiles_1 = require(\"../evm/precompiles\");\nconst opcodes_1 = require(\"../evm/opcodes\");\nconst debug = debug_1.debug('vm:state');\n/**\n * Interface for getting and setting data from an underlying\n * state trie.\n */\nclass DefaultStateManager {\n /**\n * Instantiate the StateManager interface.\n */\n constructor(opts = {}) {\n let common = opts.common;\n if (!common) {\n common = new common_1.default({ chain: 'mainnet', hardfork: 'petersburg' });\n }\n this._common = common;\n this._trie = opts.trie || new merkle_patricia_tree_1.SecureTrie();\n this._storageTries = {};\n this._cache = new cache_1.default(this._trie);\n this._touched = new Set();\n this._touchedStack = [];\n this._checkpointCount = 0;\n this._originalStorageCache = new Map();\n this._accessedStorage = [new Map()];\n }\n /**\n * Copies the current instance of the `StateManager`\n * at the last fully committed point, i.e. as if all current\n * checkpoints were reverted.\n */\n copy() {\n return new DefaultStateManager({\n trie: this._trie.copy(false),\n common: this._common,\n });\n }\n /**\n * Gets the account associated with `address`. Returns an empty account if the account does not exist.\n * @param address - Address of the `account` to get\n */\n async getAccount(address) {\n const account = await this._cache.getOrLoad(address);\n return account;\n }\n /**\n * Saves an account into state under the provided `address`.\n * @param address - Address under which to store `account`\n * @param account - The account to store\n */\n async putAccount(address, account) {\n debug(`Save account address=${address} nonce=${account.nonce} balance=${account.balance} contract=${account.isContract() ? 'yes' : 'no'} empty=${account.isEmpty() ? 'yes' : 'no'}`);\n this._cache.put(address, account);\n this.touchAccount(address);\n }\n /**\n * Deletes an account from state under the provided `address`. The account will also be removed from the state trie.\n * @param address - Address of the account which should be deleted\n */\n async deleteAccount(address) {\n debug(`Delete account ${address}`);\n this._cache.del(address);\n this.touchAccount(address);\n }\n /**\n * Marks an account as touched, according to the definition\n * in [EIP-158](https://eips.ethereum.org/EIPS/eip-158).\n * This happens when the account is triggered for a state-changing\n * event. Touched accounts that are empty will be cleared\n * at the end of the tx.\n */\n touchAccount(address) {\n this._touched.add(address.buf.toString('hex'));\n }\n /**\n * Adds `value` to the state trie as code, and sets `codeHash` on the account\n * corresponding to `address` to reference this.\n * @param address - Address of the `account` to add the `code` for\n * @param value - The value of the `code`\n */\n async putContractCode(address, value) {\n const codeHash = ethereumjs_util_1.keccak256(value);\n if (codeHash.equals(ethereumjs_util_1.KECCAK256_NULL)) {\n return;\n }\n await this._trie.db.put(codeHash, value);\n const account = await this.getAccount(address);\n debug(`Update codeHash (-> ${opcodes_1.short(codeHash)}) for account ${address}`);\n account.codeHash = codeHash;\n await this.putAccount(address, account);\n }\n /**\n * Gets the code corresponding to the provided `address`.\n * @param address - Address to get the `code` for\n * @returns {Promise} - Resolves with the code corresponding to the provided address.\n * Returns an empty `Buffer` if the account has no associated code.\n */\n async getContractCode(address) {\n const account = await this.getAccount(address);\n if (!account.isContract()) {\n return Buffer.alloc(0);\n }\n const code = await this._trie.db.get(account.codeHash);\n return code || Buffer.alloc(0);\n }\n /**\n * Creates a storage trie from the primary storage trie\n * for an account and saves this in the storage cache.\n * @private\n */\n async _lookupStorageTrie(address) {\n // from state trie\n const account = await this.getAccount(address);\n const storageTrie = this._trie.copy(false);\n storageTrie.root = account.stateRoot;\n storageTrie.db.checkpoints = [];\n return storageTrie;\n }\n /**\n * Gets the storage trie for an account from the storage\n * cache or does a lookup.\n * @private\n */\n async _getStorageTrie(address) {\n // from storage cache\n const addressHex = address.buf.toString('hex');\n let storageTrie = this._storageTries[addressHex];\n if (!storageTrie) {\n // lookup from state\n storageTrie = await this._lookupStorageTrie(address);\n }\n return storageTrie;\n }\n /**\n * Gets the storage value associated with the provided `address` and `key`. This method returns\n * the shortest representation of the stored value.\n * @param address - Address of the account to get the storage for\n * @param key - Key in the account's storage to get the value for. Must be 32 bytes long.\n * @returns {Promise} - The storage value for the account\n * corresponding to the provided address at the provided key.\n * If this does not exist an empty `Buffer` is returned.\n */\n async getContractStorage(address, key) {\n if (key.length !== 32) {\n throw new Error('Storage key must be 32 bytes long');\n }\n const trie = await this._getStorageTrie(address);\n const value = await trie.get(key);\n const decoded = rlp_1.decode(value);\n return decoded;\n }\n /**\n * Caches the storage value associated with the provided `address` and `key`\n * on first invocation, and returns the cached (original) value from then\n * onwards. This is used to get the original value of a storage slot for\n * computing gas costs according to EIP-1283.\n * @param address - Address of the account to get the storage for\n * @param key - Key in the account's storage to get the value for. Must be 32 bytes long.\n */\n async getOriginalContractStorage(address, key) {\n if (key.length !== 32) {\n throw new Error('Storage key must be 32 bytes long');\n }\n const addressHex = address.buf.toString('hex');\n const keyHex = key.toString('hex');\n let map;\n if (!this._originalStorageCache.has(addressHex)) {\n map = new Map();\n this._originalStorageCache.set(addressHex, map);\n }\n else {\n map = this._originalStorageCache.get(addressHex);\n }\n if (map.has(keyHex)) {\n return map.get(keyHex);\n }\n else {\n const current = await this.getContractStorage(address, key);\n map.set(keyHex, current);\n return current;\n }\n }\n /**\n * Clears the original storage cache. Refer to [[getOriginalContractStorage]]\n * for more explanation.\n */\n _clearOriginalStorageCache() {\n this._originalStorageCache = new Map();\n }\n /**\n * Clears the original storage cache. Refer to [[getOriginalContractStorage]]\n * for more explanation. Alias of the internal _clearOriginalStorageCache\n */\n clearOriginalStorageCache() {\n this._clearOriginalStorageCache();\n }\n /**\n * Modifies the storage trie of an account.\n * @private\n * @param address - Address of the account whose storage is to be modified\n * @param modifyTrie - Function to modify the storage trie of the account\n */\n async _modifyContractStorage(address, modifyTrie) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n const storageTrie = await this._getStorageTrie(address);\n modifyTrie(storageTrie, async () => {\n // update storage cache\n const addressHex = address.buf.toString('hex');\n this._storageTries[addressHex] = storageTrie;\n // update contract stateRoot\n const contract = this._cache.get(address);\n contract.stateRoot = storageTrie.root;\n await this.putAccount(address, contract);\n this.touchAccount(address);\n resolve();\n });\n });\n }\n /**\n * Adds value to the state trie for the `account`\n * corresponding to `address` at the provided `key`.\n * @param address - Address to set a storage value for\n * @param key - Key to set the value at. Must be 32 bytes long.\n * @param value - Value to set at `key` for account corresponding to `address`. Cannot be more than 32 bytes. Leading zeros are stripped. If it is a empty or filled with zeros, deletes the value.\n */\n async putContractStorage(address, key, value) {\n if (key.length !== 32) {\n throw new Error('Storage key must be 32 bytes long');\n }\n if (value.length > 32) {\n throw new Error('Storage value cannot be longer than 32 bytes');\n }\n value = ethereumjs_util_1.unpadBuffer(value);\n await this._modifyContractStorage(address, async (storageTrie, done) => {\n if (value && value.length) {\n // format input\n const encodedValue = rlp_1.encode(value);\n debug(`Update contract storage for account ${address} to ${opcodes_1.short(value)}`);\n await storageTrie.put(key, encodedValue);\n }\n else {\n // deleting a value\n debug(`Delete contract storage for account`);\n await storageTrie.del(key);\n }\n done();\n });\n }\n /**\n * Clears all storage entries for the account corresponding to `address`.\n * @param address - Address to clear the storage of\n */\n async clearContractStorage(address) {\n await this._modifyContractStorage(address, (storageTrie, done) => {\n storageTrie.root = storageTrie.EMPTY_TRIE_ROOT;\n done();\n });\n }\n /**\n * Checkpoints the current state of the StateManager instance.\n * State changes that follow can then be committed by calling\n * `commit` or `reverted` by calling rollback.\n */\n async checkpoint() {\n this._trie.checkpoint();\n this._cache.checkpoint();\n this._touchedStack.push(new Set(Array.from(this._touched)));\n this._accessedStorage.push(new Map());\n this._checkpointCount++;\n }\n /**\n * Commits the current change-set to the instance since the\n * last call to checkpoint.\n */\n async commit() {\n // setup trie checkpointing\n await this._trie.commit();\n // setup cache checkpointing\n this._cache.commit();\n this._touchedStack.pop();\n this._checkpointCount--;\n // Copy the contents of the map of the current level to a map higher.\n const storageMap = this._accessedStorage.pop();\n // mapTarget is current level, since the pop operation is above\n const mapTarget = this._accessedStorage[this._accessedStorage.length - 1];\n if (mapTarget) {\n // Note: storageMap is always defined here per definition (TypeScript cannot infer this)\n storageMap === null || storageMap === void 0 ? void 0 : storageMap.forEach((slotSet, addressString) => {\n const addressExists = mapTarget.get(addressString);\n if (!addressExists) {\n mapTarget.set(addressString, new Set());\n }\n const storageSet = mapTarget.get(addressString);\n slotSet.forEach((value) => {\n storageSet.add(value);\n });\n });\n }\n if (this._checkpointCount === 0) {\n await this._cache.flush();\n this._clearOriginalStorageCache();\n }\n }\n /**\n * Reverts the current change-set to the instance since the\n * last call to checkpoint.\n */\n async revert() {\n // setup trie checkpointing\n await this._trie.revert();\n // setup cache checkpointing\n this._cache.revert();\n this._storageTries = {};\n this._accessedStorage.pop();\n const touched = this._touchedStack.pop();\n if (!touched) {\n throw new Error('Reverting to invalid state checkpoint failed');\n }\n // Exceptional case due to consensus issue in Geth and Parity.\n // See [EIP issue #716](https://github.com/ethereum/EIPs/issues/716) for context.\n // The RIPEMD precompile has to remain *touched* even when the call reverts,\n // and be considered for deletion.\n if (this._touched.has(precompiles_1.ripemdPrecompileAddress)) {\n touched.add(precompiles_1.ripemdPrecompileAddress);\n }\n this._touched = touched;\n this._checkpointCount--;\n if (this._checkpointCount === 0) {\n await this._cache.flush();\n this._clearOriginalStorageCache();\n }\n }\n /**\n * Gets the state-root of the Merkle-Patricia trie representation\n * of the state of this StateManager. Will error if there are uncommitted\n * checkpoints on the instance.\n * @param force - If set to `true`, force a cache flush even if there are uncommited checkpoints (this is set to `true` pre-Byzantium in order to get intermediate state roots for the receipts)\n * @returns {Promise} - Returns the state-root of the `StateManager`\n */\n async getStateRoot(force = false) {\n if (!force && this._checkpointCount !== 0) {\n throw new Error('Cannot get state root with uncommitted checkpoints');\n }\n await this._cache.flush();\n const stateRoot = this._trie.root;\n return stateRoot;\n }\n /**\n * Sets the state of the instance to that represented\n * by the provided `stateRoot`. Will error if there are uncommitted\n * checkpoints on the instance or if the state root does not exist in\n * the state trie.\n * @param stateRoot - The state-root to reset the instance to\n */\n async setStateRoot(stateRoot) {\n if (this._checkpointCount !== 0) {\n throw new Error('Cannot set state root with uncommitted checkpoints');\n }\n await this._cache.flush();\n if (stateRoot === this._trie.EMPTY_TRIE_ROOT) {\n this._trie.root = stateRoot;\n this._cache.clear();\n this._storageTries = {};\n return;\n }\n const hasRoot = await this._trie.checkRoot(stateRoot);\n if (!hasRoot) {\n throw new Error('State trie does not contain state root');\n }\n this._trie.root = stateRoot;\n this._cache.clear();\n this._storageTries = {};\n }\n /**\n * Dumps the RLP-encoded storage values for an `account` specified by `address`.\n * @param address - The address of the `account` to return storage for\n * @returns {Promise} - The state of the account as an `Object` map.\n * Keys are are the storage keys, values are the storage values as strings.\n * Both are represented as hex strings without the `0x` prefix.\n */\n async dumpStorage(address) {\n return new Promise((resolve, reject) => {\n this._getStorageTrie(address)\n .then((trie) => {\n const storage = {};\n const stream = trie.createReadStream();\n stream.on('data', (val) => {\n storage[val.key.toString('hex')] = val.value.toString('hex');\n });\n stream.on('end', () => {\n resolve(storage);\n });\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n /**\n * Checks whether the current instance has the canonical genesis state\n * for the configured chain parameters.\n * @returns {Promise} - Whether the storage trie contains the\n * canonical genesis state for the configured chain parameters.\n */\n async hasGenesisState() {\n const root = this._common.genesis().stateRoot;\n return await this._trie.checkRoot(root);\n }\n /**\n * Generates a canonical genesis state on the instance based on the\n * configured chain parameters. Will error if there are uncommitted\n * checkpoints on the instance.\n */\n async generateCanonicalGenesis() {\n if (this._checkpointCount !== 0) {\n throw new Error('Cannot create genesis state with uncommitted checkpoints');\n }\n const genesis = await this.hasGenesisState();\n if (!genesis) {\n await this.generateGenesis(genesisStates_1.genesisStateByName(this._common.chainName()));\n }\n }\n /**\n * Initializes the provided genesis state into the state trie\n * @param initState - Object (address -> balance)\n */\n async generateGenesis(initState) {\n if (this._checkpointCount !== 0) {\n throw new Error('Cannot create genesis state with uncommitted checkpoints');\n }\n debug(`Save genesis state into the state trie`);\n const addresses = Object.keys(initState);\n for (const address of addresses) {\n const balance = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(initState[address]));\n const account = ethereumjs_util_1.Account.fromAccountData({ balance });\n const addressBuffer = ethereumjs_util_1.toBuffer(address);\n await this._trie.put(addressBuffer, account.serialize());\n }\n }\n /**\n * Checks if the `account` corresponding to `address`\n * is empty or non-existent as defined in\n * EIP-161 (https://eips.ethereum.org/EIPS/eip-161).\n * @param address - Address to check\n */\n async accountIsEmpty(address) {\n const account = await this.getAccount(address);\n return account.isEmpty();\n }\n /**\n * Checks if the `account` corresponding to `address`\n * exists\n * @param address - Address of the `account` to check\n */\n async accountExists(address) {\n const account = this._cache.lookup(address);\n if (account && !this._cache.keyIsDeleted(address)) {\n return true;\n }\n if (await this._cache._trie.get(address.buf)) {\n return true;\n }\n return false;\n }\n /** EIP-2929 logic\n * This should only be called from within the EVM\n */\n /**\n * Returns true if the address is warm in the current context\n * @param address - The address (as a Buffer) to check\n */\n isWarmedAddress(address) {\n for (let i = this._accessedStorage.length - 1; i >= 0; i--) {\n const currentMap = this._accessedStorage[i];\n if (currentMap.has(address.toString('hex'))) {\n return true;\n }\n }\n return false;\n }\n /**\n * Add a warm address in the current context\n * @param address - The address (as a Buffer) to check\n */\n addWarmedAddress(address) {\n const key = address.toString('hex');\n const storageSet = this._accessedStorage[this._accessedStorage.length - 1].get(key);\n if (!storageSet) {\n const emptyStorage = new Set();\n this._accessedStorage[this._accessedStorage.length - 1].set(key, emptyStorage);\n }\n }\n /**\n * Returns true if the slot of the address is warm\n * @param address - The address (as a Buffer) to check\n * @param slot - The slot (as a Buffer) to check\n */\n isWarmedStorage(address, slot) {\n const addressKey = address.toString('hex');\n const storageKey = slot.toString('hex');\n for (let i = this._accessedStorage.length - 1; i >= 0; i--) {\n const currentMap = this._accessedStorage[i];\n if (currentMap.has(addressKey) && currentMap.get(addressKey).has(storageKey)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Mark the storage slot in the address as warm in the current context\n * @param address - The address (as a Buffer) to check\n * @param slot - The slot (as a Buffer) to check\n */\n addWarmedStorage(address, slot) {\n const addressKey = address.toString('hex');\n let storageSet = this._accessedStorage[this._accessedStorage.length - 1].get(addressKey);\n if (!storageSet) {\n storageSet = new Set();\n this._accessedStorage[this._accessedStorage.length - 1].set(addressKey, storageSet);\n }\n storageSet.add(slot.toString('hex'));\n }\n /**\n * Clear the warm accounts and storage. To be called after a transaction finished.\n */\n clearWarmedAccounts() {\n this._accessedStorage = [new Map()];\n }\n /**\n * Removes accounts form the state trie that have been touched,\n * as defined in EIP-161 (https://eips.ethereum.org/EIPS/eip-161).\n */\n async cleanupTouchedAccounts() {\n if (this._common.gteHardfork('spuriousDragon')) {\n const touchedArray = Array.from(this._touched);\n for (const addressHex of touchedArray) {\n const address = new ethereumjs_util_1.Address(Buffer.from(addressHex, 'hex'));\n const empty = await this.accountIsEmpty(address);\n if (empty) {\n this._cache.del(address);\n debug(`Cleanup touched account address=${address.toString()} (>= SpuriousDragon)`);\n }\n }\n }\n this._touched.clear();\n }\n}\nexports.default = DefaultStateManager;\n//# sourceMappingURL=stateManager.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActivePrecompiles = exports.ripemdPrecompileAddress = exports.getPrecompile = exports.precompiles = void 0;\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst _01_ecrecover_1 = __importDefault(require(\"./01-ecrecover\"));\nconst _02_sha256_1 = __importDefault(require(\"./02-sha256\"));\nconst _03_ripemd160_1 = __importDefault(require(\"./03-ripemd160\"));\nconst _04_identity_1 = __importDefault(require(\"./04-identity\"));\nconst _05_modexp_1 = __importDefault(require(\"./05-modexp\"));\nconst _06_ecadd_1 = __importDefault(require(\"./06-ecadd\"));\nconst _07_ecmul_1 = __importDefault(require(\"./07-ecmul\"));\nconst _08_ecpairing_1 = __importDefault(require(\"./08-ecpairing\"));\nconst _09_blake2f_1 = __importDefault(require(\"./09-blake2f\"));\nconst _0a_bls12_g1add_1 = __importDefault(require(\"./0a-bls12-g1add\"));\nconst _0b_bls12_g1mul_1 = __importDefault(require(\"./0b-bls12-g1mul\"));\nconst _0c_bls12_g1multiexp_1 = __importDefault(require(\"./0c-bls12-g1multiexp\"));\nconst _0d_bls12_g2add_1 = __importDefault(require(\"./0d-bls12-g2add\"));\nconst _0e_bls12_g2mul_1 = __importDefault(require(\"./0e-bls12-g2mul\"));\nconst _0f_bls12_g2multiexp_1 = __importDefault(require(\"./0f-bls12-g2multiexp\"));\nconst _10_bls12_pairing_1 = __importDefault(require(\"./10-bls12-pairing\"));\nconst _11_bls12_map_fp_to_g1_1 = __importDefault(require(\"./11-bls12-map-fp-to-g1\"));\nconst _12_bls12_map_fp2_to_g2_1 = __importDefault(require(\"./12-bls12-map-fp2-to-g2\"));\nvar PrecompileAvailabilityCheck;\n(function (PrecompileAvailabilityCheck) {\n PrecompileAvailabilityCheck[PrecompileAvailabilityCheck[\"EIP\"] = 0] = \"EIP\";\n PrecompileAvailabilityCheck[PrecompileAvailabilityCheck[\"Hardfork\"] = 1] = \"Hardfork\";\n})(PrecompileAvailabilityCheck || (PrecompileAvailabilityCheck = {}));\nconst ripemdPrecompileAddress = '0000000000000000000000000000000000000003';\nexports.ripemdPrecompileAddress = ripemdPrecompileAddress;\nconst precompiles = {\n '0000000000000000000000000000000000000001': _01_ecrecover_1.default,\n '0000000000000000000000000000000000000002': _02_sha256_1.default,\n [ripemdPrecompileAddress]: _03_ripemd160_1.default,\n '0000000000000000000000000000000000000004': _04_identity_1.default,\n '0000000000000000000000000000000000000005': _05_modexp_1.default,\n '0000000000000000000000000000000000000006': _06_ecadd_1.default,\n '0000000000000000000000000000000000000007': _07_ecmul_1.default,\n '0000000000000000000000000000000000000008': _08_ecpairing_1.default,\n '0000000000000000000000000000000000000009': _09_blake2f_1.default,\n '000000000000000000000000000000000000000a': _0a_bls12_g1add_1.default,\n '000000000000000000000000000000000000000b': _0b_bls12_g1mul_1.default,\n '000000000000000000000000000000000000000c': _0c_bls12_g1multiexp_1.default,\n '000000000000000000000000000000000000000d': _0d_bls12_g2add_1.default,\n '000000000000000000000000000000000000000e': _0e_bls12_g2mul_1.default,\n '000000000000000000000000000000000000000f': _0f_bls12_g2multiexp_1.default,\n '0000000000000000000000000000000000000010': _10_bls12_pairing_1.default,\n '0000000000000000000000000000000000000011': _11_bls12_map_fp_to_g1_1.default,\n '0000000000000000000000000000000000000012': _12_bls12_map_fp2_to_g2_1.default,\n};\nexports.precompiles = precompiles;\nconst precompileAvailability = {\n '0000000000000000000000000000000000000001': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n '0000000000000000000000000000000000000002': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n [ripemdPrecompileAddress]: {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n '0000000000000000000000000000000000000004': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'chainstart',\n },\n '0000000000000000000000000000000000000005': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n '0000000000000000000000000000000000000006': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n '0000000000000000000000000000000000000007': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n '0000000000000000000000000000000000000008': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'byzantium',\n },\n '0000000000000000000000000000000000000009': {\n type: PrecompileAvailabilityCheck.Hardfork,\n param: 'istanbul',\n },\n '000000000000000000000000000000000000000a': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '000000000000000000000000000000000000000b': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '000000000000000000000000000000000000000c': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '000000000000000000000000000000000000000d': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '000000000000000000000000000000000000000f': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '000000000000000000000000000000000000000e': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '0000000000000000000000000000000000000010': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '0000000000000000000000000000000000000011': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n '0000000000000000000000000000000000000012': {\n type: PrecompileAvailabilityCheck.EIP,\n param: 2537,\n },\n};\nfunction getPrecompile(address, common) {\n const addr = address.buf.toString('hex');\n if (precompiles[addr]) {\n const availability = precompileAvailability[addr];\n if ((availability.type == PrecompileAvailabilityCheck.Hardfork &&\n common.gteHardfork(availability.param)) ||\n (availability.type == PrecompileAvailabilityCheck.EIP &&\n common.eips().includes(availability.param))) {\n return precompiles[addr];\n }\n }\n return precompiles[''];\n}\nexports.getPrecompile = getPrecompile;\nfunction getActivePrecompiles(common) {\n const activePrecompiles = [];\n for (const addressString in precompiles) {\n const address = new ethereumjs_util_1.Address(Buffer.from(addressString, 'hex'));\n if (getPrecompile(address, common)) {\n activePrecompiles.push(address);\n }\n }\n return activePrecompiles;\n}\nexports.getActivePrecompiles = getActivePrecompiles;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseHandler = void 0;\nconst rate_limiter_1 = __importDefault(require(\"../rate-limiter/rate-limiter\"));\nconst INVALID_AUTH_ERROR = \"Authentication via both username/password (Basic) and JWT (Bearer) is not possible\";\nconst WINDOW_SECONDS = 30;\nclass BaseHandler {\n constructor(options, abortSignal) {\n this.id = 1;\n this.requestCache = new Map();\n const forkingOptions = options.fork;\n const { requestsPerSecond, url, userAgent, origin } = forkingOptions;\n this.abortSignal = abortSignal;\n this.limiter = new rate_limiter_1.default(\n // convert `requestsPerSecond` to \"requests per window\"\n requestsPerSecond * WINDOW_SECONDS, WINDOW_SECONDS * 1000, abortSignal);\n const headers = {\n \"user-agent\": userAgent\n };\n if (origin) {\n headers[\"origin\"] = origin;\n }\n // we set our own Authentication headers, so username and password must be\n // removed from the url. (The values have already been copied to the options)\n url.password = url.username = \"\";\n BaseHandler.setAuthHeaders(forkingOptions, headers);\n BaseHandler.setUserHeaders(forkingOptions, headers, !url.host.endsWith(\".infura.io\"));\n this.headers = headers;\n }\n /**\n * Adds Authorization headers from the given options to the provided `headers`\n * object. Overwrites an existing `Authorization` header value.\n *\n * @param options\n * @param headers\n */\n static setAuthHeaders(options, headers) {\n if (options.username != null || options.password != null) {\n if (options.jwt != null)\n throw new Error(INVALID_AUTH_ERROR);\n headers.authorization = `Basic ${Buffer.from(`${options.username || \"\"}:${options.password || \"\"}`).toString(\"base64\")}`;\n }\n else if (options.jwt) {\n headers.authorization = `Bearer ${options.jwt}`;\n }\n }\n /**\n * Adds user provided headers to the provided `headers`\n * object.\n *\n * If the headers already contain an existing `Authorization` header\n * value and the incoming values have compatible schemes\n * (Bearer===Bearer, Basic===Basic) the values are merged. Note: if the\n * `permitMultiAuth` option is `false` Bearer tokens can not be merged.\n *\n * @param options\n * @param headers\n * @param permitMultiAuth\n */\n static setUserHeaders(options, headers, permitMultiAuth) {\n // copy the user-provided headers over to the connection's headers\n const userHeaders = options.headers;\n if (userHeaders) {\n for (let i = 0, l = userHeaders.length; i < l; i++) {\n let { name, value } = userHeaders[i];\n const key = name.toLowerCase();\n // if the user specified multiple Authentication headers (.e.g, via\n // username/password or the jwt field) we need to join them when\n // they are both of the same scheme, otherwise we throw an exception.\n if (key === \"authorization\" && \"authorization\" in headers) {\n if (!permitMultiAuth) {\n throw new Error(`Authentication with multiple auth-params is not allowed.`);\n }\n const currentScheme = headers.authorization.split(\" \", 1)[0];\n const [incomingScheme, authParams] = value.split(/\\.(?:.+)/);\n if (incomingScheme.toLowerCase() === currentScheme.toLowerCase()) {\n headers.authorization += \",\" + authParams;\n }\n else {\n throw new Error(`Authentication via both ${currentScheme} and ${incomingScheme} is not allowed.`);\n }\n }\n else {\n headers[key] = value;\n }\n }\n }\n }\n}\nexports.BaseHandler = BaseHandler;\nBaseHandler.JSONRPC_PREFIX = '{\"jsonrpc\":\"2.0\",\"id\":';\n//# sourceMappingURL=base-handler.js.map","/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t\tvar getStopIterationIterator = function (iterator) {\n\t\t\t\tvar done = false;\n\t\t\t\treturn {\n\t\t\t\t\tnext: function next() {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: done,\n\t\t\t\t\t\t\t\tvalue: done ? undefined : iterator.next()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: true,\n\t\t\t\t\t\t\t\tvalue: undefined\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\n\n// eslint-disable-next-line global-require\nvar toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isarray\n\nmodule.exports = $Array.isArray || function IsArray(argument) {\n\treturn toStr(argument) === '[object Array]';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\n\nvar has = require('has');\n\nvar predicates = {\n\t// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type\n\t'Property Descriptor': function isPropertyDescriptor(Type, Desc) {\n\t\tif (Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t}\n};\n\nmodule.exports = function assertRecord(Type, recordType, argumentName, value) {\n\tvar predicate = predicates[recordType];\n\tif (typeof predicate !== 'function') {\n\t\tthrow new $SyntaxError('unknown record type: ' + recordType);\n\t}\n\tif (!predicate(Type, value)) {\n\t\tthrow new $TypeError(argumentName + ' must be a ' + recordType);\n\t}\n};\n","/*\n * This file is the entry point for the resultant bundle dist/node/ganache.min.js\n * dist/cli/ganache.min.js will then point to dist/node/ganache.min.js\n * whenever it references @ganache/core.\n * This is so we avoid an extra set of native node modules in dist/cli, just use what's in dist/node.\n */\nexport {\n Server,\n Provider,\n ServerOptions,\n ProviderOptions,\n server,\n provider\n} from \"@ganache/core\";\nimport Ganache from \"@ganache/core\";\nexport default Ganache;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.keccak = void 0;\nconst keccak_1 = __importDefault(require(\"keccak\"));\nconst RATE = 1088;\nconst CAPACITY = 512;\nconst instance = keccak_1.default(\"keccak256\");\n/**\n * keccak256, but faster if you use it a lot.\n * @param buffer\n */\nfunction keccak(buffer) {\n instance._state.absorb(buffer);\n const digest = instance._state.squeeze(32);\n // reset and remove result from memory\n instance._state.initialize(RATE, CAPACITY);\n // make this re-usable\n instance._finalized = false;\n return digest;\n}\nexports.keccak = keccak;\n//# sourceMappingURL=keccak.js.map","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomNumberGenerator = void 0;\nconst seedrandom_1 = __importDefault(require(\"seedrandom\"));\nclass RandomNumberGenerator {\n // I was planning on using `state` here to restore the RNG\n // from a saved state (via the db on run or upon a revert),\n // but this functionality was postponed. I'm keeping the arg\n // here as it still applies and is valid code.\n // https://github.com/trufflesuite/ganache-core/issues/756\n constructor(seed, state) {\n if (typeof seed === \"string\" && typeof state === \"undefined\") {\n this.rng = seedrandom_1.default.alea(seed, { state: true });\n }\n else if (typeof state === \"object\") {\n // We can ignore seed even if it was provided.\n // The user is reseeding the rng from a prior state,\n // so let's initialize accordingly\n this.rng = seedrandom_1.default.alea(\"\", { state });\n }\n else {\n const entropy = Math.random() * Date.now();\n this.rng = seedrandom_1.default.alea(`${entropy}`, { state: true });\n }\n }\n getNumber(upperExclusiveBound = 1) {\n // I believe this check may be a tiny bit faster than\n // always multiplying by 1\n if (upperExclusiveBound !== 1) {\n return this.rng() * upperExclusiveBound;\n }\n else {\n return this.rng();\n }\n }\n getNumbers(length, upperExclusiveBound = 1) {\n const numbers = [];\n for (let i = 0; i < length; i++) {\n numbers.push(this.getNumber(upperExclusiveBound));\n }\n return numbers;\n }\n getBuffer(length) {\n return Buffer.from(this.getNumbers(length, 256));\n }\n state() {\n return this.rng.state();\n }\n}\nexports.RandomNumberGenerator = RandomNumberGenerator;\n//# sourceMappingURL=random-number-generator.js.map","// A port of an algorithm by Johannes Baagøe , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","module.exports = require('./lib')(require('./lib/elliptic'))\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\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","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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\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 ? '';\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","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof global[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new global[typedArray]();\n\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t}\n\t\tvar proto = getPrototypeOf(arr);\n\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\tif (!descriptor) {\n\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t}\n\t\ttoStrTags[typedArray] = descriptor.get;\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN\n .muln(2)\n .addn(35)\n .addn(recovery)\n .toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64)\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = void 0;\nvar Tag;\n(function (Tag) {\n Tag[\"EARLIEST\"] = \"earliest\";\n Tag[\"LATEST\"] = \"latest\";\n Tag[\"PENDING\"] = \"pending\";\n})(Tag = exports.Tag || (exports.Tag = {}));\nvar _Tag;\n(function (_Tag) {\n _Tag[_Tag[\"earliest\"] = 0] = \"earliest\";\n _Tag[_Tag[\"latest\"] = 1] = \"latest\";\n _Tag[_Tag[\"pending\"] = 2] = \"pending\";\n})(_Tag || (_Tag = {}));\n(function (Tag) {\n function normalize(tag) {\n if (typeof tag === \"string\") {\n return Tag[tag.toUpperCase()];\n }\n else {\n switch (tag) {\n case _Tag.earliest:\n return Tag.EARLIEST;\n case _Tag.latest:\n return Tag.LATEST;\n case _Tag.pending:\n return Tag.PENDING;\n }\n }\n }\n Tag.normalize = normalize;\n})(Tag = exports.Tag || (exports.Tag = {}));\n//# sourceMappingURL=tags.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","module.exports = require('./lib')(require('./lib/elliptic'))\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\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","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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN\n .muln(2)\n .addn(35)\n .addn(recovery)\n .toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64)\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","module.exports = require('./lib')(require('./lib/elliptic'))\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","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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN\n .muln(2)\n .addn(35)\n .addn(recovery)\n .toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64)\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\n}\n","module.exports = require('./lib/api')(require('./lib/keccak'))\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN\n .muln(2)\n .addn(35)\n .addn(recovery)\n .toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64)\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethUtil = require(\"ethereumjs-util\");\nvar ethAbi = require(\"ethereumjs-abi\");\nvar nacl = require(\"tweetnacl\");\nvar naclUtil = require(\"tweetnacl-util\");\nvar TYPED_MESSAGE_SCHEMA = {\n type: 'object',\n properties: {\n types: {\n type: 'object',\n additionalProperties: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n type: { type: 'string' },\n },\n required: ['name', 'type'],\n },\n },\n },\n primaryType: { type: 'string' },\n domain: { type: 'object' },\n message: { type: 'object' },\n },\n required: ['types', 'primaryType', 'domain', 'message'],\n};\nexports.TYPED_MESSAGE_SCHEMA = TYPED_MESSAGE_SCHEMA;\n/**\n * A collection of utility functions used for signing typed data\n */\nvar TypedDataUtils = {\n /**\n * Encodes an object by encoding and concatenating each of its members\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to encode\n * @param {Object} types - Type definitions\n * @returns {Buffer} - Encoded representation of an object\n */\n encodeData: function (primaryType, data, types, useV4) {\n var _this = this;\n if (useV4 === void 0) { useV4 = true; }\n var encodedTypes = ['bytes32'];\n var encodedValues = [this.hashType(primaryType, types)];\n if (useV4) {\n var encodeField_1 = function (name, type, value) {\n if (types[type] !== undefined) {\n // eslint-disable-next-line no-eq-null\n return ['bytes32', value == null ?\n '0x0000000000000000000000000000000000000000000000000000000000000000' :\n ethUtil.sha3(_this.encodeData(type, value, types, useV4))];\n }\n if (value === undefined) {\n throw new Error(\"missing value for field \" + name + \" of type \" + type);\n }\n if (type === 'bytes') {\n return ['bytes32', ethUtil.sha3(value)];\n }\n if (type === 'string') {\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8');\n }\n return ['bytes32', ethUtil.sha3(value)];\n }\n if (type.lastIndexOf(']') === type.length - 1) {\n var parsedType_1 = type.slice(0, type.lastIndexOf('['));\n var typeValuePairs = value.map(function (item) { return encodeField_1(name, parsedType_1, item); });\n return ['bytes32', ethUtil.sha3(ethAbi.rawEncode(typeValuePairs.map(function (_a) {\n var t = _a[0];\n return t;\n }), typeValuePairs.map(function (_a) {\n var v = _a[1];\n return v;\n })))];\n }\n return [type, value];\n };\n for (var _i = 0, _a = types[primaryType]; _i < _a.length; _i++) {\n var field = _a[_i];\n var _b = encodeField_1(field.name, field.type, data[field.name]), type = _b[0], value = _b[1];\n encodedTypes.push(type);\n encodedValues.push(value);\n }\n }\n else {\n for (var _c = 0, _d = types[primaryType]; _c < _d.length; _c++) {\n var field = _d[_c];\n var value = data[field.name];\n if (value !== undefined) {\n if (field.type === 'bytes') {\n encodedTypes.push('bytes32');\n value = ethUtil.sha3(value);\n encodedValues.push(value);\n }\n else if (field.type === 'string') {\n encodedTypes.push('bytes32');\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8');\n }\n value = ethUtil.sha3(value);\n encodedValues.push(value);\n }\n else if (types[field.type] !== undefined) {\n encodedTypes.push('bytes32');\n value = ethUtil.sha3(this.encodeData(field.type, value, types, useV4));\n encodedValues.push(value);\n }\n else if (field.type.lastIndexOf(']') === field.type.length - 1) {\n throw new Error('Arrays currently unimplemented in encodeData');\n }\n else {\n encodedTypes.push(field.type);\n encodedValues.push(value);\n }\n }\n }\n }\n return ethAbi.rawEncode(encodedTypes, encodedValues);\n },\n /**\n * Encodes the type of an object by encoding a comma delimited list of its members\n *\n * @param {string} primaryType - Root type to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of the type of an object\n */\n encodeType: function (primaryType, types) {\n var result = '';\n var deps = this.findTypeDependencies(primaryType, types).filter(function (dep) { return dep !== primaryType; });\n deps = [primaryType].concat(deps.sort());\n for (var _i = 0, deps_1 = deps; _i < deps_1.length; _i++) {\n var type = deps_1[_i];\n var children = types[type];\n if (!children) {\n throw new Error(\"No type definition specified: \" + type);\n }\n result += type + \"(\" + types[type].map(function (_a) {\n var name = _a.name, t = _a.type;\n return t + \" \" + name;\n }).join(',') + \")\";\n }\n return result;\n },\n /**\n * Finds all types within a type definition object\n *\n * @param {string} primaryType - Root type\n * @param {Object} types - Type definitions\n * @param {Array} results - current set of accumulated types\n * @returns {Array} - Set of all types found in the type definition\n */\n findTypeDependencies: function (primaryType, types, results) {\n if (results === void 0) { results = []; }\n primaryType = primaryType.match(/^\\w*/u)[0];\n if (results.includes(primaryType) || types[primaryType] === undefined) {\n return results;\n }\n results.push(primaryType);\n for (var _i = 0, _a = types[primaryType]; _i < _a.length; _i++) {\n var field = _a[_i];\n for (var _b = 0, _c = this.findTypeDependencies(field.type, types, results); _b < _c.length; _b++) {\n var dep = _c[_b];\n !results.includes(dep) && results.push(dep);\n }\n }\n return results;\n },\n /**\n * Hashes an object\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to hash\n * @param {Object} types - Type definitions\n * @returns {Buffer} - Hash of an object\n */\n hashStruct: function (primaryType, data, types, useV4) {\n if (useV4 === void 0) { useV4 = true; }\n return ethUtil.sha3(this.encodeData(primaryType, data, types, useV4));\n },\n /**\n * Hashes the type of an object\n *\n * @param {string} primaryType - Root type to hash\n * @param {Object} types - Type definitions\n * @returns {Buffer} - Hash of an object\n */\n hashType: function (primaryType, types) {\n return ethUtil.sha3(this.encodeType(primaryType, types));\n },\n /**\n * Removes properties from a message object that are not defined per EIP-712\n *\n * @param {Object} data - typed message object\n * @returns {Object} - typed message object with only allowed fields\n */\n sanitizeData: function (data) {\n var sanitizedData = {};\n for (var key in TYPED_MESSAGE_SCHEMA.properties) {\n if (data[key]) {\n sanitizedData[key] = data[key];\n }\n }\n if ('types' in sanitizedData) {\n sanitizedData.types = __assign({ EIP712Domain: [] }, sanitizedData.types);\n }\n return sanitizedData;\n },\n /**\n * Signs a typed message as per EIP-712 and returns its sha3 hash\n *\n * @param {Object} typedData - Types message data to sign\n * @returns {Buffer} - sha3 hash of the resulting signed message\n */\n sign: function (typedData, useV4) {\n if (useV4 === void 0) { useV4 = true; }\n var sanitizedData = this.sanitizeData(typedData);\n var parts = [Buffer.from('1901', 'hex')];\n parts.push(this.hashStruct('EIP712Domain', sanitizedData.domain, sanitizedData.types, useV4));\n if (sanitizedData.primaryType !== 'EIP712Domain') {\n parts.push(this.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, useV4));\n }\n return ethUtil.sha3(Buffer.concat(parts));\n },\n};\nexports.TypedDataUtils = TypedDataUtils;\nfunction concatSig(v, r, s) {\n var rSig = ethUtil.fromSigned(r);\n var sSig = ethUtil.fromSigned(s);\n var vSig = ethUtil.bufferToInt(v);\n var rStr = padWithZeroes(ethUtil.toUnsigned(rSig).toString('hex'), 64);\n var sStr = padWithZeroes(ethUtil.toUnsigned(sSig).toString('hex'), 64);\n var vStr = ethUtil.stripHexPrefix(ethUtil.intToHex(vSig));\n return ethUtil.addHexPrefix(rStr.concat(sStr, vStr)).toString('hex');\n}\nexports.concatSig = concatSig;\nfunction normalize(input) {\n if (!input) {\n return undefined;\n }\n if (typeof input === 'number') {\n var buffer = ethUtil.toBuffer(input);\n input = ethUtil.bufferToHex(buffer);\n }\n if (typeof input !== 'string') {\n var msg = 'eth-sig-util.normalize() requires hex string or integer input.';\n msg += \" received \" + typeof input + \": \" + input;\n throw new Error(msg);\n }\n return ethUtil.addHexPrefix(input.toLowerCase());\n}\nexports.normalize = normalize;\nfunction personalSign(privateKey, msgParams) {\n var message = ethUtil.toBuffer(msgParams.data);\n var msgHash = ethUtil.hashPersonalMessage(message);\n var sig = ethUtil.ecsign(msgHash, privateKey);\n var serialized = ethUtil.bufferToHex(concatSig(sig.v, sig.r, sig.s));\n return serialized;\n}\nexports.personalSign = personalSign;\nfunction recoverPersonalSignature(msgParams) {\n var publicKey = getPublicKeyFor(msgParams);\n var sender = ethUtil.publicToAddress(publicKey);\n var senderHex = ethUtil.bufferToHex(sender);\n return senderHex;\n}\nexports.recoverPersonalSignature = recoverPersonalSignature;\nfunction extractPublicKey(msgParams) {\n var publicKey = getPublicKeyFor(msgParams);\n return \"0x\" + publicKey.toString('hex');\n}\nexports.extractPublicKey = extractPublicKey;\nfunction externalTypedSignatureHash(typedData) {\n var hashBuffer = typedSignatureHash(typedData);\n return ethUtil.bufferToHex(hashBuffer);\n}\nexports.typedSignatureHash = externalTypedSignatureHash;\nfunction signTypedDataLegacy(privateKey, msgParams) {\n var msgHash = typedSignatureHash(msgParams.data);\n var sig = ethUtil.ecsign(msgHash, privateKey);\n return ethUtil.bufferToHex(concatSig(sig.v, sig.r, sig.s));\n}\nexports.signTypedDataLegacy = signTypedDataLegacy;\nfunction recoverTypedSignatureLegacy(msgParams) {\n var msgHash = typedSignatureHash(msgParams.data);\n var publicKey = recoverPublicKey(msgHash, msgParams.sig);\n var sender = ethUtil.publicToAddress(publicKey);\n return ethUtil.bufferToHex(sender);\n}\nexports.recoverTypedSignatureLegacy = recoverTypedSignatureLegacy;\nfunction encrypt(receiverPublicKey, msgParams, version) {\n switch (version) {\n case 'x25519-xsalsa20-poly1305': {\n if (typeof msgParams.data !== 'string') {\n throw new Error('Cannot detect secret message, message params should be of the form {data: \"secret message\"} ');\n }\n // generate ephemeral keypair\n var ephemeralKeyPair = nacl.box.keyPair();\n // assemble encryption parameters - from string to UInt8\n var pubKeyUInt8Array = void 0;\n try {\n pubKeyUInt8Array = naclUtil.decodeBase64(receiverPublicKey);\n }\n catch (err) {\n throw new Error('Bad public key');\n }\n var msgParamsUInt8Array = naclUtil.decodeUTF8(msgParams.data);\n var nonce = nacl.randomBytes(nacl.box.nonceLength);\n // encrypt\n var encryptedMessage = nacl.box(msgParamsUInt8Array, nonce, pubKeyUInt8Array, ephemeralKeyPair.secretKey);\n // handle encrypted data\n var output = {\n version: 'x25519-xsalsa20-poly1305',\n nonce: naclUtil.encodeBase64(nonce),\n ephemPublicKey: naclUtil.encodeBase64(ephemeralKeyPair.publicKey),\n ciphertext: naclUtil.encodeBase64(encryptedMessage),\n };\n // return encrypted msg data\n return output;\n }\n default:\n throw new Error('Encryption type/version not supported');\n }\n}\nexports.encrypt = encrypt;\nfunction encryptSafely(receiverPublicKey, msgParams, version) {\n var DEFAULT_PADDING_LENGTH = Math.pow(2, 11);\n var NACL_EXTRA_BYTES = 16;\n var data = msgParams.data;\n if (!data) {\n throw new Error('Cannot encrypt empty msg.data');\n }\n if (typeof data === 'object' && 'toJSON' in data) {\n // remove toJSON attack vector\n // TODO, check all possible children\n throw new Error('Cannot encrypt with toJSON property. Please remove toJSON property');\n }\n // add padding\n var dataWithPadding = {\n data: data,\n padding: '',\n };\n // calculate padding\n var dataLength = Buffer.byteLength(JSON.stringify(dataWithPadding), 'utf-8');\n var modVal = dataLength % DEFAULT_PADDING_LENGTH;\n var padLength = 0;\n // Only pad if necessary\n if (modVal > 0) {\n padLength = DEFAULT_PADDING_LENGTH - modVal - NACL_EXTRA_BYTES; // nacl extra bytes\n }\n dataWithPadding.padding = '0'.repeat(padLength);\n var paddedMsgParams = { data: JSON.stringify(dataWithPadding) };\n return encrypt(receiverPublicKey, paddedMsgParams, version);\n}\nexports.encryptSafely = encryptSafely;\nfunction decrypt(encryptedData, receiverPrivateKey) {\n switch (encryptedData.version) {\n case 'x25519-xsalsa20-poly1305': {\n // string to buffer to UInt8Array\n var recieverPrivateKeyUint8Array = nacl_decodeHex(receiverPrivateKey);\n var recieverEncryptionPrivateKey = nacl.box.keyPair.fromSecretKey(recieverPrivateKeyUint8Array).secretKey;\n // assemble decryption parameters\n var nonce = naclUtil.decodeBase64(encryptedData.nonce);\n var ciphertext = naclUtil.decodeBase64(encryptedData.ciphertext);\n var ephemPublicKey = naclUtil.decodeBase64(encryptedData.ephemPublicKey);\n // decrypt\n var decryptedMessage = nacl.box.open(ciphertext, nonce, ephemPublicKey, recieverEncryptionPrivateKey);\n // return decrypted msg data\n var output = void 0;\n try {\n output = naclUtil.encodeUTF8(decryptedMessage);\n }\n catch (err) {\n throw new Error('Decryption failed.');\n }\n if (output) {\n return output;\n }\n throw new Error('Decryption failed.');\n }\n default:\n throw new Error('Encryption type/version not supported.');\n }\n}\nexports.decrypt = decrypt;\nfunction decryptSafely(encryptedData, receiverPrivateKey) {\n var dataWithPadding = JSON.parse(decrypt(encryptedData, receiverPrivateKey));\n return dataWithPadding.data;\n}\nexports.decryptSafely = decryptSafely;\nfunction getEncryptionPublicKey(privateKey) {\n var privateKeyUint8Array = nacl_decodeHex(privateKey);\n var encryptionPublicKey = nacl.box.keyPair.fromSecretKey(privateKeyUint8Array).publicKey;\n return naclUtil.encodeBase64(encryptionPublicKey);\n}\nexports.getEncryptionPublicKey = getEncryptionPublicKey;\n/**\n * A generic entry point for all typed data methods to be passed, includes a version parameter.\n */\nfunction signTypedMessage(privateKey, msgParams, version) {\n if (version === void 0) { version = 'V4'; }\n switch (version) {\n case 'V1':\n return signTypedDataLegacy(privateKey, msgParams);\n case 'V3':\n return signTypedData(privateKey, msgParams);\n case 'V4':\n default:\n return signTypedData_v4(privateKey, msgParams);\n }\n}\nexports.signTypedMessage = signTypedMessage;\nfunction recoverTypedMessage(msgParams, version) {\n if (version === void 0) { version = 'V4'; }\n switch (version) {\n case 'V1':\n return recoverTypedSignatureLegacy(msgParams);\n case 'V3':\n return recoverTypedSignature(msgParams);\n case 'V4':\n default:\n return recoverTypedSignature_v4(msgParams);\n }\n}\nexports.recoverTypedMessage = recoverTypedMessage;\nfunction signTypedData(privateKey, msgParams) {\n var message = TypedDataUtils.sign(msgParams.data, false);\n var sig = ethUtil.ecsign(message, privateKey);\n return ethUtil.bufferToHex(concatSig(sig.v, sig.r, sig.s));\n}\nexports.signTypedData = signTypedData;\nfunction signTypedData_v4(privateKey, msgParams) {\n var message = TypedDataUtils.sign(msgParams.data);\n var sig = ethUtil.ecsign(message, privateKey);\n return ethUtil.bufferToHex(concatSig(sig.v, sig.r, sig.s));\n}\nexports.signTypedData_v4 = signTypedData_v4;\nfunction recoverTypedSignature(msgParams) {\n var message = TypedDataUtils.sign(msgParams.data, false);\n var publicKey = recoverPublicKey(message, msgParams.sig);\n var sender = ethUtil.publicToAddress(publicKey);\n return ethUtil.bufferToHex(sender);\n}\nexports.recoverTypedSignature = recoverTypedSignature;\nfunction recoverTypedSignature_v4(msgParams) {\n var message = TypedDataUtils.sign(msgParams.data);\n var publicKey = recoverPublicKey(message, msgParams.sig);\n var sender = ethUtil.publicToAddress(publicKey);\n return ethUtil.bufferToHex(sender);\n}\nexports.recoverTypedSignature_v4 = recoverTypedSignature_v4;\n/**\n * @param typedData - Array of data along with types, as per EIP712.\n * @returns Buffer\n */\nfunction typedSignatureHash(typedData) {\n var error = new Error('Expect argument to be non-empty array');\n if (typeof typedData !== 'object' || !('length' in typedData) || !typedData.length) {\n throw error;\n }\n var data = typedData.map(function (e) {\n return e.type === 'bytes' ? ethUtil.toBuffer(e.value) : e.value;\n });\n var types = typedData.map(function (e) {\n return e.type;\n });\n var schema = typedData.map(function (e) {\n if (!e.name) {\n throw error;\n }\n return e.type + \" \" + e.name;\n });\n return ethAbi.soliditySHA3(['bytes32', 'bytes32'], [\n ethAbi.soliditySHA3(new Array(typedData.length).fill('string'), schema),\n ethAbi.soliditySHA3(types, data),\n ]);\n}\nfunction recoverPublicKey(hash, sig) {\n var signature = ethUtil.toBuffer(sig);\n var sigParams = ethUtil.fromRpcSig(signature);\n return ethUtil.ecrecover(hash, sigParams.v, sigParams.r, sigParams.s);\n}\nfunction getPublicKeyFor(msgParams) {\n var message = ethUtil.toBuffer(msgParams.data);\n var msgHash = ethUtil.hashPersonalMessage(message);\n return recoverPublicKey(msgHash, msgParams.sig);\n}\nfunction padWithZeroes(number, length) {\n var myString = \"\" + number;\n while (myString.length < length) {\n myString = \"0\" + myString;\n }\n return myString;\n}\n// converts hex strings to the Uint8Array format used by nacl\nfunction nacl_decodeHex(msgHex) {\n var msgBase64 = Buffer.from(msgHex, 'hex').toString('base64');\n return naclUtil.decodeBase64(msgBase64);\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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 ? '';\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.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","'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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","// A port of an algorithm by Johannes Baagøe , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A port of an algorithm by Johannes Baagøe , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar 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\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar Semaphore_1 = require(\"./Semaphore\");\n/**\n * A lock that can be used to synchronize critical sections in your code.\n * For more details on how to use this class, please view the documentation\n * of the Semaphore class from which Lock inherits.\n */\nvar Lock = (function (_super) {\n __extends(Lock, _super);\n /**\n * Creates a lock.\n */\n function Lock() {\n return _super.call(this, 1) || this;\n }\n return Lock;\n}(Semaphore_1[\"default\"]));\nexports.Lock = Lock;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert_1.default(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert_1.default(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert_1.default(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert_1.default(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert_1.default(bn_js_1.default.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert_1.default(Buffer.isBuffer(salt));\n assert_1.default(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress() {\n const addressBN = new bn_js_1.default(this.buf);\n const rangeMin = new bn_js_1.default(0);\n const rangeMax = new bn_js_1.default('ffff', 'hex');\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax);\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64),\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","var nextTick = require('./next-tick')\n\nfunction AbstractIterator (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._ended = false\n this._nexting = false\n}\n\nAbstractIterator.prototype.next = function (callback) {\n var self = this\n\n if (typeof callback !== 'function') {\n throw new Error('next() requires a callback argument')\n }\n\n if (self._ended) {\n nextTick(callback, new Error('cannot call next() after end()'))\n return self\n }\n\n if (self._nexting) {\n nextTick(callback, new Error('cannot call next() before previous next() has completed'))\n return self\n }\n\n self._nexting = true\n self._next(function () {\n self._nexting = false\n callback.apply(null, arguments)\n })\n\n return self\n}\n\nAbstractIterator.prototype._next = function (callback) {\n nextTick(callback)\n}\n\nAbstractIterator.prototype.seek = function (target) {\n if (this._ended) {\n throw new Error('cannot call seek() after end()')\n }\n if (this._nexting) {\n throw new Error('cannot call seek() before next() has completed')\n }\n\n target = this.db._serializeKey(target)\n this._seek(target)\n}\n\nAbstractIterator.prototype._seek = function (target) {}\n\nAbstractIterator.prototype.end = function (callback) {\n if (typeof callback !== 'function') {\n throw new Error('end() requires a callback argument')\n }\n\n if (this._ended) {\n return nextTick(callback, new Error('end() already called on iterator'))\n }\n\n this._ended = true\n this._end(callback)\n}\n\nAbstractIterator.prototype._end = function (callback) {\n nextTick(callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractIterator.prototype._nextTick = nextTick\n\nmodule.exports = AbstractIterator\n","module.exports = require('immediate')\n","'use strict';\nvar types = [\n require('./nextTick'),\n require('./queueMicrotask'),\n require('./mutation.js'),\n require('./messageChannel'),\n require('./stateChange'),\n require('./timeout')\n];\nvar draining;\nvar currentQueue;\nvar queueIndex = -1;\nvar queue = [];\nvar scheduled = false;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n nextTick();\n }\n}\n\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n if (draining) {\n return;\n }\n scheduled = false;\n draining = true;\n var len = queue.length;\n var timeout = setTimeout(cleanUpNextTick);\n while (len) {\n currentQueue = queue;\n queue = [];\n while (currentQueue && ++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n queueIndex = -1;\n draining = false;\n clearTimeout(timeout);\n}\nvar scheduleDrain;\nvar i = -1;\nvar len = types.length;\nwhile (++i < len) {\n if (types[i] && types[i].test && types[i].test()) {\n scheduleDrain = types[i].install(nextTick);\n break;\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n var fun = this.fun;\n var array = this.array;\n switch (array.length) {\n case 0:\n return fun();\n case 1:\n return fun(array[0]);\n case 2:\n return fun(array[0], array[1]);\n case 3:\n return fun(array[0], array[1], array[2]);\n default:\n return fun.apply(null, array);\n }\n\n};\nmodule.exports = immediate;\nfunction immediate(task) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(task, args));\n if (!scheduled && !draining) {\n scheduled = true;\n scheduleDrain();\n }\n}\n","var nextTick = require('./next-tick')\n\nfunction AbstractChainedBatch (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._operations = []\n this._written = false\n}\n\nAbstractChainedBatch.prototype._checkWritten = function () {\n if (this._written) {\n throw new Error('write() already called on this batch')\n }\n}\n\nAbstractChainedBatch.prototype.put = function (key, value) {\n this._checkWritten()\n\n var err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n value = this.db._serializeValue(value)\n\n this._put(key, value)\n\n return this\n}\n\nAbstractChainedBatch.prototype._put = function (key, value) {\n this._operations.push({ type: 'put', key: key, value: value })\n}\n\nAbstractChainedBatch.prototype.del = function (key) {\n this._checkWritten()\n\n var err = this.db._checkKey(key)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n this._del(key)\n\n return this\n}\n\nAbstractChainedBatch.prototype._del = function (key) {\n this._operations.push({ type: 'del', key: key })\n}\n\nAbstractChainedBatch.prototype.clear = function () {\n this._checkWritten()\n this._clear()\n\n return this\n}\n\nAbstractChainedBatch.prototype._clear = function () {\n this._operations = []\n}\n\nAbstractChainedBatch.prototype.write = function (options, callback) {\n this._checkWritten()\n\n if (typeof options === 'function') { callback = options }\n if (typeof callback !== 'function') {\n throw new Error('write() requires a callback argument')\n }\n if (typeof options !== 'object' || options === null) {\n options = {}\n }\n\n this._written = true\n this._write(options, callback)\n}\n\nAbstractChainedBatch.prototype._write = function (options, callback) {\n this.db._batch(this._operations, options, callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractChainedBatch.prototype._nextTick = nextTick\n\nmodule.exports = AbstractChainedBatch\n","function promisify () {\n var callback\n var promise = new Promise(function (resolve, reject) {\n callback = function callback (err, value) {\n if (err) reject(err)\n else resolve(value)\n }\n })\n callback.promise = promise\n return callback\n}\n\nmodule.exports = promisify\n","var nextTick = require('./next-tick')\n\nfunction AbstractIterator (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._ended = false\n this._nexting = false\n}\n\nAbstractIterator.prototype.next = function (callback) {\n var self = this\n\n if (typeof callback !== 'function') {\n throw new Error('next() requires a callback argument')\n }\n\n if (self._ended) {\n nextTick(callback, new Error('cannot call next() after end()'))\n return self\n }\n\n if (self._nexting) {\n nextTick(callback, new Error('cannot call next() before previous next() has completed'))\n return self\n }\n\n self._nexting = true\n self._next(function () {\n self._nexting = false\n callback.apply(null, arguments)\n })\n\n return self\n}\n\nAbstractIterator.prototype._next = function (callback) {\n nextTick(callback)\n}\n\nAbstractIterator.prototype.seek = function (target) {\n if (this._ended) {\n throw new Error('cannot call seek() after end()')\n }\n if (this._nexting) {\n throw new Error('cannot call seek() before next() has completed')\n }\n\n target = this.db._serializeKey(target)\n this._seek(target)\n}\n\nAbstractIterator.prototype._seek = function (target) {}\n\nAbstractIterator.prototype.end = function (callback) {\n if (typeof callback !== 'function') {\n throw new Error('end() requires a callback argument')\n }\n\n if (this._ended) {\n return nextTick(callback, new Error('end() already called on iterator'))\n }\n\n this._ended = true\n this._end(callback)\n}\n\nAbstractIterator.prototype._end = function (callback) {\n nextTick(callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractIterator.prototype._nextTick = nextTick\n\nmodule.exports = AbstractIterator\n","module.exports = require('immediate')\n","var nextTick = require('./next-tick')\n\nfunction AbstractChainedBatch (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._operations = []\n this._written = false\n}\n\nAbstractChainedBatch.prototype._checkWritten = function () {\n if (this._written) {\n throw new Error('write() already called on this batch')\n }\n}\n\nAbstractChainedBatch.prototype.put = function (key, value) {\n this._checkWritten()\n\n var err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n value = this.db._serializeValue(value)\n\n this._put(key, value)\n\n return this\n}\n\nAbstractChainedBatch.prototype._put = function (key, value) {\n this._operations.push({ type: 'put', key: key, value: value })\n}\n\nAbstractChainedBatch.prototype.del = function (key) {\n this._checkWritten()\n\n var err = this.db._checkKey(key)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n this._del(key)\n\n return this\n}\n\nAbstractChainedBatch.prototype._del = function (key) {\n this._operations.push({ type: 'del', key: key })\n}\n\nAbstractChainedBatch.prototype.clear = function () {\n this._checkWritten()\n this._clear()\n\n return this\n}\n\nAbstractChainedBatch.prototype._clear = function () {\n this._operations = []\n}\n\nAbstractChainedBatch.prototype.write = function (options, callback) {\n this._checkWritten()\n\n if (typeof options === 'function') { callback = options }\n if (typeof callback !== 'function') {\n throw new Error('write() requires a callback argument')\n }\n if (typeof options !== 'object' || options === null) {\n options = {}\n }\n\n this._written = true\n this._write(options, callback)\n}\n\nAbstractChainedBatch.prototype._write = function (options, callback) {\n this.db._batch(this._operations, options, callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractChainedBatch.prototype._nextTick = nextTick\n\nmodule.exports = AbstractChainedBatch\n","var Buffer = require('buffer').Buffer\n\nexports.utf8 = exports['utf-8'] = {\n encode: function (data) {\n return isBinary(data) ? data : String(data)\n },\n decode: identity,\n buffer: false,\n type: 'utf8'\n}\n\nexports.json = {\n encode: JSON.stringify,\n decode: JSON.parse,\n buffer: false,\n type: 'json'\n}\n\nexports.binary = {\n encode: function (data) {\n return isBinary(data) ? data : Buffer.from(data)\n },\n decode: identity,\n buffer: true,\n type: 'binary'\n}\n\nexports.none = {\n encode: identity,\n decode: identity,\n buffer: false,\n type: 'id'\n}\n\nexports.id = exports.none\n\nvar bufferEncodings = [\n 'hex',\n 'ascii',\n 'base64',\n 'ucs2',\n 'ucs-2',\n 'utf16le',\n 'utf-16le'\n]\n\nbufferEncodings.forEach(function (type) {\n exports[type] = {\n encode: function (data) {\n return isBinary(data) ? data : Buffer.from(data, type)\n },\n decode: function (buffer) {\n return buffer.toString(type)\n },\n buffer: true,\n type: type\n }\n})\n\nfunction identity (value) {\n return value\n}\n\nfunction isBinary (data) {\n return data === undefined || data === null || Buffer.isBuffer(data)\n}\n","var nextTick = require('./next-tick')\n\nfunction AbstractIterator (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._ended = false\n this._nexting = false\n}\n\nAbstractIterator.prototype.next = function (callback) {\n var self = this\n\n if (typeof callback !== 'function') {\n throw new Error('next() requires a callback argument')\n }\n\n if (self._ended) {\n nextTick(callback, new Error('cannot call next() after end()'))\n return self\n }\n\n if (self._nexting) {\n nextTick(callback, new Error('cannot call next() before previous next() has completed'))\n return self\n }\n\n self._nexting = true\n self._next(function () {\n self._nexting = false\n callback.apply(null, arguments)\n })\n\n return self\n}\n\nAbstractIterator.prototype._next = function (callback) {\n nextTick(callback)\n}\n\nAbstractIterator.prototype.seek = function (target) {\n if (this._ended) {\n throw new Error('cannot call seek() after end()')\n }\n if (this._nexting) {\n throw new Error('cannot call seek() before next() has completed')\n }\n\n target = this.db._serializeKey(target)\n this._seek(target)\n}\n\nAbstractIterator.prototype._seek = function (target) {}\n\nAbstractIterator.prototype.end = function (callback) {\n if (typeof callback !== 'function') {\n throw new Error('end() requires a callback argument')\n }\n\n if (this._ended) {\n return nextTick(callback, new Error('end() already called on iterator'))\n }\n\n this._ended = true\n this._end(callback)\n}\n\nAbstractIterator.prototype._end = function (callback) {\n nextTick(callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractIterator.prototype._nextTick = nextTick\n\nmodule.exports = AbstractIterator\n","module.exports = require('immediate')\n","'use strict';\nvar types = [\n require('./nextTick'),\n require('./mutation.js'),\n require('./messageChannel'),\n require('./stateChange'),\n require('./timeout')\n];\nvar draining;\nvar currentQueue;\nvar queueIndex = -1;\nvar queue = [];\nvar scheduled = false;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n nextTick();\n }\n}\n\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n if (draining) {\n return;\n }\n scheduled = false;\n draining = true;\n var len = queue.length;\n var timeout = setTimeout(cleanUpNextTick);\n while (len) {\n currentQueue = queue;\n queue = [];\n while (currentQueue && ++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n queueIndex = -1;\n draining = false;\n clearTimeout(timeout);\n}\nvar scheduleDrain;\nvar i = -1;\nvar len = types.length;\nwhile (++i < len) {\n if (types[i] && types[i].test && types[i].test()) {\n scheduleDrain = types[i].install(nextTick);\n break;\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n var fun = this.fun;\n var array = this.array;\n switch (array.length) {\n case 0:\n return fun();\n case 1:\n return fun(array[0]);\n case 2:\n return fun(array[0], array[1]);\n case 3:\n return fun(array[0], array[1], array[2]);\n default:\n return fun.apply(null, array);\n }\n\n};\nmodule.exports = immediate;\nfunction immediate(task) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(task, args));\n if (!scheduled && !draining) {\n scheduled = true;\n scheduleDrain();\n }\n}\n","var nextTick = require('./next-tick')\n\nfunction AbstractChainedBatch (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._operations = []\n this._written = false\n}\n\nAbstractChainedBatch.prototype._checkWritten = function () {\n if (this._written) {\n throw new Error('write() already called on this batch')\n }\n}\n\nAbstractChainedBatch.prototype.put = function (key, value) {\n this._checkWritten()\n\n var err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n value = this.db._serializeValue(value)\n\n this._put(key, value)\n\n return this\n}\n\nAbstractChainedBatch.prototype._put = function (key, value) {\n this._operations.push({ type: 'put', key: key, value: value })\n}\n\nAbstractChainedBatch.prototype.del = function (key) {\n this._checkWritten()\n\n var err = this.db._checkKey(key)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n this._del(key)\n\n return this\n}\n\nAbstractChainedBatch.prototype._del = function (key) {\n this._operations.push({ type: 'del', key: key })\n}\n\nAbstractChainedBatch.prototype.clear = function () {\n this._checkWritten()\n this._clear()\n\n return this\n}\n\nAbstractChainedBatch.prototype._clear = function () {\n this._operations = []\n}\n\nAbstractChainedBatch.prototype.write = function (options, callback) {\n this._checkWritten()\n\n if (typeof options === 'function') { callback = options }\n if (typeof callback !== 'function') {\n throw new Error('write() requires a callback argument')\n }\n if (typeof options !== 'object' || options === null) {\n options = {}\n }\n\n this._written = true\n this._write(options, callback)\n}\n\nAbstractChainedBatch.prototype._write = function (options, callback) {\n this.db._batch(this._operations, options, callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractChainedBatch.prototype._nextTick = nextTick\n\nmodule.exports = AbstractChainedBatch\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.doKeysMatch = exports.matchingNibbleLength = exports.nibblesToBuffer = exports.bufferToNibbles = void 0;\n/**\n * Converts a buffer to a nibble array.\n * @private\n * @param key\n */\nfunction bufferToNibbles(key) {\n var bkey = Buffer.from(key);\n var nibbles = [];\n for (var i = 0; i < bkey.length; i++) {\n var q = i * 2;\n nibbles[q] = bkey[i] >> 4;\n ++q;\n nibbles[q] = bkey[i] % 16;\n }\n return nibbles;\n}\nexports.bufferToNibbles = bufferToNibbles;\n/**\n * Converts a nibble array into a buffer.\n * @private\n * @param arr - Nibble array\n */\nfunction nibblesToBuffer(arr) {\n var buf = Buffer.alloc(arr.length / 2);\n for (var i = 0; i < buf.length; i++) {\n var q = i * 2;\n buf[i] = (arr[q] << 4) + arr[++q];\n }\n return buf;\n}\nexports.nibblesToBuffer = nibblesToBuffer;\n/**\n * Returns the number of in order matching nibbles of two give nibble arrays.\n * @private\n * @param nib1\n * @param nib2\n */\nfunction matchingNibbleLength(nib1, nib2) {\n var i = 0;\n while (nib1[i] === nib2[i] && nib1.length > i) {\n i++;\n }\n return i;\n}\nexports.matchingNibbleLength = matchingNibbleLength;\n/**\n * Compare two nibble array keys.\n * @param keyA\n * @param keyB\n */\nfunction doKeysMatch(keyA, keyB) {\n var length = matchingNibbleLength(keyA, keyB);\n return length === keyA.length && length === keyB.length;\n}\nexports.doKeysMatch = doKeysMatch;\n//# sourceMappingURL=nibbles.js.map","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var nextTick = require('./next-tick')\n\nfunction AbstractIterator (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._ended = false\n this._nexting = false\n}\n\nAbstractIterator.prototype.next = function (callback) {\n var self = this\n\n if (typeof callback !== 'function') {\n throw new Error('next() requires a callback argument')\n }\n\n if (self._ended) {\n nextTick(callback, new Error('cannot call next() after end()'))\n return self\n }\n\n if (self._nexting) {\n nextTick(callback, new Error('cannot call next() before previous next() has completed'))\n return self\n }\n\n self._nexting = true\n self._next(function () {\n self._nexting = false\n callback.apply(null, arguments)\n })\n\n return self\n}\n\nAbstractIterator.prototype._next = function (callback) {\n nextTick(callback)\n}\n\nAbstractIterator.prototype.seek = function (target) {\n if (this._ended) {\n throw new Error('cannot call seek() after end()')\n }\n if (this._nexting) {\n throw new Error('cannot call seek() before next() has completed')\n }\n\n target = this.db._serializeKey(target)\n this._seek(target)\n}\n\nAbstractIterator.prototype._seek = function (target) {}\n\nAbstractIterator.prototype.end = function (callback) {\n if (typeof callback !== 'function') {\n throw new Error('end() requires a callback argument')\n }\n\n if (this._ended) {\n return nextTick(callback, new Error('end() already called on iterator'))\n }\n\n this._ended = true\n this._end(callback)\n}\n\nAbstractIterator.prototype._end = function (callback) {\n nextTick(callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractIterator.prototype._nextTick = nextTick\n\nmodule.exports = AbstractIterator\n","module.exports = require('immediate')\n","var nextTick = require('./next-tick')\n\nfunction AbstractChainedBatch (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._operations = []\n this._written = false\n}\n\nAbstractChainedBatch.prototype._checkWritten = function () {\n if (this._written) {\n throw new Error('write() already called on this batch')\n }\n}\n\nAbstractChainedBatch.prototype.put = function (key, value) {\n this._checkWritten()\n\n var err = this.db._checkKey(key) || this.db._checkValue(value)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n value = this.db._serializeValue(value)\n\n this._put(key, value)\n\n return this\n}\n\nAbstractChainedBatch.prototype._put = function (key, value) {\n this._operations.push({ type: 'put', key: key, value: value })\n}\n\nAbstractChainedBatch.prototype.del = function (key) {\n this._checkWritten()\n\n var err = this.db._checkKey(key)\n if (err) throw err\n\n key = this.db._serializeKey(key)\n this._del(key)\n\n return this\n}\n\nAbstractChainedBatch.prototype._del = function (key) {\n this._operations.push({ type: 'del', key: key })\n}\n\nAbstractChainedBatch.prototype.clear = function () {\n this._checkWritten()\n this._clear()\n\n return this\n}\n\nAbstractChainedBatch.prototype._clear = function () {\n this._operations = []\n}\n\nAbstractChainedBatch.prototype.write = function (options, callback) {\n this._checkWritten()\n\n if (typeof options === 'function') { callback = options }\n if (typeof callback !== 'function') {\n throw new Error('write() requires a callback argument')\n }\n if (typeof options !== 'object' || options === null) {\n options = {}\n }\n\n this._written = true\n this._write(options, callback)\n}\n\nAbstractChainedBatch.prototype._write = function (options, callback) {\n this.db._batch(this._operations, options, callback)\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractChainedBatch.prototype._nextTick = nextTick\n\nmodule.exports = AbstractChainedBatch\n","/* global IDBKeyRange */\n\n'use strict'\n\nvar ltgt = require('ltgt')\nvar NONE = {}\n\nmodule.exports = function createKeyRange (options) {\n var lower = ltgt.lowerBound(options, NONE)\n var upper = ltgt.upperBound(options, NONE)\n var lowerOpen = ltgt.lowerBoundExclusive(options, NONE)\n var upperOpen = ltgt.upperBoundExclusive(options, NONE)\n\n if (lower !== NONE && upper !== NONE) {\n return IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n } else if (lower !== NONE) {\n return IDBKeyRange.lowerBound(lower, lowerOpen)\n } else if (upper !== NONE) {\n return IDBKeyRange.upperBound(upper, upperOpen)\n } else {\n return null\n }\n}\n","'use strict'\n\nvar Buffer = require('buffer').Buffer\nvar ta2str = (function () {\n if (global.TextDecoder) {\n var decoder = new TextDecoder('utf-8')\n return decoder.decode.bind(decoder)\n } else {\n return function ta2str (ta) {\n return ta2buf(ta).toString()\n }\n }\n})()\n\nvar ab2str = (function () {\n if (global.TextDecoder) {\n var decoder = new TextDecoder('utf-8')\n return decoder.decode.bind(decoder)\n } else {\n return function ab2str (ab) {\n return Buffer.from(ab).toString()\n }\n }\n})()\n\nfunction ta2buf (ta) {\n var buf = Buffer.from(ta.buffer)\n\n if (ta.byteLength === ta.buffer.byteLength) {\n return buf\n } else {\n return buf.slice(ta.byteOffset, ta.byteOffset + ta.byteLength)\n }\n}\n\nmodule.exports = function (data, asBuffer) {\n if (data instanceof Uint8Array) {\n return asBuffer ? ta2buf(data) : ta2str(data)\n } else if (data instanceof ArrayBuffer) {\n return asBuffer ? Buffer.from(data) : ab2str(data)\n } else {\n return asBuffer ? Buffer.from(String(data)) : String(data)\n }\n}\n","/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32;\n(function (factory) {\n\t/*jshint ignore:start */\n\t/*eslint-disable */\n\tif(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n\t\tif('object' === typeof exports) {\n\t\t\tfactory(exports);\n\t\t} else if ('function' === typeof define && define.amd) {\n\t\t\tdefine(function () {\n\t\t\t\tvar module = {};\n\t\t\t\tfactory(module);\n\t\t\t\treturn module;\n\t\t\t});\n\t\t} else {\n\t\t\tfactory(CRC32 = {});\n\t\t}\n\t} else {\n\t\tfactory(CRC32 = {});\n\t}\n\t/*eslint-enable */\n\t/*jshint ignore:end */\n}(function(CRC32) {\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T = signed_crc_table();\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1, L = bstr.length - 1;\n\tfor(var i = 0; i < L;) {\n\t\tC = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF];\n\t\tC = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF];\n\t}\n\tif(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF];\n\treturn C ^ -1;\n}\n\nfunction crc32_buf(buf, seed) {\n\tif(buf.length > 10000) return crc32_buf_8(buf, seed);\n\tvar C = seed ^ -1, L = buf.length - 3;\n\tfor(var i = 0; i < L;) {\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t}\n\twhile(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\treturn C ^ -1;\n}\n\nfunction crc32_buf_8(buf, seed) {\n\tvar C = seed ^ -1, L = buf.length - 7;\n\tfor(var i = 0; i < L;) {\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t}\n\twhile(i < L+7) C = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\treturn C ^ -1;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L=str.length, c, d; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T[(C ^ c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn C ^ -1;\n}\nCRC32.table = T;\n// $FlowIgnore\nCRC32.bstr = crc32_bstr;\n// $FlowIgnore\nCRC32.buf = crc32_buf;\n// $FlowIgnore\nCRC32.str = crc32_str;\n}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert_1.default(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert_1.default(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert_1.default(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert_1.default(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert_1.default(bn_js_1.default.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert_1.default(Buffer.isBuffer(salt));\n assert_1.default(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress() {\n const addressBN = new bn_js_1.default(this.buf);\n const rangeMin = new bn_js_1.default(0);\n const rangeMax = new bn_js_1.default('ffff', 'hex');\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax);\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64),\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert_1.default(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert_1.default(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert_1.default(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert_1.default(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert_1.default(bn_js_1.default.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert_1.default(Buffer.isBuffer(salt));\n assert_1.default(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress() {\n const addressBN = new bn_js_1.default(this.buf);\n const rangeMin = new bn_js_1.default(0);\n const rangeMax = new bn_js_1.default('ffff', 'hex');\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax);\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nconst secp256k1_1 = require(\"ethereum-cryptography/secp256k1\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bytes_1 = require(\"./bytes\");\nconst hash_1 = require(\"./hash\");\nconst helpers_1 = require(\"./helpers\");\nconst types_1 = require(\"./types\");\nfunction ecsign(msgHash, privateKey, chainId) {\n const { signature, recid: recovery } = secp256k1_1.ecdsaSign(msgHash, privateKey);\n const r = Buffer.from(signature.slice(0, 32));\n const s = Buffer.from(signature.slice(32, 64));\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27;\n return { r, s, v };\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer);\n return { r, s, v };\n}\nexports.ecsign = ecsign;\nfunction calculateSigRecovery(v, chainId) {\n const vBN = types_1.toType(v, types_1.TypeOutput.BN);\n if (!chainId) {\n return vBN.subn(27);\n }\n const chainIdBN = types_1.toType(chainId, types_1.TypeOutput.BN);\n return vBN.sub(chainIdBN.muln(2).addn(35));\n}\nfunction isValidSigRecovery(recovery) {\n const rec = new bn_js_1.default(recovery);\n return rec.eqn(0) || rec.eqn(1);\n}\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32)], 64);\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const senderPubKey = secp256k1_1.ecdsaRecover(signature, recovery.toNumber(), msgHash);\n return Buffer.from(secp256k1_1.publicKeyConvert(senderPubKey, false).slice(1));\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n const buf = bytes_1.toBuffer(sig);\n if (buf.length < 65) {\n throw new Error('Invalid signature length');\n }\n let v = bytes_1.bufferToInt(buf.slice(64));\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64),\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n const SECP256K1_N_DIV_2 = new bn_js_1.default('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n const SECP256K1_N = new bn_js_1.default('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBN = new bn_js_1.default(r);\n const sBN = new bn_js_1.default(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n helpers_1.assertIsBuffer(message);\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length.toString()}`, 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\n//# sourceMappingURL=signature.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.doKeysMatch = exports.matchingNibbleLength = exports.nibblesToBuffer = exports.bufferToNibbles = void 0;\n/**\n * Converts a buffer to a nibble array.\n * @private\n * @param key\n */\nfunction bufferToNibbles(key) {\n var bkey = Buffer.from(key);\n var nibbles = [];\n for (var i = 0; i < bkey.length; i++) {\n var q = i * 2;\n nibbles[q] = bkey[i] >> 4;\n ++q;\n nibbles[q] = bkey[i] % 16;\n }\n return nibbles;\n}\nexports.bufferToNibbles = bufferToNibbles;\n/**\n * Converts a nibble array into a buffer.\n * @private\n * @param arr - Nibble array\n */\nfunction nibblesToBuffer(arr) {\n var buf = Buffer.alloc(arr.length / 2);\n for (var i = 0; i < buf.length; i++) {\n var q = i * 2;\n buf[i] = (arr[q] << 4) + arr[++q];\n }\n return buf;\n}\nexports.nibblesToBuffer = nibblesToBuffer;\n/**\n * Returns the number of in order matching nibbles of two give nibble arrays.\n * @private\n * @param nib1\n * @param nib2\n */\nfunction matchingNibbleLength(nib1, nib2) {\n var i = 0;\n while (nib1[i] === nib2[i] && nib1.length > i) {\n i++;\n }\n return i;\n}\nexports.matchingNibbleLength = matchingNibbleLength;\n/**\n * Compare two nibble array keys.\n * @param keyA\n * @param keyB\n */\nfunction doKeysMatch(keyA, keyB) {\n var length = matchingNibbleLength(keyA, keyB);\n return length === keyA.length && length === keyB.length;\n}\nexports.doKeysMatch = doKeysMatch;\n//# sourceMappingURL=nibbles.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar _1 = require(\".\");\nvar DEFAULT_COMMON = new common_1.default({ chain: 'mainnet' });\nvar TransactionFactory = /** @class */ (function () {\n // It is not possible to instantiate a TransactionFactory object.\n function TransactionFactory() {\n }\n /**\n * Create a transaction from a `txData` object\n *\n * @param txData - The transaction data. The `type` field will determine which transaction type is returned (if undefined, creates a legacy transaction)\n * @param txOptions - Options to pass on to the constructor of the transaction\n */\n TransactionFactory.fromTxData = function (txData, txOptions) {\n if (txOptions === void 0) { txOptions = {}; }\n if (!('type' in txData) || txData.type === undefined) {\n // Assume legacy transaction\n return _1.Transaction.fromTxData(txData, txOptions);\n }\n else {\n var txType = new ethereumjs_util_1.BN(ethereumjs_util_1.toBuffer(txData.type)).toNumber();\n if (txType === 0) {\n return _1.Transaction.fromTxData(txData, txOptions);\n }\n else if (txType === 1) {\n return _1.AccessListEIP2930Transaction.fromTxData(txData, txOptions);\n }\n else if (txType === 2) {\n return _1.FeeMarketEIP1559Transaction.fromTxData(txData, txOptions);\n }\n else {\n throw new Error(\"Tx instantiation with type \" + txType + \" not supported\");\n }\n }\n };\n /**\n * This method tries to decode serialized data.\n *\n * @param data - The data Buffer\n * @param txOptions - The transaction options\n */\n TransactionFactory.fromSerializedData = function (data, txOptions) {\n var _a;\n if (txOptions === void 0) { txOptions = {}; }\n var common = (_a = txOptions.common) !== null && _a !== void 0 ? _a : DEFAULT_COMMON;\n if (data[0] <= 0x7f) {\n // It is an EIP-2718 Typed Transaction\n if (!common.isActivatedEIP(2718)) {\n throw new Error('Common support for TypedTransactions (EIP-2718) not activated');\n }\n // Determine the type.\n var EIP = void 0;\n switch (data[0]) {\n case 1:\n EIP = 2930;\n break;\n case 2:\n EIP = 1559;\n break;\n default:\n throw new Error(\"TypedTransaction with ID \" + data[0] + \" unknown\");\n }\n if (!common.isActivatedEIP(EIP)) {\n throw new Error(\"Cannot create TypedTransaction with ID \" + data[0] + \": EIP \" + EIP + \" not activated\");\n }\n if (EIP === 1559) {\n return _1.FeeMarketEIP1559Transaction.fromSerializedTx(data, txOptions);\n }\n else {\n // EIP === 2930\n return _1.AccessListEIP2930Transaction.fromSerializedTx(data, txOptions);\n }\n }\n else {\n return _1.Transaction.fromSerializedTx(data, txOptions);\n }\n };\n /**\n * When decoding a BlockBody, in the transactions field, a field is either:\n * A Buffer (a TypedTransaction - encoded as TransactionType || rlp(TransactionPayload))\n * A Buffer[] (Legacy Transaction)\n * This method returns the right transaction.\n *\n * @param data - A Buffer or Buffer[]\n * @param txOptions - The transaction options\n */\n TransactionFactory.fromBlockBodyData = function (data, txOptions) {\n if (txOptions === void 0) { txOptions = {}; }\n if (Buffer.isBuffer(data)) {\n return this.fromSerializedData(data, txOptions);\n }\n else if (Array.isArray(data)) {\n // It is a legacy transaction\n return _1.Transaction.fromValuesArray(data, txOptions);\n }\n else {\n throw new Error('Cannot decode transaction: unknown type input');\n }\n };\n /**\n * This helper method allows one to retrieve the class which matches the transactionID\n * If transactionID is undefined, returns the legacy transaction class.\n * @deprecated - This method is deprecated and will be removed on the next major release\n * @param transactionID\n * @param common\n */\n TransactionFactory.getTransactionClass = function (transactionID, common) {\n if (transactionID === void 0) { transactionID = 0; }\n var usedCommon = common !== null && common !== void 0 ? common : DEFAULT_COMMON;\n if (transactionID !== 0) {\n if (!usedCommon.isActivatedEIP(2718)) {\n throw new Error('Common support for TypedTransactions (EIP-2718) not activated');\n }\n }\n var legacyTxn = transactionID == 0 || (transactionID >= 0x80 && transactionID <= 0xff);\n if (legacyTxn) {\n return _1.Transaction;\n }\n switch (transactionID) {\n case 1:\n return _1.AccessListEIP2930Transaction;\n case 2:\n return _1.FeeMarketEIP1559Transaction;\n default:\n throw new Error(\"TypedTransaction with ID \" + transactionID + \" unknown\");\n }\n };\n return TransactionFactory;\n}());\nexports.default = TransactionFactory;\n//# sourceMappingURL=transactionFactory.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lru_cache_1 = __importDefault(require(\"lru-cache\"));\n/**\n * Simple LRU Cache that allows for keys of type Buffer\n * @hidden\n */\nvar Cache = /** @class */ (function () {\n function Cache(opts) {\n this._cache = new lru_cache_1.default(opts);\n }\n Cache.prototype.set = function (key, value) {\n if (key instanceof Buffer) {\n key = key.toString('hex');\n }\n this._cache.set(key, value);\n };\n Cache.prototype.get = function (key) {\n if (key instanceof Buffer) {\n key = key.toString('hex');\n }\n return this._cache.get(key);\n };\n Cache.prototype.del = function (key) {\n if (key instanceof Buffer) {\n key = key.toString('hex');\n }\n this._cache.del(key);\n };\n return Cache;\n}());\nexports.default = Cache;\n//# sourceMappingURL=cache.js.map","require('../../modules/es.set');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n target[key] = resultProperty;\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!has(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.13.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n return !String(Symbol()) ||\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.N_DIV_2 = exports.isAccessList = exports.isAccessListBuffer = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nfunction isAccessListBuffer(input) {\n if (input.length === 0) {\n return true;\n }\n var firstItem = input[0];\n if (Array.isArray(firstItem)) {\n return true;\n }\n return false;\n}\nexports.isAccessListBuffer = isAccessListBuffer;\nfunction isAccessList(input) {\n return !isAccessListBuffer(input); // This is exactly the same method, except the output is negated.\n}\nexports.isAccessList = isAccessList;\n/**\n * A const defining secp256k1n/2\n */\nexports.N_DIV_2 = new ethereumjs_util_1.BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar common_1 = __importDefault(require(\"@ethereumjs/common\"));\nvar legacyTransaction_1 = __importDefault(require(\"./legacyTransaction\"));\nvar eip2930Transaction_1 = __importDefault(require(\"./eip2930Transaction\"));\nvar DEFAULT_COMMON = new common_1.default({ chain: 'mainnet' });\nvar TransactionFactory = /** @class */ (function () {\n // It is not possible to instantiate a TransactionFactory object.\n function TransactionFactory() {\n }\n /**\n * Create a transaction from a `txData` object\n *\n * @param txData - The transaction data. The `type` field will determine which transaction type is returned (if undefined, creates a legacy transaction)\n * @param txOptions - Options to pass on to the constructor of the transaction\n */\n TransactionFactory.fromTxData = function (txData, txOptions) {\n var _a;\n if (txOptions === void 0) { txOptions = {}; }\n var common = (_a = txOptions.common) !== null && _a !== void 0 ? _a : DEFAULT_COMMON;\n if (!('type' in txData) || txData.type === undefined) {\n // Assume legacy transaction\n return legacyTransaction_1.default.fromTxData(txData, txOptions);\n }\n else {\n var txType = new ethereumjs_util_1.BN(txData.type).toNumber();\n return TransactionFactory.getTransactionClass(txType, common).fromTxData(txData, txOptions);\n }\n };\n /**\n * This method tries to decode serialized data.\n *\n * @param data - The data Buffer\n * @param txOptions - The transaction options\n */\n TransactionFactory.fromSerializedData = function (data, txOptions) {\n var _a;\n if (txOptions === void 0) { txOptions = {}; }\n var common = (_a = txOptions.common) !== null && _a !== void 0 ? _a : DEFAULT_COMMON;\n if (data[0] <= 0x7f) {\n // It is an EIP-2718 Typed Transaction\n if (!common.isActivatedEIP(2718)) {\n throw new Error('Common support for TypedTransactions (EIP-2718) not activated');\n }\n // Determine the type.\n var EIP = void 0;\n switch (data[0]) {\n case 1:\n EIP = 2930;\n break;\n default:\n throw new Error(\"TypedTransaction with ID \" + data[0] + \" unknown\");\n }\n if (!common.isActivatedEIP(EIP)) {\n throw new Error(\"Cannot create TypedTransaction with ID \" + data[0] + \": EIP \" + EIP + \" not activated\");\n }\n return eip2930Transaction_1.default.fromSerializedTx(data, txOptions);\n }\n else {\n return legacyTransaction_1.default.fromSerializedTx(data, txOptions);\n }\n };\n /**\n * When decoding a BlockBody, in the transactions field, a field is either:\n * A Buffer (a TypedTransaction - encoded as TransactionType || rlp(TransactionPayload))\n * A Buffer[] (Legacy Transaction)\n * This method returns the right transaction.\n *\n * @param data - A Buffer or Buffer[]\n * @param txOptions - The transaction options\n */\n TransactionFactory.fromBlockBodyData = function (data, txOptions) {\n if (txOptions === void 0) { txOptions = {}; }\n if (Buffer.isBuffer(data)) {\n return this.fromSerializedData(data, txOptions);\n }\n else if (Array.isArray(data)) {\n // It is a legacy transaction\n return legacyTransaction_1.default.fromValuesArray(data, txOptions);\n }\n else {\n throw new Error('Cannot decode transaction: unknown type input');\n }\n };\n /**\n * This helper method allows one to retrieve the class which matches the transactionID\n * If transactionID is undefined, returns the legacy transaction class.\n *\n * @param transactionID\n * @param common\n */\n TransactionFactory.getTransactionClass = function (transactionID, common) {\n if (transactionID === void 0) { transactionID = 0; }\n var usedCommon = common !== null && common !== void 0 ? common : DEFAULT_COMMON;\n if (transactionID !== 0) {\n if (!usedCommon.isActivatedEIP(2718)) {\n throw new Error('Common support for TypedTransactions (EIP-2718) not activated');\n }\n }\n var legacyTxn = transactionID == 0 || (transactionID >= 0x80 && transactionID <= 0xff);\n if (legacyTxn) {\n return legacyTransaction_1.default;\n }\n switch (transactionID) {\n case 1:\n return eip2930Transaction_1.default;\n default:\n throw new Error(\"TypedTransaction with ID \" + transactionID + \" unknown\");\n }\n };\n return TransactionFactory;\n}());\nexports.default = TransactionFactory;\n//# sourceMappingURL=transactionFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.adjustSstoreGasEIP2929 = exports.accessStorageEIP2929 = exports.accessAddressEIP2929 = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\n/**\n * Adds address to accessedAddresses set if not already included.\n * Adjusts cost incurred for executing opcode based on whether address read\n * is warm/cold. (EIP 2929)\n * @param {RunState} runState\n * @param {BN} address\n */\nfunction accessAddressEIP2929(runState, address, chargeGas, isSelfdestruct) {\n if (chargeGas === void 0) { chargeGas = true; }\n if (isSelfdestruct === void 0) { isSelfdestruct = false; }\n if (!runState._common.isActivatedEIP(2929))\n return;\n var addressStr = address.buf;\n // Cold\n if (!runState.stateManager.isWarmedAddress(addressStr)) {\n // eslint-disable-next-line prettier/prettier\n runState.stateManager.addWarmedAddress(addressStr);\n // CREATE, CREATE2 opcodes have the address warmed for free.\n // selfdestruct beneficiary address reads are charged an *additional* cold access\n if (chargeGas) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'coldaccountaccess')), 'EIP-2929 -> coldaccountaccess');\n }\n // Warm: (selfdestruct beneficiary address reads are not charged when warm)\n }\n else if (chargeGas && !isSelfdestruct) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'warmstorageread')), 'EIP-2929 -> warmstorageread');\n }\n}\nexports.accessAddressEIP2929 = accessAddressEIP2929;\n/**\n * Adds (address, key) to accessedStorage tuple set if not already included.\n * Adjusts cost incurred for executing opcode based on whether storage read\n * is warm/cold. (EIP 2929)\n * @param {RunState} runState\n * @param {Buffer} key (to storage slot)\n */\nfunction accessStorageEIP2929(runState, key, isSstore) {\n if (!runState._common.isActivatedEIP(2929))\n return;\n var address = runState.eei.getAddress().buf;\n var slotIsCold = !runState.stateManager.isWarmedStorage(address, key);\n // Cold (SLOAD and SSTORE)\n if (slotIsCold) {\n // eslint-disable-next-line prettier/prettier\n runState.stateManager.addWarmedStorage(address, key);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'coldsload')), 'EIP-2929 -> coldsload');\n }\n else if (!isSstore) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'warmstorageread')), 'EIP-2929 -> warmstorageread');\n }\n}\nexports.accessStorageEIP2929 = accessStorageEIP2929;\n/**\n * Adjusts cost of SSTORE_RESET_GAS or SLOAD (aka sstorenoop) (EIP-2200) downward when storage\n * location is already warm\n * @param {RunState} runState\n * @param {Buffer} key storage slot\n * @param {number} defaultCost SSTORE_RESET_GAS / SLOAD\n * @param {string} costName parameter name ('reset' or 'noop')\n * @return {number} adjusted cost\n */\nfunction adjustSstoreGasEIP2929(runState, key, defaultCost, costName) {\n if (!runState._common.isActivatedEIP(2929))\n return defaultCost;\n var address = runState.eei.getAddress().buf;\n var warmRead = runState._common.param('gasPrices', 'warmstorageread');\n var coldSload = runState._common.param('gasPrices', 'coldsload');\n if (runState.stateManager.isWarmedStorage(address, key)) {\n switch (costName) {\n case 'reset':\n return defaultCost - coldSload;\n case 'noop':\n return warmRead;\n case 'initRefund':\n return runState._common.param('gasPrices', 'sstoreInitGasEIP2200') - warmRead;\n case 'cleanRefund':\n return runState._common.param('gasPrices', 'sstoreReset') - coldSload - warmRead;\n }\n }\n return defaultCost;\n}\nexports.adjustSstoreGasEIP2929 = adjustSstoreGasEIP2929;\n//# sourceMappingURL=EIP2929.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar assert_1 = __importDefault(require(\"assert\"));\nvar ceil = function (value, ceiling) {\n var r = value % ceiling;\n if (r === 0) {\n return value;\n }\n else {\n return value + ceiling - r;\n }\n};\n/**\n * Memory implements a simple memory model\n * for the ethereum virtual machine.\n */\nvar Memory = /** @class */ (function () {\n function Memory() {\n this._store = Buffer.alloc(0);\n }\n /**\n * Extends the memory given an offset and size. Rounds extended\n * memory to word-size.\n */\n Memory.prototype.extend = function (offset, size) {\n if (size === 0) {\n return;\n }\n var newSize = ceil(offset + size, 32);\n var sizeDiff = newSize - this._store.length;\n if (sizeDiff > 0) {\n this._store = Buffer.concat([this._store, Buffer.alloc(sizeDiff)]);\n }\n };\n /**\n * Writes a byte array with length `size` to memory, starting from `offset`.\n * @param offset - Starting position\n * @param size - How many bytes to write\n * @param value - Value\n */\n Memory.prototype.write = function (offset, size, value) {\n if (size === 0) {\n return;\n }\n assert_1.default(value.length === size, 'Invalid value size');\n assert_1.default(offset + size <= this._store.length, 'Value exceeds memory capacity');\n assert_1.default(Buffer.isBuffer(value), 'Invalid value type');\n for (var i = 0; i < size; i++) {\n this._store[offset + i] = value[i];\n }\n };\n /**\n * Reads a slice of memory from `offset` till `offset + size` as a `Buffer`.\n * It fills up the difference between memory's length and `offset + size` with zeros.\n * @param offset - Starting position\n * @param size - How many bytes to read\n */\n Memory.prototype.read = function (offset, size) {\n var returnBuffer = Buffer.allocUnsafe(size);\n // Copy the stored \"buffer\" from memory into the return Buffer\n var loaded = Buffer.from(this._store.slice(offset, offset + size));\n returnBuffer.fill(loaded, 0, loaded.length);\n if (loaded.length < size) {\n // fill the remaining part of the Buffer with zeros\n returnBuffer.fill(0, loaded.length, size);\n }\n return returnBuffer;\n };\n return Memory;\n}());\nexports.default = Memory;\n//# sourceMappingURL=memory.js.map","var Module;if(!Module)Module=(typeof Module!==\"undefined\"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module[\"print\"])Module[\"print\"]=console.log;if(!Module[\"printErr\"])Module[\"printErr\"]=console.warn;var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename)}return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module[\"load\"]=function load(f){globalEval(read(f))};if(!Module[\"thisProgram\"]){if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}else{Module[\"thisProgram\"]=\"unknown-program\"}}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(!Module[\"print\"])Module[\"print\"]=print;if(typeof printErr!=\"undefined\")Module[\"printErr\"]=printErr;if(typeof read!=\"undefined\"){Module[\"read\"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}else{Module[\"read\"]=function shell_read(){throw\"no read() available\"}}Module[\"readBinary\"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(f);if(data){return data}throw err}}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof console!==\"undefined\"){if(!Module[\"print\"])Module[\"print\"]=function shell_print(x){console.log(x)};if(!Module[\"printErr\"])Module[\"printErr\"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module[\"print\"])Module[\"print\"]=TRY_USE_DUMP&&typeof dump!==\"undefined\"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module[\"load\"]=importScripts}if(typeof Module[\"setWindowTitle\"]===\"undefined\"){Module[\"setWindowTitle\"]=(function(title){document.title=title})}}else{throw new Error(\"Unknown runtime environment. Where are we?\")}function globalEval(x){eval.call(null,x)}if(!Module[\"load\"]&&Module[\"read\"]){Module[\"load\"]=function load(f){globalEval(Module[\"read\"](f))}}if(!Module[\"print\"]){Module[\"print\"]=(function(){})}if(!Module[\"printErr\"]){Module[\"printErr\"]=Module[\"print\"]}if(!Module[\"arguments\"]){Module[\"arguments\"]=[]}if(!Module[\"thisProgram\"]){Module[\"thisProgram\"]=\"./this.program\"}if(!Module[\"quit\"]){Module[\"quit\"]=(function(status,toThrow){throw toThrow})}Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];Module[\"preRun\"]=[];Module[\"postRun\"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return Runtime.QUANTUM_SIZE}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type===\"double\"||type===\"i64\"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type==\"i64\"||type==\"double\"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module[\"Runtime\"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func){try{func=eval(\"_\"+ident)}catch(e){}}assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\");return func}var cwrap,ccall;((function(){var JSfuncs={\"stackSave\":(function(){Runtime.stackSave()}),\"stackRestore\":(function(){Runtime.stackRestore()}),\"arrayToC\":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}Module[\"setValue\"]=setValue;function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for getValue: \"+type)}return null}Module[\"getValue\"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module[\"ALLOC_NORMAL\"]=ALLOC_NORMAL;Module[\"ALLOC_STACK\"]=ALLOC_STACK;Module[\"ALLOC_STATIC\"]=ALLOC_STATIC;Module[\"ALLOC_DYNAMIC\"]=ALLOC_DYNAMIC;Module[\"ALLOC_NONE\"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module[\"UTF8ToString\"](ptr)}Module[\"Pointer_stringify\"]=Pointer_stringify;function AsciiToString(ptr){var str=\"\";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module[\"AsciiToString\"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module[\"stringToAscii\"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module[\"UTF8ArrayToString\"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module[\"UTF8ToString\"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module[\"stringToUTF8Array\"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module[\"stringToUTF8\"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function demangle(func){var __cxa_demangle_func=Module[\"___cxa_demangle\"]||Module[\"__cxa_demangle\"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,\"i32\")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}Module[\"stackTrace\"]=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module[\"addOnPreRun\"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module[\"addOnInit\"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module[\"addOnPreMain\"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module[\"addOnExit\"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module[\"addOnPostRun\"]=addOnPostRun;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module[\"writeStringToMemory\"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module[\"writeArrayToMemory\"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module[\"writeAsciiToMemory\"]=writeAsciiToMemory;if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}Module[\"addRunDependency\"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"removeRunDependency\"]=removeRunDependency;Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+17504;__ATINIT__.push();memoryInitializer=\"data:application/octet-stream;base64,AQAA8JP14UORcLl5SOgzKF1YgYG2RVC4KaAx4XJOZDCnbSGuRea4G+NZXOOxOv5ThYC7Uz2DSYylRE5/sdAWAon6ilNb/Czz+wFF1BEZ57X2f0EK/x6rRx81uMpxn9gG3zAV2q9tzbG2PSin5hDyYvsK2goMC3/vRCVZLZBu/SBH/XzYFowgPI3KcWiRaoGXXViBgbZFULgpoDHhck5kMAAAAAAAAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8DAAAAAAAAAAAAAAAAAAAAAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wMAAAAAAACgBgAADQAAAHYqAADAAQAACAcAAA0AAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAEAAgACAwAAAAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAADAgAAAAAGAAIAAAcAAAIIAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAEAAAAAAAAAAgQAAAwAAgAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAABAgMDAwQDAwMDAwMFBgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAADA/wAAAAD/AwAAAAAAAAAA/wMAAP8DAAAAAAAAAAAAAADAAQDA/wAAAAAAAP8D/wMAAAAAAAAAAAAA/wMAAAAA/////+cBAAAAAAAAgAAAAP4DAAcAAP8DAAD/AwAAAAAAAAAA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dC9zcmMvbGliY29yZS9vcHRpb24ucnNtaWxsZXIgbG9vcCBjYW5ub3QgcHJvZHVjZSB6ZXJvL2NoZWNrb3V0L3NyYy9saWJhbGxvYy92ZWMucnNjYXBhY2l0eSBvdmVyZmxvdy9jaGVja291dC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc25vdCB5ZXQgaW1wbGVtZW50ZWQvaG9tZS9odWdvLy5jYXJnby9naXQvY2hlY2tvdXRzL2JuLTgwMTNiNDgxODM5NWRjZmIvNjI0YzYwYi9zcmMvZmllbGRzL2ZxNi5yc2NhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvY2hlY2tvdXQvc3JjL2xpYmNvcmUvb3B0aW9uLnJzaW52YWxpZCBsYXlvdXQgZm9yIGFsbG9jX2FycmF5SW52YWxpZCBjaGFyYWN0ZXIgJycgYXQgcG9zaXRpb24gSW52YWxpZCBpbnB1dCBsZW5ndGhjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL2NoZWNrb3V0L3NyYy9saWJjb3JlL29wdGlvbi5yc2NhcGFjaXR5IG92ZXJmbG93L2NoZWNrb3V0L3NyYy9saWJhbGxvYy9yYXdfdmVjLnJzaW52YWxpZCBsYXlvdXQgZm9yIGFsbG9jX2FycmF5Y2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9jaGVja291dC9zcmMvbGliY29yZS9vcHRpb24ucnNmYXRhbCBydW50aW1lIGVycm9yOiBtYWludW5leHBlY3RlZCByZXR1cm4gdmFsdWUgd2hpbGUgdW53aW5kaW5nOiBfX3J1c3RfYmVnaW5fc2hvcnRfYmFja3RyYWNlL2NoZWNrb3V0L3NyYy9saWJjb3JlL3N0ci9wYXR0ZXJuLnJzL2NoZWNrb3V0L3NyYy9saWJjb3JlL3NsaWNlL21vZC5yc1Vud2luZEVycm9yY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZWZhaWxlZCB0byBpbml0aWF0ZSBwYW5pYywgZXJyb3IgL2NoZWNrb3V0L3NyYy9saWJzdGQvc3lzL3VuaXgvb3MucnNzdHJlcnJvcl9yIGZhaWx1cmVyd2xvY2sgbWF4aW11bSByZWFkZXIgY291bnQgZXhjZWVkZWRyd2xvY2sgcmVhZCBsb2NrIHdvdWxkIHJlc3VsdCBpbiBkZWFkbG9ja3RocmVhZCBwYW5pY2tlZCB3aGlsZSBwYW5pY2tpbmcuIGFib3J0aW5nLgpCb3g8QW55Pjx1bm5hbWVkPgFub3RlOiBSdW4gd2l0aCBgUlVTVF9CQUNLVFJBQ0U9MWAgZm9yIGEgYmFja3RyYWNlLgp0aHJlYWQgJycgcGFuaWNrZWQgYXQgJycsIDoKdGhyZWFkIHBhbmlja2VkIHdoaWxlIHByb2Nlc3NpbmcgcGFuaWMuIGFib3J0aW5nLgovY2hlY2tvdXQvc3JjL2xpYnN0ZC9zeXMvdW5peC9yd2xvY2sucnM6IC9jaGVja291dC9zcmMvbGliY29yZS9yZXN1bHQucnMvY2hlY2tvdXQvc3JjL2xpYnN0ZC9zeW5jL2NvbmR2YXIucnNhdHRlbXB0ZWQgdG8gdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggdHdvIG11dGV4ZXNpbnZhbGlkIGxheW91dCBmb3IgYWxsb2NfYXJyYXlkYXRhIHByb3ZpZGVkIGNvbnRhaW5zIGEgbnVsIGJ5dGVhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgL2NoZWNrb3V0L3NyYy9saWJzdGQvc3lzL3VuaXgvY29uZHZhci5yc0Vycm9ycmVwck9zY29kZW1lc3NhZ2VLaW5kQ3VzdG9ta2luZGVycm9yTm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVCcm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvSW50ZXJydXB0ZWRPdGhlclVuZXhwZWN0ZWRFb2ZfX05vbmV4aGF1c3RpdmVpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlZW50aXR5IG5vdCBmb3VuZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVicm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja2ludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb29wZXJhdGlvbiBpbnRlcnJ1cHRlZG90aGVyIG9zIGVycm9ydW5leHBlY3RlZCBlbmQgb2YgZmlsZXBlcm1pc3Npb24gZGVuaWVkL2NoZWNrb3V0L3NyYy9saWJzdGQvaW8vZXJyb3IucnMgKG9zIGVycm9yIFx4TnVsRXJyb3JjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL2NoZWNrb3V0L3NyYy9saWJjb3JlL29wdGlvbi5yc2Fzc2VydGlvbiBmYWlsZWQ6IGAobGVmdCA9PSByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGAvY2hlY2tvdXQvc3JjL2xpYnN0ZC9lbnYucnNmYWlsZWQgdG8gZ2V0IGVudmlyb25tZW50IHZhcmlhYmxlIGBgOiBPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWRhc3NlcnRpb24gZmFpbGVkOiBzdGF0ZSAmIFNUQVRFX01BU0sgPT0gUlVOTklORy9jaGVja291dC9zcmMvbGlic3RkL3N5bmMvb25jZS5yc1N0cmluZ0Vycm9yY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXVzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQvY2hlY2tvdXQvc3JjL2xpYnN0ZC90aHJlYWQvbW9kLnJzaW5jb25zaXN0ZW50IHN0YXRlIGluIHVucGFyay9jaGVja291dC9zcmMvbGlic3RkL3N5c19jb21tb24vYmFja3RyYWNlLnJzaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZVJVU1RfQkFDS1RSQUNFMGZ1bGxjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL2NoZWNrb3V0L3NyYy9saWJjb3JlL29wdGlvbi5yc2luY29uc2lzdGVudCBwYXJrIHN0YXRldGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXNmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkc3RhY2sgYmFja3RyYWNlOgpub3RlOiBTb21lIGRldGFpbHMgYXJlIG9taXR0ZWQsIHJ1biB3aXRoIGBSVVNUX0JBQ0tUUkFDRT1mdWxsYCBmb3IgYSB2ZXJib3NlIGJhY2t0cmFjZS4KLmxsdm0uRV9aTlpOMTdoXyQkJFNQJCRCUCQkUkYkJExUJCRHVCQkTFAkJFJQJCRDJCR1N2UkJHUyMCQkdTI3JCR1NWIkJHU1ZCQkdTdiJCR1N2QkJHUzYiQkdTJiJCR1MjIkL2NoZWNrb3V0L3NyYy9saWJjb3JlL3N0ci9wYXR0ZXJuLnJzL2NoZWNrb3V0L3NyYy9saWJjb3JlL3NsaWNlL21vZC5ycyAgOiAgLSBjYXBhY2l0eSBvdmVyZmxvdy9jaGVja291dC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc1RyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eWNhbm5vdCBjaGFuZ2UgYWxpZ25tZW50IG9uIGByZWFsbG9jYC9jaGVja291dC9zcmMvbGlic3RkL3N5c19jb21tb24vYXRfZXhpdF9pbXAucnNhc3NlcnRpb24gZmFpbGVkOiBxdWV1ZSBhcyB1c2l6ZSAhPSAxYXNzZXJ0aW9uIGZhaWxlZDoga2V5ICE9IDAvY2hlY2tvdXQvc3JjL2xpYnN0ZC9zeXNfY29tbW9uL3RocmVhZF9sb2NhbC5ycy9jaGVja291dC9zcmMvbGlic3RkL3N5cy91bml4L3RocmVhZF9sb2NhbC5yc2Fzc2VydGlvbiBmYWlsZWQ6IGAobGVmdCA9PSByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGBhbHJlYWR5IGJvcnJvd2VkYWxyZWFkeSBtdXRhYmx5IGJvcnJvd2VkY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9jaGVja291dC9zcmMvbGliY29yZS9vcHRpb24ucnNjYW5ub3QgYWNjZXNzIGEgVExTIHZhbHVlIGR1cmluZyBvciBhZnRlciBpdCBpcyBkZXN0cm95ZWRmb3JtYXR0ZXIgZXJyb3IvY2hlY2tvdXQvc3JjL2xpYnN0ZC9zeXNfY29tbW9uL3RocmVhZF9pbmZvLnJzYXNzZXJ0aW9uIGZhaWxlZDogYy5ib3Jyb3coKS5pc19ub25lKClBY2Nlc3NFcnJvcmZhaWxlZCB0byB3cml0ZSB3aG9sZSBidWZmZXIvY2hlY2tvdXQvc3JjL2xpYnN0ZC9zeXMvdW5peC9hcmdzLnJzYXNzZXJ0aW9uIGZhaWxlZDogKCpwdHIpLmlzX25vbmUoKS9jaGVja291dC9zcmMvbGliY29yZS9zdHIvcGF0dGVybi5ycy9jaGVja291dC9zcmMvbGliY29yZS9zbGljZS9tb2QucnNQb2lzb25FcnJvciB7IGlubmVyOiAuLiB9ZmF0YWwgcnVudGltZSBlcnJvcjogCmFzc2VydGlvbiBmYWlsZWQ6ICFwdHIuaXNfbnVsbCgpL2NoZWNrb3V0L3NyYy9saWJwYW5pY191bndpbmQvZW1jYy5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVfVVJDX05PX1JFQVNPTl9VUkNfRk9SRUlHTl9FWENFUFRJT05fQ0FVR0hUX1VSQ19GQVRBTF9QSEFTRTJfRVJST1JfVVJDX0ZBVEFMX1BIQVNFMV9FUlJPUl9VUkNfTk9STUFMX1NUT1BfVVJDX0VORF9PRl9TVEFDS19VUkNfSEFORExFUl9GT1VORF9VUkNfSU5TVEFMTF9DT05URVhUX1VSQ19DT05USU5VRV9VTldJTkRfVVJDX0ZBSUxVUkVhbGxvY2F0b3IgbWVtb3J5IGV4aGF1c3RlZHVuc3VwcG9ydGVkIGFsbG9j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gLpXCRKAjoFHA4VCDxWFUCuH1YDXKUsFCgQChKA8BgEEVQUbNAKBDiwEZAxWCg0DXAQ9OR0NLAQJBwIOBoCag9ULDQMJB3QMVSsMBDgICgYoCB5SDAQ9AxwUGCgBDxeGGUJvcnJvd0Vycm9yQm9ycm93TXV0RXJyb3JjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL2NoZWNrb3V0L3NyYy9saWJjb3JlL29wdGlvbi5yc1QhIhkNAQIDEUscDBAECx0SHidobm9wcWIgBQYPExQVGggWBygkFxgJCg4bHyUjg4J9JiorPD0+P0NHSk1YWVpbXF1eX2BhY2RlZmdpamtscnN0eXp7fABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbg==\";var tempDoublePtr=STATICTOP;STATICTOP+=16;function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module[\"dynCall_vi\"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module[\"___cxa_is_pointer_type\"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}function __Unwind_FindEnclosingFunction(){return 0}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method=\"timeout\"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method=\"rAF\"}else if(mode==2){if(!window[\"setImmediate\"]){var setImmediates=[];var emscriptenMainLoopMessageId=\"setimmediate\";function Browser_setImmediate_messageHandler(event){if(event.source===window&&event.data===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}}window.addEventListener(\"message\",Browser_setImmediate_messageHandler,true);window[\"setImmediate\"]=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module[\"setImmediates\"]===undefined)Module[\"setImmediates\"]=[];Module[\"setImmediates\"].push(func);window.postMessage({target:emscriptenMainLoopMessageId})}else window.postMessage(emscriptenMainLoopMessageId,\"*\")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){window[\"setImmediate\"](Browser.mainLoop.runner)};Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module[\"noExitRuntime\"]=true;assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var browserIterationFunc;if(typeof arg!==\"undefined\"){browserIterationFunc=(function(){Module[\"dynCall_vi\"](func,arg)})}else{browserIterationFunc=(function(){Module[\"dynCall_v\"](func)})}var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker \"'+blocker.name+'\" took '+(Date.now()-start)+\" ms\");Browser.mainLoop.updateStatus();if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}if(Browser.mainLoop.method===\"timeout\"&&Module.ctx){Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\");Browser.mainLoop.method=\"\"}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw\"SimulateInfiniteLoop\"}}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module[\"setStatus\"]){var message=Module[\"statusMessage\"]||\"Please wait...\";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src=\"data:audio/x-\"+name.substr(-3)+\";base64,\"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module[\"preloadPlugins\"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document[\"pointerLockElement\"]===Module[\"canvas\"]||document[\"mozPointerLockElement\"]===Module[\"canvas\"]||document[\"webkitPointerLockElement\"]===Module[\"canvas\"]||document[\"msPointerLockElement\"]===Module[\"canvas\"]}var canvas=Module[\"canvas\"];if(canvas){canvas.requestPointerLock=canvas[\"requestPointerLock\"]||canvas[\"mozRequestPointerLock\"]||canvas[\"webkitRequestPointerLock\"]||canvas[\"msRequestPointerLock\"]||(function(){});canvas.exitPointerLock=document[\"exitPointerLock\"]||document[\"mozExitPointerLock\"]||document[\"webkitExitPointerLock\"]||document[\"msExitPointerLock\"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener(\"pointerlockchange\",pointerLockChange,false);document.addEventListener(\"mozpointerlockchange\",pointerLockChange,false);document.addEventListener(\"webkitpointerlockchange\",pointerLockChange,false);document.addEventListener(\"mspointerlockchange\",pointerLockChange,false);if(Module[\"elementPointerLock\"]){canvas.addEventListener(\"click\",(function(ev){if(!Browser.pointerLock&&Module[\"canvas\"].requestPointerLock){Module[\"canvas\"].requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}else{ctx=canvas.getContext(\"2d\")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx===\"undefined\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer===\"undefined\")Browser.lockPointer=true;if(typeof Browser.resizeCanvas===\"undefined\")Browser.resizeCanvas=false;if(typeof Browser.vrDevice===\"undefined\")Browser.vrDevice=null;var canvas=Module[\"canvas\"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document[\"fullscreenElement\"]||document[\"mozFullScreenElement\"]||document[\"msFullscreenElement\"]||document[\"webkitFullscreenElement\"]||document[\"webkitCurrentFullScreenElement\"])===canvasContainer){canvas.exitFullscreen=document[\"exitFullscreen\"]||document[\"cancelFullScreen\"]||document[\"mozCancelFullScreen\"]||document[\"msExitFullscreen\"]||document[\"webkitCancelFullScreen\"]||(function(){});canvas.exitFullscreen=canvas.exitFullscreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas)Browser.setFullscreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module[\"onFullScreen\"])Module[\"onFullScreen\"](Browser.isFullscreen);if(Module[\"onFullscreen\"])Module[\"onFullscreen\"](Browser.isFullscreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener(\"fullscreenchange\",fullscreenChange,false);document.addEventListener(\"mozfullscreenchange\",fullscreenChange,false);document.addEventListener(\"webkitfullscreenchange\",fullscreenChange,false);document.addEventListener(\"MSFullscreenChange\",fullscreenChange,false)}var canvasContainer=document.createElement(\"div\");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer[\"requestFullscreen\"]||canvasContainer[\"mozRequestFullScreen\"]||canvasContainer[\"msRequestFullscreen\"]||(canvasContainer[\"webkitRequestFullscreen\"]?(function(){canvasContainer[\"webkitRequestFullscreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"])}):null)||(canvasContainer[\"webkitRequestFullScreen\"]?(function(){canvasContainer[\"webkitRequestFullScreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"])}):null);if(vrDevice){canvasContainer.requestFullscreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullscreen()}}),requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\");Browser.requestFullScreen=(function(lockPointer,resizeCanvas,vrDevice){return Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)});return Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window===\"undefined\"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window[\"requestAnimationFrame\"]||window[\"mozRequestAnimationFrame\"]||window[\"webkitRequestAnimationFrame\"]||window[\"msRequestAnimationFrame\"]||window[\"oRequestAnimationFrame\"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module[\"noExitRuntime\"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module[\"noExitRuntime\"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{\"jpg\":\"image/jpeg\",\"jpeg\":\"image/jpeg\",\"png\":\"image/png\",\"bmp\":\"image/bmp\",\"ogg\":\"audio/ogg\",\"wav\":\"audio/wav\",\"mp3\":\"audio/mpeg\"}[name.substr(name.lastIndexOf(\".\")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator[\"getUserMedia\"]||navigator[\"mozGetUserMedia\"]}window.getUserMedia(func)}),getMovementX:(function(event){return event[\"movementX\"]||event[\"mozMovementX\"]||event[\"webkitMovementX\"]||0}),getMovementY:(function(event){return event[\"movementY\"]||event[\"mozMovementY\"]||event[\"webkitMovementY\"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case\"DOMMouseScroll\":delta=event.detail;break;case\"mousewheel\":delta=event.wheelDelta;break;case\"wheel\":delta=event[\"deltaY\"];break;default:throw\"unrecognized mouse wheel event: \"+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!=\"mousemove\"&&\"mozMovementX\"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!=\"undefined\"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module[\"canvas\"].getBoundingClientRect();var cw=Module[\"canvas\"].width;var ch=Module[\"canvas\"].height;var scrollX=typeof window.scrollX!==\"undefined\"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!==\"undefined\"?window.scrollY:window.pageYOffset;if(event.type===\"touchstart\"||event.type===\"touchend\"||event.type===\"touchmove\"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type===\"touchstart\"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type===\"touchend\"||event.type===\"touchmove\"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),asyncLoad:(function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency(\"al \"+url):\"\";Module[\"readAsync\"](url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file \"'+url+'\" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)}),(function(event){if(onerror){onerror()}else{throw'Loading data file \"'+url+'\" failed.'}}));if(dep)addRunDependency(dep)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module[\"canvas\"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module[\"canvas\"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:(function(){if(typeof SDL!=\"undefined\"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!=\"undefined\"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module[\"forcedAspectRatio\"]&&Module[\"forcedAspectRatio\"]>0){if(w/h>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _llvm_bswap_i64(l,h){var retl=_llvm_bswap_i32(h)>>>0;var reth=_llvm_bswap_i32(l)>>>0;return(Runtime.setTempRet0(reth),retl)|0}function _pthread_mutex_init(){}function _pthread_key_delete(key){if(key in PTHREAD_SPECIFIC){delete PTHREAD_SPECIFIC[key];return 0}return ERRNO_CODES.EINVAL}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _pthread_mutexattr_destroy(){}function ___cxa_allocate_exception(size){return _malloc(size)}var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"};function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))}),join2:(function(l,r){return PATH.normalize(l+\"/\"+r)}),resolve:(function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!==\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=path.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter((function(p){return!!p})),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type===\"remote\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readwrite\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type===\"local\"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type===\"local\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,\"/\",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:\"r\",1:\"r+\",2:\"r+\",64:\"r\",65:\"r+\",66:\"r+\",129:\"rx+\",193:\"rx+\",514:\"w+\",577:\"w\",578:\"w+\",705:\"wx\",706:\"wx+\",1024:\"a\",1025:\"a\",1026:\"a+\",1089:\"a\",1090:\"a+\",1153:\"ax\",1154:\"ax+\",1217:\"ax\",1218:\"ax+\",4096:\"rs\",4098:\"rs+\"},flagsToPermissionString:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,\"\",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags}),flagsToPermissionString:(function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,\"x\");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,\"wx\")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,\"wx\");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate===\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i\"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"NODEFS\":NODEFS,\"WORKERFS\":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);if(typeof Uint8Array!=\"undefined\")xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]===\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]===\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!==\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __Unwind_GetIPInfo(){abort(\"Unwind_GetIPInfo\")}function _pthread_cond_init(){return 0}function __emscripten_traverse_stack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a===\"number\"||typeof a===\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&8&&typeof emscripten_source_map===\"undefined\"){Runtime.warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){var stack_args=__emscripten_traverse_stack(arguments);while(stack_args[1].indexOf(\"_emscripten_\")>=0)stack_args=__emscripten_traverse_stack(stack_args[0])}lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(l in lines){var line=lines[l];var jsSymbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){jsSymbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){jsSymbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var cSymbolName=flags&32?demangle(jsSymbolName):jsSymbolName;if(!cSymbolName){cSymbolName=jsSymbolName}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+cSymbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+jsSymbolName:\" at \"+cSymbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==jsSymbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=__emscripten_traverse_stack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function __Unwind_Backtrace(func,arg){var trace=_emscripten_get_callstack_js();var parts=trace.split(\"\\n\");for(var i=0;i>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]===\"string\"){var line=key+\"=\"+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),\"i8\",ALLOC_NORMAL);return _getenv.ret}function _pthread_rwlock_rdlock(){return 0}function ___cxa_find_matching_catch_3(){return ___cxa_find_matching_catch.apply(null,arguments)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _pthread_cond_signal(){return 0}function _dladdr(addr,info){var fname=allocate(intArrayFromString(Module[\"thisProgram\"]||\"./this.program\"),\"i8\",ALLOC_NORMAL);HEAP32[addr>>2]=fname;HEAP32[addr+4>>2]=0;HEAP32[addr+8>>2]=0;HEAP32[addr+12>>2]=0;return 1}function ___gxx_personality_v0(){}function _pthread_mutex_destroy(){}function _pthread_mutexattr_init(){}function ___syscall4(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.write(stream,HEAP8,buf,count)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _pthread_condattr_init(){return 0}function _llvm_trap(){abort(\"trap!\")}function ___cxa_find_matching_catch_2(){return ___cxa_find_matching_catch.apply(null,arguments)}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _pthread_rwlock_unlock(){return 0}Module[\"requestFullScreen\"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\");Module[\"requestFullScreen\"]=Module[\"requestFullscreen\"];Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module[\"requestFullscreen\"]=function Module_requestFullscreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)};Module[\"requestAnimationFrame\"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module[\"setCanvasSize\"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module[\"pauseMainLoop\"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module[\"resumeMainLoop\"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module[\"getUserMedia\"]=function Module_getUserMedia(){Browser.getUserMedia()};Module[\"createContext\"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof self===\"object\"&&self[\"performance\"]&&typeof self[\"performance\"][\"now\"]===\"function\"){_emscripten_get_now=(function(){return self[\"performance\"][\"now\"]()})}else if(typeof performance===\"object\"&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=(function(){return performance[\"now\"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module[\"FS_createFolder\"]=FS.createFolder;Module[\"FS_createPath\"]=FS.createPath;Module[\"FS_createDataFile\"]=FS.createDataFile;Module[\"FS_createPreloadedFile\"]=FS.createPreloadedFile;Module[\"FS_createLazyFile\"]=FS.createLazyFile;Module[\"FS_createLink\"]=FS.createLink;Module[\"FS_createDevice\"]=FS.createDevice;Module[\"FS_unlink\"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var NODEJS_PATH=require(\"path\");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var ASSERTIONS;var intArrayToString=ASSERTIONS?(function(array){var ret=[];for(var i=0;i255){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\");chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}):(function(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")});Module[\"intArrayFromString\"]=intArrayFromString;Module[\"intArrayToString\"]=intArrayToString;var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var decodeBase64=typeof atob===\"function\"?atob:(function(input){var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;e=f*288|0;if(f|0){b=f*576|0;if((b|0)<0)$i(1928);b=_b(c[a>>2]|0,e,8,b,8,g)|0;if(!b){d=g+4|0;j=c[d>>2]|0;d=c[d+4>>2]|0;c[g>>2]=c[g>>2];e=g+4|0;c[e>>2]=j;c[e+4>>2]=d;Yb(g)}e=b;g=a;j=f<<1;c[g>>2]=e;c[h>>2]=j;l=i;return}Wb(g,288,8,4);if((c[g>>2]|0)==1){b=c[g+4>>2]|0;if(b|0?(d=Xb(b,c[g+8>>2]|0,g)|0,d|0):0){f=d;g=a;j=4;c[g>>2]=f;c[h>>2]=j;l=i;return}}c[g>>2]=1;c[g+4>>2]=5846;c[g+8>>2]=30;Yb(g)}function wb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=a+4|0;e=c[i>>2]|0;if((e-b|0)>>>0>=d>>>0){l=j;return}d=b+d|0;if(d>>>0>>0)cj(5796,17);g=e<<1;g=d>>>0>=g>>>0?d:g;Wb(h,1,1,g);if((c[h>>2]|0)!=1)$i(1904);d=c[h+4>>2]|0;b=c[h+8>>2]|0;if((d|0)<0)$i(1928);e=c[i>>2]|0;if(!e){b=Xb(d,b,h)|0;d=(b|0)==0&1;e=0;f=0}else{b=_b(c[a>>2]|0,e,1,d,b,h)|0;e=(b|0)==0;f=h+4|0;d=e&1;b=e?c[h>>2]|0:b;e=c[f>>2]|0;f=c[f+4>>2]|0}if((d|0)==1){c[h>>2]=b;d=h+4|0;c[d>>2]=e;c[d+4>>2]=f;Yb(h)}c[a>>2]=b;c[i>>2]=g;l=j;return}function xb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;k=s;if(!f){a[b>>0]=3;l=s;return}m=d+9|0;o=d+4|0;p=k+4|0;q=d+8|0;while(1){do if(!(a[m>>0]|0)){i=c[o>>2]|0;g=f>>>0<=i>>>0?f:i;h=c[d>>2]|0;i=i-g|0;j=h+g|0;if((g|0)!=1){ok(e|0,h|0,g|0)|0;c[d>>2]=j;c[o>>2]=i;if(!g){a[m>>0]=1;r=9;break}}else{a[e>>0]=a[h>>0]|0;c[d>>2]=j;c[o>>2]=i}c[k>>2]=0;c[p>>2]=g}else r=9;while(0);if((r|0)==9){r=0;g=e+f|0;h=e;do{a[h>>0]=a[q>>0]|0;h=h+1|0}while((h|0)!=(g|0));c[k>>2]=0;c[p>>2]=f;if(!f){r=3;break}else g=f}if(f>>>0>>0){r=12;break}f=f-g|0;if(!f){r=16;break}else e=e+g|0}if((r|0)==3){a[b>>0]=3;l=s;return}else if((r|0)==12){n=0;_(8,g|0,f|0);n=0;s=na()|0;yb(k);za(s|0)}else if((r|0)==16){a[b>>0]=3;l=s;return}}function yb(a){a=a|0;var b=0,e=0,f=0;if(!(c[a>>2]|0))return;if((d[a+4>>0]|0)<2)return;e=a+8|0;f=c[e>>2]|0;a=f+4|0;n=0;Z(c[c[a>>2]>>2]|0,c[f>>2]|0);b=n;n=0;if(b&1){b=na()|0;zb(c[f>>2]|0,c[a>>2]|0);Ab(c[e>>2]|0);za(b|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(b|0)Zb(c[f>>2]|0,b,c[a+8>>2]|0);Zb(c[e>>2]|0,12,4);return}function zb(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Ab(a){a=a|0;Zb(a,12,4);return}function Bb(a){a=a|0;return}function Cb(a){a=a|0;kb[c[a>>2]&3]();return Rd()|0}function Db(a){a=a|0;kb[a&3]();return Rd()|0}function Eb(a){a=a|0;var b=0,e=0,f=0;if((d[a>>0]|0)<2)return;e=a+4|0;f=c[e>>2]|0;a=f+4|0;n=0;Z(c[c[a>>2]>>2]|0,c[f>>2]|0);b=n;n=0;if(b&1){b=na()|0;Fb(c[f>>2]|0,c[a>>2]|0);Gb(c[e>>2]|0);za(b|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(b|0)Zb(c[f>>2]|0,b,c[a+8>>2]|0);Zb(c[e>>2]|0,12,4);return}function Fb(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Gb(a){a=a|0;Zb(a,12,4);return}function Hb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+48|0;f=g+32|0;e=g+8|0;c[g>>2]=a;c[g+4>>2]=b;c[f>>2]=g;c[f+4>>2]=33;c[f+8>>2]=d;c[f+12>>2]=34;c[e>>2]=1976;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;n=0;_(9,e|0,1992);n=0;b=na()|0;Eb(d);za(b|0)}function Ib(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+64|0;g=i+32|0;f=i+8|0;h=i+48|0;c[i>>2]=b;c[i+4>>2]=d;a[h>>0]=e&1;c[g>>2]=i;c[g+4>>2]=33;c[g+8>>2]=h;c[g+12>>2]=35;c[f>>2]=1976;c[f+4>>2]=2;c[f+8>>2]=5264;c[f+12>>2]=2;c[f+16>>2]=g;c[f+20>>2]=2;aj(f,1992)}function Jb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+48|0;f=g+32|0;e=g+8|0;c[g>>2]=a;c[g+4>>2]=b;c[f>>2]=g;c[f+4>>2]=33;c[f+8>>2]=d;c[f+12>>2]=36;c[e>>2]=1976;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;aj(e,1992)}function Kb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+48|0;f=g+32|0;e=g+8|0;c[g>>2]=a;c[g+4>>2]=b;c[f>>2]=g;c[f+4>>2]=33;c[f+8>>2]=d;c[f+12>>2]=37;c[e>>2]=1976;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;aj(e,1992)}function Lb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+848|0;A=B;j=B+680|0;u=B+640|0;k=B+632|0;m=B+816|0;y=B+740|0;w=B+600|0;v=B+568|0;x=B+504|0;o=B+472|0;p=B+376|0;q=B+280|0;r=B+208|0;d=B+752|0;s=B+712|0;h=B+104|0;t=B+8|0;i=B+700|0;z=B+688|0;Ff(A,b);Gf(u,c[A>>2]|0,c[A+4>>2]|0);if((c[u>>2]|0)==1){f=u+4|0;g=c[f+4>>2]|0;A=j;c[A>>2]=c[f>>2];c[A+4>>2]=g;Kb(5909,43,j)}od(u,c[u+4>>2]|0,c[u+8>>2]|0);if((c[u>>2]|0)==1){f=u+4|0;g=c[f+4>>2]|0;A=j;c[A>>2]=c[f>>2];c[A+4>>2]=g;Jb(5909,43,j)}b=u+4|0;c[z>>2]=c[b>>2];c[z+4>>2]=c[b+4>>2];c[z+8>>2]=c[b+8>>2];b=c[z>>2]|0;e=c[z+8>>2]|0;A=b;n=0;f=$(9,0)|0;g=n;n=0;a:do if(!(g&1)?(c[i>>2]=b,c[i+4>>2]=e,a[i+8>>0]=f,a[i+9>>0]=0,n=0,_(10,h|0,i|0),g=n,n=0,!(g&1)):0){do if((c[h>>2]|0)!=1){g=t;e=h+8|0;f=g+96|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(f|0));g=m;f=g+32|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(f|0));n=0;ea(3,k|0,i|0,m|0,32);i=n;n=0;if(i&1)break a;if((a[k>>0]|0)!=3){y=k;A=c[y+4>>2]|0;B=j;c[B>>2]=c[y>>2];c[B+4>>2]=A;n=0;aa(2,5952,50,j|0);n=0;break a}n=0;aa(3,u|0,m|0,32);m=n;n=0;if(m&1)break a;if((a[u>>0]|0)==1)break;b=c[u+8>>2]|0;g=u+12|0;c[s>>2]=c[g>>2];c[s+4>>2]=c[g+4>>2];c[s+8>>2]=c[g+8>>2];c[s+12>>2]=c[g+12>>2];c[s+16>>2]=c[g+16>>2];c[s+20>>2]=c[g+20>>2];c[s+24>>2]=c[g+24>>2];g=d;f=g+64|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(f|0));g=p;e=t;f=g+96|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(f|0));c[o>>2]=b;u=o+4|0;c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2];c[u+16>>2]=c[s+16>>2];c[u+20>>2]=c[s+20>>2];c[u+24>>2]=c[s+24>>2];n=0;aa(4,q|0,p|0,o|0);u=n;n=0;if(u&1)break a;n=0;_(11,r|0,q|0);u=n;n=0;if(u&1)break a;u=r;do if((c[u>>2]|0)==1&(c[u+4>>2]|0)==0){g=x;e=r+8|0;f=g+64|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(f|0));n=0;_(12,v|0,x|0);u=n;n=0;if(u&1)break a;n=0;b=W(9,v|0,d|0,32)|0;v=n;n=0;if(v&1)break a;if(b<<24>>24!=2){n=0;aa(6,6002,41,(b&1)!=0|0);n=0;break a}n=0;_(13,w|0,x|0);x=n;n=0;if(x&1)break a;n=0;b=W(9,w|0,d+32|0,32)|0;x=n;n=0;if(x&1)break a;if(b<<24>>24==2)break;else{n=0;aa(6,6043,42,(b&1)!=0|0);n=0;break a}}while(0);n=0;aa(5,y|0,d|0,64);x=n;n=0;if(x&1)break a;d=y+8|0;n=0;aa(7,y|0,c[d>>2]|0,1);x=n;n=0;if(x&1){B=na()|0;Ob(y);Mb(z);za(B|0)}b=c[d>>2]|0;c[d>>2]=b+1;a[(c[y>>2]|0)+b>>0]=0;b=c[y>>2]|0;d=c[y+4>>2]|0;if(d|0)Zb(b,d,1);d=c[z+4>>2]|0;if(d|0)Zb(A,d,1);A=b;l=B;return A|0}while(0);d=c[z+4>>2]|0;if(d|0)Zb(A,d,1);A=16464;l=B;return A|0}while(0);B=na()|0;Mb(z);za(B|0);return 0}function Mb(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function Nb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+480|0;k=q+264|0;f=q+232|0;j=q+160|0;m=q+388|0;n=q+328|0;o=q+64|0;g=q+32|0;h=q;e=q+448|0;p=e;r=p+32|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(r|0));xb(f,d,e,32);if((a[f>>0]|0)!=3){s=f;p=c[s+4>>2]|0;r=k;c[r>>2]=c[s>>2];c[r+4>>2]=p;Hb(5952,50,k)}cc(k,e,32);if((a[k>>0]|0)==1){c[b>>2]=1;c[b+4>>2]=6085;c[b+8>>2]=26}else{s=c[k+8>>2]|0;r=k+12|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];c[f+16>>2]=c[r+16>>2];c[f+20>>2]=c[r+20>>2];c[f+24>>2]=c[r+24>>2];c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];c[h>>2]=s;s=h+4|0;c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];c[s+16>>2]=c[j+16>>2];c[s+20>>2]=c[j+20>>2];c[s+24>>2]=c[j+24>>2];xb(f,d,e,32);if((a[f>>0]|0)!=3){p=f;r=c[p+4>>2]|0;s=k;c[s>>2]=c[p>>2];c[s+4>>2]=r;Hb(5952,50,k)}cc(k,e,32);a:do if((a[k>>0]|0)==1){c[b>>2]=1;c[b+4>>2]=6111;c[b+8>>2]=26}else{s=c[k+8>>2]|0;r=k+12|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];c[f+16>>2]=c[r+16>>2];c[f+20>>2]=c[r+20>>2];c[f+24>>2]=c[r+24>>2];c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];c[g>>2]=s;s=g+4|0;c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];c[s+16>>2]=c[j+16>>2];c[s+20>>2]=c[j+20>>2];c[s+24>>2]=c[j+24>>2];ac(f);if((Xj(h,f,32)|0)==0?(ac(k),(Xj(g,k,32)|0)==0):0)fc(o);else i=13;do if((i|0)==13){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[f+28>>2]=c[h+28>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[k+16>>2]=c[g+16>>2];c[k+20>>2]=c[g+20>>2];c[k+24>>2]=c[g+24>>2];c[k+28>>2]=c[g+28>>2];ic(j,f,k);if((a[j>>0]|0)==1){c[b>>2]=1;c[b+4>>2]=6137;c[b+8>>2]=19;break a}else{e=c[j+8>>2]|0;p=m;d=j+12|0;r=p+60|0;do{c[p>>2]=c[d>>2];p=p+4|0;d=d+4|0}while((p|0)<(r|0));p=n;d=m;r=p+60|0;do{c[p>>2]=c[d>>2];p=p+4|0;d=d+4|0}while((p|0)<(r|0));c[k>>2]=e;p=k+4|0;d=n;r=p+60|0;do{c[p>>2]=c[d>>2];p=p+4|0;d=d+4|0}while((p|0)<(r|0));mc(o,k);break}}while(0);c[b>>2]=0;p=b+8|0;d=o;r=p+96|0;do{c[p>>2]=c[d>>2];p=p+4|0;d=d+4|0}while((p|0)<(r|0));l=q;return}while(0)}l=q;return}function Ob(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function Pb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+1072|0;C=D;j=D+808|0;A=D+864|0;y=D+776|0;u=D+744|0;z=D+680|0;v=D+584|0;w=D+488|0;x=D+392|0;s=D+320|0;d=D+1008|0;q=D+216|0;k=D+112|0;t=D+16|0;r=D+852|0;m=D+840|0;h=D+8|0;o=D+880|0;i=D+828|0;B=D+816|0;Ff(C,b);Gf(A,c[C>>2]|0,c[C+4>>2]|0);if((c[A>>2]|0)==1){f=A+4|0;g=c[f+4>>2]|0;C=j;c[C>>2]=c[f>>2];c[C+4>>2]=g;Kb(5909,43,j)}od(A,c[A+4>>2]|0,c[A+8>>2]|0);if((c[A>>2]|0)==1){f=A+4|0;g=c[f+4>>2]|0;C=j;c[C>>2]=c[f>>2];c[C+4>>2]=g;Jb(5909,43,j)}b=A+4|0;c[B>>2]=c[b>>2];c[B+4>>2]=c[b+4>>2];c[B+8>>2]=c[b+8>>2];b=c[B>>2]|0;e=c[B+8>>2]|0;C=b;n=0;f=$(9,0)|0;g=n;n=0;a:do if(!(g&1)){c[i>>2]=b;c[i+4>>2]=e;a[i+8>>0]=f;a[i+9>>0]=0;f=o;g=f+128|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));n=0;ea(3,h|0,i|0,o|0,128);i=n;n=0;if(!(i&1)){if((a[h>>0]|0)!=3){A=h;C=c[A+4>>2]|0;D=j;c[D>>2]=c[A>>2];c[D+4>>2]=C;n=0;aa(2,5952,50,j|0);n=0;break}b=o+64|0;n=0;e=$(9,0)|0;j=n;n=0;if((!(j&1)?(c[m>>2]=o,c[m+4>>2]=64,a[m+8>>0]=e,a[m+9>>0]=0,n=0,p=$(9,0)|0,o=n,n=0,!(o&1)):0)?(c[r>>2]=b,c[r+4>>2]=64,a[r+8>>0]=p,a[r+9>>0]=0,n=0,_(10,k|0,m|0),p=n,n=0,!(p&1)):0){if((c[k>>2]|0)==1){d=c[B+4>>2]|0;if(d|0)Zb(C,d,1);C=16464;l=D;return C|0}f=t;e=k+8|0;g=f+96|0;do{c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(g|0));n=0;_(10,q|0,r|0);r=n;n=0;if(!(r&1)){if((c[q>>2]|0)==1)b=16464;else{b=q+8|0;f=d;g=f+64|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));f=w;e=t;g=f+96|0;do{c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(g|0));f=v;e=b;g=f+96|0;do{c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(g|0));n=0;aa(8,x|0,w|0,v|0);w=n;n=0;if(w&1)break;n=0;_(11,s|0,x|0);x=n;n=0;if(x&1)break;x=s;do if((c[x>>2]|0)==1&(c[x+4>>2]|0)==0){f=z;e=s+8|0;g=f+64|0;do{c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(g|0));n=0;_(12,u|0,z|0);x=n;n=0;if(x&1)break a;n=0;b=W(9,u|0,d|0,32)|0;x=n;n=0;if(x&1)break a;if(b<<24>>24!=2){n=0;aa(6,6002,41,(b&1)!=0|0);n=0;break a}n=0;_(13,y|0,z|0);z=n;n=0;if(z&1)break a;n=0;b=W(9,y|0,d+32|0,32)|0;z=n;n=0;if(z&1)break a;if(b<<24>>24==2)break;else{n=0;aa(6,6043,42,(b&1)!=0|0);n=0;break a}}while(0);n=0;aa(5,A|0,d|0,64);z=n;n=0;if(z&1)break;d=A+8|0;n=0;aa(7,A|0,c[d>>2]|0,1);z=n;n=0;if(z&1){D=na()|0;Ob(A);Mb(B);za(D|0)}b=c[d>>2]|0;c[d>>2]=b+1;a[(c[A>>2]|0)+b>>0]=0;b=c[A>>2]|0;d=c[A+4>>2]|0;if(d|0)Zb(b,d,1)}d=c[B+4>>2]|0;if(d|0)Zb(C,d,1);C=b;l=D;return C|0}}}}while(0);D=na()|0;Mb(B);za(D|0);return 0}function Qb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;Ga=l;l=l+6960|0;z=Ga;ta=Ga+6664|0;ua=Ga+6568|0;va=Ga+6184|0;wa=Ga+5800|0;ya=Ga+5128|0;Aa=Ga+4456|0;Ba=Ga+4072|0;Ca=Ga+3688|0;Fa=Ga+6896|0;pa=Ga+6908|0;qa=Ga+6920|0;ra=Ga+3304|0;oa=Ga+2920|0;Ea=Ga+6880|0;sa=Ga+2536|0;A=Ga+2248|0;B=Ga+2120|0;C=Ga+1928|0;D=Ga+1864|0;E=Ga+1800|0;F=Ga+1664|0;G=Ga+1472|0;H=Ga+1280|0;I=Ga+1248|0;J=Ga+1216|0;K=Ga+1152|0;L=Ga+1120|0;M=Ga+1088|0;N=Ga+1024|0;O=Ga+960|0;P=Ga+864|0;Q=Ga+832|0;R=Ga+800|0;S=Ga+728|0;T=Ga+632|0;U=Ga+600|0;V=Ga+568|0;W=Ga+472|0;X=Ga+432|0;Y=Ga+400|0;ba=Ga+360|0;ca=Ga+328|0;da=Ga+288|0;fa=Ga+256|0;ga=Ga+216|0;ha=Ga+184|0;ia=Ga+144|0;ja=Ga+112|0;ka=Ga+72|0;la=Ga+40|0;ma=Ga+6868|0;xa=Ga+8|0;Ha=Ga+6856|0;Ff(z,b);Gf(ua,c[z>>2]|0,c[z+4>>2]|0);if((c[ua>>2]|0)==1){x=ua+4|0;y=c[x+4>>2]|0;z=ta;c[z>>2]=c[x>>2];c[z+4>>2]=y;Kb(5909,43,ta)}od(ua,c[ua+4>>2]|0,c[ua+8>>2]|0);if((c[ua>>2]|0)==1){x=ua+4|0;y=c[x+4>>2]|0;z=ta;c[z>>2]=c[x>>2];c[z+4>>2]=y;Jb(5909,43,ta)}y=ua+4|0;c[Ha>>2]=c[y>>2];c[Ha+4>>2]=c[y+4>>2];c[Ha+8>>2]=c[y+8>>2];y=c[Ha+8>>2]|0;z=(y>>>0)/192|0;a:do if(!((y>>>0)%192|0)){if(y){c[ma>>2]=8;g=ma+4|0;c[g>>2]=0;h=ma+8|0;c[h>>2]=0;b:do if(y>>>0>191){i=ka+8|0;j=ia+8|0;p=ga+8|0;q=da+8|0;r=ba+8|0;s=X+8|0;t=A+96|0;u=F+8|0;v=S+8|0;w=c[Ha>>2]|0;x=0;c:while(1){f=x*192|0;x=x+1|0;b=f|32;if(y>>>0>>0){Da=16;break}n=0;aa(9,ka|0,w+f|0,b-f|0);o=n;n=0;if(o&1){Da=125;break}if((a[ka>>0]|0)==1){Da=23;break};c[la>>2]=c[i>>2];c[la+4>>2]=c[i+4>>2];c[la+8>>2]=c[i+8>>2];c[la+12>>2]=c[i+12>>2];c[la+16>>2]=c[i+16>>2];c[la+20>>2]=c[i+20>>2];c[la+24>>2]=c[i+24>>2];c[la+28>>2]=c[i+28>>2];d=f+64|0;if(d>>>0>>0){Da=20;break}if(y>>>0>>0){Da=22;break}n=0;aa(9,ia|0,w+b|0,d-b|0);o=n;n=0;if(o&1){Da=125;break}if((a[ia>>0]|0)==1){Da=31;break};c[ja>>2]=c[j>>2];c[ja+4>>2]=c[j+4>>2];c[ja+8>>2]=c[j+8>>2];c[ja+12>>2]=c[j+12>>2];c[ja+16>>2]=c[j+16>>2];c[ja+20>>2]=c[j+20>>2];c[ja+24>>2]=c[j+24>>2];c[ja+28>>2]=c[j+28>>2];b=f+96|0;if(y>>>0>>0){Da=30;break}n=0;aa(9,ga|0,w+d|0,32);o=n;n=0;if(o&1){Da=125;break}if((a[ga>>0]|0)==1){Da=37;break};c[ha>>2]=c[p>>2];c[ha+4>>2]=c[p+4>>2];c[ha+8>>2]=c[p+8>>2];c[ha+12>>2]=c[p+12>>2];c[ha+16>>2]=c[p+16>>2];c[ha+20>>2]=c[p+20>>2];c[ha+24>>2]=c[p+24>>2];c[ha+28>>2]=c[p+28>>2];d=f+128|0;if(y>>>0>>0){Da=36;break}n=0;aa(9,da|0,w+b|0,32);o=n;n=0;if(o&1){Da=125;break}if((a[da>>0]|0)==1){Da=43;break};c[fa>>2]=c[q>>2];c[fa+4>>2]=c[q+4>>2];c[fa+8>>2]=c[q+8>>2];c[fa+12>>2]=c[q+12>>2];c[fa+16>>2]=c[q+16>>2];c[fa+20>>2]=c[q+20>>2];c[fa+24>>2]=c[q+24>>2];c[fa+28>>2]=c[q+28>>2];e=f+160|0;if(y>>>0>>0){Da=42;break}n=0;aa(9,ba|0,w+d|0,32);o=n;n=0;if(o&1){Da=125;break}if((a[ba>>0]|0)==1){Da=49;break};c[ca>>2]=c[r>>2];c[ca+4>>2]=c[r+4>>2];c[ca+8>>2]=c[r+8>>2];c[ca+12>>2]=c[r+12>>2];c[ca+16>>2]=c[r+16>>2];c[ca+20>>2]=c[r+20>>2];c[ca+24>>2]=c[r+24>>2];c[ca+28>>2]=c[r+28>>2];b=f+192|0;if(y>>>0>>0){Da=48;break}n=0;aa(9,X|0,w+e|0,32);o=n;n=0;if(o&1){Da=125;break}if((a[X>>0]|0)==1){Da=54;break};c[Y>>2]=c[s>>2];c[Y+4>>2]=c[s+4>>2];c[Y+8>>2]=c[s+8>>2];c[Y+12>>2]=c[s+12>>2];c[Y+16>>2]=c[s+16>>2];c[Y+20>>2]=c[s+20>>2];c[Y+24>>2]=c[s+24>>2];c[Y+28>>2]=c[s+28>>2];n=0;Z(36,V|0);o=n;n=0;if(o&1){Da=125;break}do if(!(Xj(la,V,32)|0)){n=0;Z(36,U|0);o=n;n=0;if(o&1){Da=125;break c}if(Xj(ja,U,32)|0){Da=56;break}n=0;Z(37,T|0);o=n;n=0;if(o&1){Da=125;break c}k=W;m=T;o=k+96|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0))}else Da=56;while(0);if((Da|0)==56){Da=0;c[R>>2]=c[la>>2];c[R+4>>2]=c[la+4>>2];c[R+8>>2]=c[la+8>>2];c[R+12>>2]=c[la+12>>2];c[R+16>>2]=c[la+16>>2];c[R+20>>2]=c[la+20>>2];c[R+24>>2]=c[la+24>>2];c[R+28>>2]=c[la+28>>2];c[Q>>2]=c[ja>>2];c[Q+4>>2]=c[ja+4>>2];c[Q+8>>2]=c[ja+8>>2];c[Q+12>>2]=c[ja+12>>2];c[Q+16>>2]=c[ja+16>>2];c[Q+20>>2]=c[ja+20>>2];c[Q+24>>2]=c[ja+24>>2];c[Q+28>>2]=c[ja+28>>2];n=0;aa(10,S|0,R|0,Q|0);o=n;n=0;if(o&1){Da=125;break}if((a[S>>0]|0)==1){Da=65;break}k=O;m=v;o=k+64|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0));n=0;_(15,P|0,O|0);o=n;n=0;if(o&1){Da=125;break}k=W;m=P;o=k+96|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0))};c[M>>2]=c[fa>>2];c[M+4>>2]=c[fa+4>>2];c[M+8>>2]=c[fa+8>>2];c[M+12>>2]=c[fa+12>>2];c[M+16>>2]=c[fa+16>>2];c[M+20>>2]=c[fa+20>>2];c[M+24>>2]=c[fa+24>>2];c[M+28>>2]=c[fa+28>>2];c[L>>2]=c[ha>>2];c[L+4>>2]=c[ha+4>>2];c[L+8>>2]=c[ha+8>>2];c[L+12>>2]=c[ha+12>>2];c[L+16>>2]=c[ha+16>>2];c[L+20>>2]=c[ha+20>>2];c[L+24>>2]=c[ha+24>>2];c[L+28>>2]=c[ha+28>>2];n=0;aa(11,N|0,M|0,L|0);o=n;n=0;if(o&1){Da=125;break};c[J>>2]=c[Y>>2];c[J+4>>2]=c[Y+4>>2];c[J+8>>2]=c[Y+8>>2];c[J+12>>2]=c[Y+12>>2];c[J+16>>2]=c[Y+16>>2];c[J+20>>2]=c[Y+20>>2];c[J+24>>2]=c[Y+24>>2];c[J+28>>2]=c[Y+28>>2];c[I>>2]=c[ca>>2];c[I+4>>2]=c[ca+4>>2];c[I+8>>2]=c[ca+8>>2];c[I+12>>2]=c[ca+12>>2];c[I+16>>2]=c[ca+16>>2];c[I+20>>2]=c[ca+20>>2];c[I+24>>2]=c[ca+24>>2];c[I+28>>2]=c[ca+28>>2];n=0;aa(11,K|0,J|0,I|0);o=n;n=0;if(o&1){Da=125;break}n=0;b=$(10,fa|0)|0;o=n;n=0;if(o&1){Da=125;break}do if(b){n=0;b=$(10,ha|0)|0;o=n;n=0;if(o&1){Da=125;break c}if(!b){Da=70;break}n=0;b=$(10,Y|0)|0;o=n;n=0;if(o&1){Da=125;break c}if(!b){Da=70;break}n=0;b=$(10,ca|0)|0;o=n;n=0;if(o&1){Da=125;break c}if(!b){Da=70;break}n=0;Z(38,G|0);o=n;n=0;if(o&1){Da=125;break c}ok(H|0,G|0,192)|0}else Da=70;while(0);if((Da|0)==70){Da=0;k=E;m=N;o=k+64|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0));k=D;m=K;o=k+64|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0));n=0;aa(12,F|0,E|0,D|0);o=n;n=0;if(o&1){Da=125;break}if((a[F>>0]|0)==1){Da=83;break}k=B;m=u;o=k+128|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0));n=0;_(16,C|0,B|0);o=n;n=0;if(o&1){Da=125;break}ok(H|0,C|0,192)|0}k=A;m=W;o=k+96|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0));ok(t|0,H|0,192)|0;b=c[h>>2]|0;if((b|0)==(c[g>>2]|0)){n=0;Z(39,ma|0);o=n;n=0;if(o&1){Da=125;break}b=c[h>>2]|0}ok((c[ma>>2]|0)+(b*288|0)|0,A|0,288)|0;c[h>>2]=b+1;if(x>>>0>=z>>>0)break b}switch(Da|0){case 16:{n=0;_(14,b|0,y|0);n=0;Da=125;break}case 20:{n=0;_(8,b|0,d|0);n=0;Da=125;break}case 22:{n=0;_(14,d|0,y|0);n=0;Da=125;break}case 23:break;case 30:{n=0;_(14,b|0,y|0);n=0;Da=125;break}case 31:{Da=32;break}case 36:{n=0;_(14,d|0,y|0);n=0;Da=125;break}case 37:{Da=38;break}case 42:{n=0;_(14,e|0,y|0);n=0;Da=125;break}case 43:{Da=44;break}case 48:{n=0;_(14,b|0,y|0);n=0;Da=125;break}case 49:{Da=50;break}case 54:{Da=55;break}case 65:{Da=66;break}case 83:{Da=66;break}}if((Da|0)==66)Da=55;else if((Da|0)==125){Ga=na()|0;Sb(ma);Mb(Ha);za(Ga|0)}if((Da|0)==55)Da=50;if((Da|0)==50)Da=44;if((Da|0)==44)Da=38;if((Da|0)==38)Da=32;b=c[g>>2]|0;if(b|0)Zb(c[ma>>2]|0,b*288|0,8);break a}while(0);c[ta>>2]=c[ma>>2];c[ta+4>>2]=c[ma+4>>2];c[ta+8>>2]=c[ma+8>>2];g=c[ta>>2]|0;b=c[ta+8>>2]|0;h=g+(b*288|0)|0;i=c[ta+4>>2]|0;c[Ea>>2]=g;c[Ea+4>>2]=i;j=Ea+8|0;c[j>>2]=g;c[Ea+12>>2]=h;n=0;Z(40,oa|0);ma=n;n=0;if(ma&1){Ga=na()|0;Rb(Ea);Mb(Ha);za(Ga|0)}ok(Ca|0,oa|0,384)|0;do if(b){b=Aa+384|0;d=ya+384|0;e=ya+480|0;f=g;while(1){k=f;f=f+288|0;ok(Aa|0,Ca|0,384)|0;ok(b|0,k|0,288)|0;ok(ya|0,Ca|0,384)|0;ok(d|0,k|0,288)|0;ok(wa|0,Aa|0,384)|0;k=ua;m=b;o=k+96|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(o|0));ok(ta|0,e|0,192)|0;n=0;aa(13,va|0,ua|0,ta|0);oa=n;n=0;if(oa&1)break;n=0;aa(14,Ba|0,wa|0,va|0);oa=n;n=0;if(oa&1)break;ok(Ca|0,Ba|0,384)|0;if((f|0)==(h|0)){Da=94;break}}if((Da|0)==94){c[j>>2]=h;ok(sa|0,Ca|0,384)|0;break}b=na()|0;c[j>>2]=f;n=0;Z(41,Ea|0);Ga=n;n=0;if(Ga&1){Ga=na()|0;Mb(Ha);za(Ga|0)}else{Ga=b;Mb(Ha);za(Ga|0)}}else ok(sa|0,Ca|0,384)|0;while(0);if(i|0)Zb(g,i*288|0,8);n=0;Z(40,ra|0);Ea=n;n=0;if(Ea&1){Ga=na()|0;Mb(Ha);za(Ga|0)}do if((((((((Xj(sa,ra,32)|0)==0?(Xj(sa+32|0,ra+32|0,32)|0)==0:0)?(Xj(sa+64|0,ra+64|0,32)|0)==0:0)?(Xj(sa+96|0,ra+96|0,32)|0)==0:0)?(Xj(sa+128|0,ra+128|0,32)|0)==0:0)?(Xj(sa+160|0,ra+160|0,32)|0)==0:0)?(Xj(sa+192|0,ra+192|0,32)|0)==0:0)?(Xj(sa+224|0,ra+224|0,32)|0)==0:0){if(Xj(sa+256|0,ra+256|0,32)|0){Da=113;break}if(Xj(sa+288|0,ra+288|0,32)|0){Da=113;break}if(Xj(sa+320|0,ra+320|0,32)|0){Da=113;break}if(Xj(sa+352|0,ra+352|0,32)|0){Da=115;break}Ea=xa;c[Ea>>2]=1;c[Ea+4>>2]=0;Ea=xa+8|0;c[Ea>>2]=0;c[Ea+4>>2]=0;c[Ea+8>>2]=0;c[Ea+12>>2]=0;c[Ea+16>>2]=0;c[Ea+20>>2]=0}else Da=113;while(0);if((Da|0)==113)Da=115;if((Da|0)==115){c[xa>>2]=0;c[xa+4>>2]=0;c[xa+8>>2]=0;c[xa+12>>2]=0;c[xa+16>>2]=0;c[xa+20>>2]=0;c[xa+24>>2]=0;c[xa+28>>2]=0}}else{Ea=xa;c[Ea>>2]=1;c[Ea+4>>2]=0;Ea=xa+8|0;c[Ea>>2]=0;c[Ea+4>>2]=0;c[Ea+8>>2]=0;c[Ea+12>>2]=0;c[Ea+16>>2]=0;c[Ea+20>>2]=0}k=qa;o=k+32|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(o|0));n=0;ea(4,pa|0,xa|0,qa|0,32);Ea=n;n=0;if(!(Ea&1)?(n=0,aa(5,Fa|0,qa|0,32),Ea=n,n=0,!(Ea&1)):0){b=Fa+8|0;n=0;aa(7,Fa|0,c[b>>2]|0,1);Ea=n;n=0;if(Ea&1){Ga=na()|0;Ob(Fa);Mb(Ha);za(Ga|0)}d=c[b>>2]|0;c[b>>2]=d+1;a[(c[Fa>>2]|0)+d>>0]=0;d=c[Fa>>2]|0;b=c[Fa+4>>2]|0;if(b|0)Zb(d,b,1);b=c[Ha+4>>2]|0;if(b|0)Zb(c[Ha>>2]|0,b,1);Ha=d;l=Ga;return Ha|0}Ga=na()|0;Mb(Ha);za(Ga|0)}while(0);b=c[Ha+4>>2]|0;if(b|0)Zb(c[Ha>>2]|0,b,1);Ha=16464;l=Ga;return Ha|0}function Rb(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;e=c[a+12>>2]|0;if((d|0)!=(e|0))c[b>>2]=d+(((((e+-288-d|0)>>>0)/288|0)+1|0)*288|0);b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b*288|0,8);return}function Sb(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b*288|0,8);return}function Tb(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=1;b=Od(e,1952,a,b)|0;l=d;return b|0}function Ub(){bb();return}function Vb(a,b){a=a|0;b=b|0;return zi(c[a>>2]|0,c[a+4>>2]|0,b)|0}function Wb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=0-d|0;f=b+((b+-1+d&g)-b)|0;if(f>>>0>>0){c[a>>2]=0;return}b=N(f,e)|0;h=(e|0)==0;if(h?0:((b>>>0)/((h?1:e)>>>0)|0|0)!=(f|0)){c[a>>2]=0;return}if((d+-1&(d|-2147483648)|0)!=0|b>>>0>g>>>0)$i(2008);c[a>>2]=1;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=f;return}function Xb(a,b,c){a=a|0;b=b|0;c=c|0;return Mg(a,b,c)|0}function Yb(a){a=a|0;Ng(a)}function Zb(a,b,c){a=a|0;b=b|0;c=c|0;Og(a,b,c);return}function _b(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Pg(a,b,c,d,e,f)|0}function $b(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;k=l;l=l+112|0;h=k+32|0;j=k;if((g|0)==32){m=f;g=m;m=m+4|0;m=ga(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0,d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24|0)|0;g=y;o=f+8|0;n=o;o=o+4|0;o=ga(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24|0)|0;n=y;q=f+16|0;p=q;q=q+4|0;q=ga(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24|0,d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24|0)|0;p=y;i=f+24|0;f=i;i=i+4|0;i=ga(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24|0,d[i>>0]|d[i+1>>0]<<8|d[i+2>>0]<<16|d[i+3>>0]<<24|0)|0;c[h>>2]=i;c[h+4>>2]=y;i=h+8|0;c[i>>2]=q;c[i+4>>2]=p;i=h+16|0;c[i>>2]=o;c[i+4>>2]=n;i=h+24|0;c[i>>2]=m;c[i+4>>2]=g;Mc(h,40,8,-268435457,-1025378925);c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];h=k+64+6|0;i=h;f=j;g=i+32|0;do{b[i>>1]=b[f>>1]|0;i=i+2|0;f=f+2|0}while((i|0)<(g|0));i=e+8|0;f=h;g=i+32|0;do{b[i>>1]=b[f>>1]|0;i=i+2|0;f=f+2|0}while((i|0)<(g|0));q=0;a[e>>0]=q;l=k;return}else{a[e+1>>0]=0;q=1;a[e>>0]=q;l=k;return}}function ac(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function bc(a){a=a|0;var b=0;b=a;if((((c[b>>2]|0)==0&(c[b+4>>2]|0)==0?(b=a+8|0,(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0)?(b=a+16|0,(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0)?(b=a+24|0,(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){b=1;return b|0}b=0;return b|0}function cc(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;k=l;l=l+112|0;i=k+32|0;h=k;j=k+64|0;do if((g|0)==32){n=f;m=n;n=n+4|0;n=ga(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24|0,d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0)|0;m=y;p=f+8|0;o=p;p=p+4|0;p=ga(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24|0,d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24|0)|0;o=y;r=f+16|0;q=r;r=r+4|0;r=ga(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24|0,d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24|0)|0;q=y;g=f+24|0;f=g;g=g+4|0;g=ga(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24|0,d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0;c[i>>2]=g;c[i+4>>2]=y;g=i+8|0;c[g>>2]=r;c[g+4>>2]=q;g=i+16|0;c[g>>2]=p;c[g+4>>2]=o;g=i+24|0;c[g>>2]=n;c[g+4>>2]=m;if(!(Qc(i,136)|0)){h=1;break}Mc(i,72,136,-460954743,-2016278654);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[h+16>>2]=c[i+16>>2];c[h+20>>2]=c[i+20>>2];c[h+24>>2]=c[i+24>>2];c[h+28>>2]=c[i+28>>2];g=j+6|0;i=g;f=i+32|0;do{b[i>>1]=b[h>>1]|0;i=i+2|0;h=h+2|0}while((i|0)<(f|0));i=e+8|0;h=g;f=i+32|0;do{b[i>>1]=b[h>>1]|0;i=i+2|0;h=h+2|0}while((i|0)<(f|0));r=0;a[e>>0]=r;l=k;return}else h=0;while(0);a[e+1>>0]=h;r=1;a[e>>0]=r;l=k;return}function dc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+96|0;h=g+64|0;i=g+32|0;f=g;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[i+16>>2]=c[b+16>>2];c[i+20>>2]=c[b+20>>2];c[i+24>>2]=c[b+24>>2];c[i+28>>2]=c[b+28>>2];b=h;c[b>>2]=1;c[b+4>>2]=0;b=h+8|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;Mc(i,h,136,-460954743,-2016278654);c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];b=i;c[b>>2]=-980480611;c[b+4>>2]=-748862579;b=i+8|0;c[b>>2]=-171504835;c[b+4>>2]=175696680;b=i+16|0;c[b>>2]=2021213740;c[b+4>>2]=1718526831;b=i+24|0;c[b>>2]=-1710760145;c[b+4>>2]=235567041;b=h;c[b>>2]=-662897337;c[b+4>>2]=1008765974;b=h+8|0;c[b>>2]=1752287885;c[b+4>>2]=-1753126255;b=h+16|0;c[b>>2]=-2122229667;c[b+4>>2]=-1202698826;b=h+24|0;c[b>>2]=-516841431;c[b+4>>2]=811880050;Mc(f,i,h,-460954743,-2016278654);if((e|0)!=32){i=0;l=g;return i|0}e=f+24|0;e=ga(c[e>>2]|0,c[e+4>>2]|0)|0;h=y;i=d;b=i;a[b>>0]=e;a[b+1>>0]=e>>8;a[b+2>>0]=e>>16;a[b+3>>0]=e>>24;i=i+4|0;a[i>>0]=h;a[i+1>>0]=h>>8;a[i+2>>0]=h>>16;a[i+3>>0]=h>>24;i=f+16|0;i=ga(c[i>>2]|0,c[i+4>>2]|0)|0;h=y;b=d+8|0;e=b;a[e>>0]=i;a[e+1>>0]=i>>8;a[e+2>>0]=i>>16;a[e+3>>0]=i>>24;b=b+4|0;a[b>>0]=h;a[b+1>>0]=h>>8;a[b+2>>0]=h>>16;a[b+3>>0]=h>>24;b=f+8|0;b=ga(c[b>>2]|0,c[b+4>>2]|0)|0;h=y;e=d+16|0;i=e;a[i>>0]=b;a[i+1>>0]=b>>8;a[i+2>>0]=b>>16;a[i+3>>0]=b>>24;e=e+4|0;a[e>>0]=h;a[e+1>>0]=h>>8;a[e+2>>0]=h>>16;a[e+3>>0]=h>>24;e=f;e=ga(c[e>>2]|0,c[e+4>>2]|0)|0;h=y;i=d+24|0;f=i;a[f>>0]=e;a[f+1>>0]=e>>8;a[f+2>>0]=e>>16;a[f+3>>0]=e>>24;i=i+4|0;a[i>>0]=h;a[i+1>>0]=h>>8;a[i+2>>0]=h>>16;a[i+3>>0]=h>>24;i=2;l=g;return i|0}function ec(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];b=f+32|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];b=f;d=a+64|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));l=e;return}function fc(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;b=a+32|0;c[b>>2]=-980480611;c[b+4>>2]=-748862579;b=a+40|0;c[b>>2]=-171504835;c[b+4>>2]=175696680;b=a+48|0;c[b>>2]=2021213740;c[b+4>>2]=1718526831;b=a+56|0;c[b>>2]=-1710760145;c[b+4>>2]=235567041;a=a+64|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;return}function gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+288|0;f=j+192|0;g=j+96|0;h=j;i=g;e=i+96|0;do{c[i>>2]=c[b>>2];i=i+4|0;b=b+4|0}while((i|0)<(e|0));i=f;b=d;e=i+96|0;do{c[i>>2]=c[b>>2];i=i+4|0;b=b+4|0}while((i|0)<(e|0));Dc(h,g,f);i=a;b=h;e=i+96|0;do{c[i>>2]=c[b>>2];i=i+4|0;b=b+4|0}while((i|0)<(e|0));l=j;return}function hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+192|0;g=j+96|0;h=j;i=g;e=i+96|0;do{c[i>>2]=c[b>>2];i=i+4|0;b=b+4|0}while((i|0)<(e|0));c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];c[f+20>>2]=c[d+20>>2];c[f+24>>2]=c[d+24>>2];c[f+28>>2]=c[d+28>>2];Cc(h,g,f);i=a;b=h;e=i+96|0;do{c[i>>2]=c[b>>2];i=i+4|0;b=b+4|0}while((i|0)<(e|0));l=j;return}function ic(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+208|0;g=k+104|0;i=k+72|0;h=k;j=k+136|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[i+16>>2]=c[e+16>>2];c[i+20>>2]=c[e+20>>2];c[i+24>>2]=c[e+24>>2];c[i+28>>2]=c[e+28>>2];c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];uc(h,i,g);e=a[h>>0]|0;f=a[h+1>>0]|0;g=j;h=h+2|0;i=g+70|0;do{b[g>>1]=b[h>>1]|0;g=g+2|0;h=h+2|0}while((g|0)<(i|0));if(e<<24>>24==1){a[d+1>>0]=f<<24>>24!=0&1;j=1;a[d>>0]=j;l=k;return}else{g=d+8|0;h=j+6|0;i=g+64|0;do{b[g>>1]=b[h>>1]|0;g=g+2|0;h=h+2|0}while((g|0)<(i|0));j=0;a[d>>0]=j;l=k;return}}function jc(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function kc(a,b){a=a|0;b=b|0;b=b+32|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+80|0;d=f;Ac(d,b);e=d;if((c[e>>2]|0)==1&(c[e+4>>2]|0)==0){e=a+8|0;b=d+8|0;d=e+64|0;do{c[e>>2]=c[b>>2];e=e+4|0;b=b+4|0}while((e|0)<(d|0));b=1;d=0}else{b=0;d=0}c[a>>2]=b;c[a+4>>2]=d;l=f;return}function mc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+64|0;d=f;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];e=b+32|0;b=d+32|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[b+16>>2]=c[e+16>>2];c[b+20>>2]=c[e+20>>2];c[b+24>>2]=c[e+24>>2];c[b+28>>2]=c[e+28>>2];b=a;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));e=a+64|0;c[e>>2]=-980480611;c[e+4>>2]=-748862579;e=a+72|0;c[e>>2]=-171504835;c[e+4>>2]=175696680;e=a+80|0;c[e>>2]=2021213740;c[e+4>>2]=1718526831;a=a+88|0;c[a>>2]=-1710760145;c[a+4>>2]=235567041;l=f;return}function nc(a){a=a|0;var b=0,d=0;b=a;d=b+64|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));b=a+64|0;c[b>>2]=-980480611;c[b+4>>2]=-748862579;b=a+72|0;c[b>>2]=-171504835;c[b+4>>2]=175696680;b=a+80|0;c[b>>2]=2021213740;c[b+4>>2]=1718526831;b=a+88|0;c[b>>2]=-1710760145;c[b+4>>2]=235567041;b=a+96|0;d=b+96|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));return}function oc(a){a=a|0;var b=0;b=a;c[b>>2]=-980480611;c[b+4>>2]=-748862579;b=a+8|0;c[b>>2]=-171504835;c[b+4>>2]=175696680;b=a+16|0;c[b>>2]=2021213740;c[b+4>>2]=1718526831;b=a+24|0;c[b>>2]=-1710760145;c[b+4>>2]=235567041;hk(a+32|0,0,352)|0;return}function pc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=l;l=l+1152|0;f=d+768|0;g=d+384|0;e=d;ok(g|0,b|0,384)|0;ok(f|0,c|0,384)|0;Tc(e,g,f);ok(a|0,e|0,384)|0;l=d;return}function qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=l;l=l+384|0;e=d;Ec(e,b,c);ok(a|0,e|0,384)|0;l=d;return}function rc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+400|0;h=n+200|0;i=n+136|0;k=n;m=n+264|0;j=i;g=j+64|0;do{c[j>>2]=c[e>>2];j=j+4|0;e=e+4|0}while((j|0)<(g|0));j=h;e=f;g=j+64|0;do{c[j>>2]=c[e>>2];j=j+4|0;e=e+4|0}while((j|0)<(g|0));vc(k,i,h);j=a[k>>0]|0;e=a[k+1>>0]|0;ok(m|0,k+2|0,134)|0;if(j<<24>>24==1){a[d+1>>0]=e<<24>>24!=0&1;m=1;a[d>>0]=m;l=n;return}else{j=d+8|0;e=m+6|0;g=j+128|0;do{b[j>>1]=b[e>>1]|0;j=j+2|0;e=e+2|0}while((j|0)<(g|0));m=0;a[d>>0]=m;l=n;return}}function sc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=l;l=l+128|0;d=f;e=d;g=b;h=e+64|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));e=d+64|0;g=b+64|0;h=e+64|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));e=a;g=d;h=e+128|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));h=a+128|0;c[h>>2]=-980480611;c[h+4>>2]=-748862579;h=a+136|0;c[h>>2]=-171504835;c[h+4>>2]=175696680;h=a+144|0;c[h>>2]=2021213740;c[h+4>>2]=1718526831;h=a+152|0;c[h>>2]=-1710760145;c[h+4>>2]=235567041;h=a+160|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;l=f;return}function tc(b,c){b=b|0;c=c|0;var d=0,e=0;e=l;l=l+16|0;d=e;if((a[b>>0]|0)==1){vi(d,c,6248,9);d=Ti(d)|0;l=e;return d|0}else{vi(d,c,6230,18);d=Ti(d)|0;l=e;return d|0}return 0}function uc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;h=l;l=l+224|0;f=h+160|0;m=h+128|0;k=h+96|0;j=h+64|0;g=h+32|0;i=h;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[m+16>>2]=c[e+16>>2];c[m+20>>2]=c[e+20>>2];c[m+24>>2]=c[e+24>>2];c[m+28>>2]=c[e+28>>2];c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2];Mc(m,f,136,-460954743,-2016278654);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[i+16>>2]=c[m+16>>2];c[i+20>>2]=c[m+20>>2];c[i+24>>2]=c[m+24>>2];c[i+28>>2]=c[m+28>>2];c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[m+16>>2]=c[d+16>>2];c[m+20>>2]=c[d+20>>2];c[m+24>>2]=c[d+24>>2];c[m+28>>2]=c[d+28>>2];c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];c[f+20>>2]=c[d+20>>2];c[f+24>>2]=c[d+24>>2];c[f+28>>2]=c[d+28>>2];Mc(m,f,136,-460954743,-2016278654);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];c[f+20>>2]=c[d+20>>2];c[f+24>>2]=c[d+24>>2];c[f+28>>2]=c[d+28>>2];Mc(k,f,136,-460954743,-2016278654);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];k=f;c[k>>2]=1353525463;c[k+4>>2]=2048379561;k=f+8|0;c[k>>2]=-514514503;c[k+4>>2]=527090042;k=f+16|0;c[k>>2]=1768673924;c[k+4>>2]=860613198;k=f+24|0;c[k>>2]=-837313138;c[k+4>>2]=706701124;Kc(j,f,136);c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];c[g+16>>2]=c[j+16>>2];c[g+20>>2]=c[j+20>>2];c[g+24>>2]=c[j+24>>2];c[g+28>>2]=c[j+28>>2];if(!(Xj(i,g,32)|0)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];c[f+20>>2]=c[d+20>>2];c[f+24>>2]=c[d+24>>2];c[f+28>>2]=c[d+28>>2];g=f+32|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];g=b+8|0;d=f;e=g+64|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0));m=0;a[b>>0]=m;l=h;return}else{a[b+1>>0]=0;m=1;a[b>>0]=m;l=h;return}}function vc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+960|0;f=n+768|0;g=n+704|0;h=n+512|0;i=n+320|0;j=n+128|0;k=n;dd(k,e);dd(g,d);m=f;o=d;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));cd(i,g,f);c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];p=f;c[p>>2]=2008548008;c[p+4>>2]=1006188771;p=f+8|0;c[p>>2]=909333341;c[p+4>>2]=34282279;p=f+16|0;c[p>>2]=1232425568;c[p+4>>2]=649588208;p=f+24|0;c[p>>2]=1132767341;c[p+4>>2]=622118450;Kc(g,f,136);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[j+16>>2]=c[g+16>>2];c[j+20>>2]=c[g+20>>2];c[j+24>>2]=c[g+24>>2];c[j+28>>2]=c[g+28>>2];p=i+32|0;c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];c[g+16>>2]=c[p+16>>2];c[g+20>>2]=c[p+20>>2];c[g+24>>2]=c[p+24>>2];c[g+28>>2]=c[p+28>>2];p=f;c[p>>2]=-774045849;c[p+4>>2]=954723532;p=f+8|0;c[p>>2]=-1815212738;c[p+4>>2]=1710273405;p=f+16|0;c[p>>2]=581697706;c[p+4>>2]=-683028259;p=f+24|0;c[p>>2]=1248365901;c[p+4>>2]=21084622;Kc(g,f,136);c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];p=j+32|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];c[p+16>>2]=c[h+16>>2];c[p+20>>2]=c[h+20>>2];c[p+24>>2]=c[h+24>>2];c[p+28>>2]=c[h+28>>2];if((Xj(k,j,32)|0)==0?(Xj(k+32|0,j+32|0,32)|0)==0:0){m=k;o=d;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=k+64|0;o=e;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=h;o=k;p=m+128|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=h+128|0;c[m>>2]=-980480611;c[m+4>>2]=-748862579;m=h+136|0;c[m>>2]=-171504835;c[m+4>>2]=175696680;m=h+144|0;c[m>>2]=2021213740;c[m+4>>2]=1718526831;m=h+152|0;c[m>>2]=-1710760145;c[m+4>>2]=235567041;m=h+160|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;m=f;c[m>>2]=1342177275;c[m+4>>2]=-1399442404;m=f+8|0;c[m>>2]=-1621045975;c[m+4>>2]=922515093;m=f+16|0;c[m>>2]=2021213742;c[m+4>>2]=1718526831;m=f+24|0;c[m>>2]=-1710760145;c[m+4>>2]=235567041;Nc(f,8);c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];wc(i,h,g);m=f;o=k;p=m+128|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));p=f+128|0;c[p>>2]=-980480611;c[p+4>>2]=-748862579;p=f+136|0;c[p>>2]=-171504835;c[p+4>>2]=175696680;p=f+144|0;c[p>>2]=2021213740;c[p+4>>2]=1718526831;p=f+152|0;c[p>>2]=-1710760145;c[p+4>>2]=235567041;p=f+160|0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;xc(j,i,f);p=j+128|0;do if((c[p>>2]|0)==0&(c[p+4>>2]|0)==0){p=j+136|0;if(!((c[p>>2]|0)==0&(c[p+4>>2]|0)==0))break;p=j+144|0;if(!((c[p>>2]|0)==0&(c[p+4>>2]|0)==0))break;p=j+152|0;if(!((c[p>>2]|0)==0&(c[p+4>>2]|0)==0))break;p=j+160|0;if(!((c[p>>2]|0)==0&(c[p+4>>2]|0)==0))break;p=j+168|0;if(!((c[p>>2]|0)==0&(c[p+4>>2]|0)==0))break;p=j+176|0;if(!((c[p>>2]|0)==0&(c[p+4>>2]|0)==0))break;p=j+184|0;if((c[p>>2]|0)==0&(c[p+4>>2]|0)==0){m=f;o=d;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=f+64|0;o=e;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));a[b>>0]=0;m=b+8|0;o=f;p=m+128|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));l=n;return}}while(0);a[b>>0]=1;a[b+1>>0]=1;l=n;return}a[b>>0]=1;a[b+1>>0]=0;l=n;return}function wc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+800|0;h=n+608|0;i=n+416|0;j=n+224|0;k=n+192|0;m=n;f=m;g=f+64|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=m+64|0;c[f>>2]=-980480611;c[f+4>>2]=-748862579;f=m+72|0;c[f>>2]=-171504835;c[f+4>>2]=175696680;f=m+80|0;c[f>>2]=2021213740;c[f+4>>2]=1718526831;f=m+88|0;c[f>>2]=-1710760145;c[f+4>>2]=235567041;f=m+96|0;g=f+96|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];d=h;c[d>>2]=1;c[d+4>>2]=0;d=h+8|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Mc(i,h,8,-268435457,-1025378925);c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];c[k+16>>2]=c[i+16>>2];c[k+20>>2]=c[i+20>>2];c[k+24>>2]=c[i+24>>2];c[k+28>>2]=c[i+28>>2];d=256;while(1){if(!d){d=7;break}d=d+-1|0;if(d>>>0>255){d=7;break}g=k+(d>>>6<<3)|0;o=c[g>>2]|0;g=c[g+4>>2]|0;f=nk(1,0,d&63|0)|0;if(!((o&f|0)==0&(g&y|0)==0)){e=d;d=9;break}}if((d|0)==7){ok(a|0,m|0,192)|0;l=n;return}else if((d|0)==9){a:while(1){ok(i|0,m|0,192)|0;ok(h|0,b|0,192)|0;xc(j,i,h);ok(m|0,j|0,192)|0;while(1){if(!e){d=7;break a}e=e+-1|0;if(e>>>0>255){d=7;break a}o=k+(e>>>6<<3)|0;f=c[o>>2]|0;o=c[o+4>>2]|0;g=nk(1,0,e&63|0)|0;o=(f&g|0)==0&(o&y|0)==0;yc(h,m);ok(m|0,h|0,192)|0;if(!o)continue a}}if((d|0)==7){ok(a|0,m|0,192)|0;l=n;return}}}function xc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;J=l;l=l+1696|0;E=J+1632|0;F=J+1568|0;G=J+1536|0;H=J+1472|0;v=J+1408|0;w=J+1344|0;x=J+1280|0;y=J+1216|0;z=J+1152|0;A=J+1088|0;B=J+1024|0;p=J+960|0;q=J+896|0;r=J+832|0;s=J+768|0;e=J+704|0;f=J+640|0;g=J+576|0;C=J+512|0;h=J+448|0;i=J+384|0;j=J+320|0;k=J+256|0;m=J+192|0;n=J+128|0;D=J+64|0;t=J;u=b+128|0;L=u;if((((((((c[L>>2]|0)==0&(c[L+4>>2]|0)==0?(L=b+136|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=b+144|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=b+152|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=b+160|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=b+168|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=b+176|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=b+184|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0){ok(a|0,d|0,192)|0;l=J;return}o=d+128|0;L=o;if((((((((c[L>>2]|0)==0&(c[L+4>>2]|0)==0?(L=d+136|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=d+144|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=d+152|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=d+160|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=d+168|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=d+176|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0)?(L=d+184|0,(c[L>>2]|0)==0&(c[L+4>>2]|0)==0):0){ok(a|0,b|0,192)|0;l=J;return}dd(t,u);dd(D,o);I=F;K=b;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=D;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(n,F,E);I=F;K=d;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=t;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(m,F,E);I=F;K=u;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=t;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(k,F,E);I=F;K=o;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=D;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(j,F,E);I=F;K=b+64|0;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=j;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(i,F,E);I=F;K=d+64|0;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=k;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(h,F,E);if((((Xj(n,m,32)|0)==0?(Xj(n+32|0,m+32|0,32)|0)==0:0)?(Xj(i,h,32)|0)==0:0)?(Xj(i+32|0,h+32|0,32)|0)==0:0)yc(a,b);else{I=v;K=m;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=n;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[m>>2];c[F+4>>2]=c[m+4>>2];c[F+8>>2]=c[m+8>>2];c[F+12>>2]=c[m+12>>2];c[F+16>>2]=c[m+16>>2];c[F+20>>2]=c[m+20>>2];c[F+24>>2]=c[m+24>>2];c[F+28>>2]=c[m+28>>2];c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];c[E+16>>2]=c[n+16>>2];c[E+20>>2]=c[n+20>>2];c[E+24>>2]=c[n+24>>2];c[E+28>>2]=c[n+28>>2];Lc(F,E,136);c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];c[C+16>>2]=c[F+16>>2];c[C+20>>2]=c[F+20>>2];c[C+24>>2]=c[F+24>>2];c[C+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=C+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];I=v;K=h;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=i;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[h>>2];c[F+4>>2]=c[h+4>>2];c[F+8>>2]=c[h+8>>2];c[F+12>>2]=c[h+12>>2];c[F+16>>2]=c[h+16>>2];c[F+20>>2]=c[h+20>>2];c[F+24>>2]=c[h+24>>2];c[F+28>>2]=c[h+28>>2];c[E>>2]=c[i>>2];c[E+4>>2]=c[i+4>>2];c[E+8>>2]=c[i+8>>2];c[E+12>>2]=c[i+12>>2];c[E+16>>2]=c[i+16>>2];c[E+20>>2]=c[i+20>>2];c[E+24>>2]=c[i+24>>2];c[E+28>>2]=c[i+28>>2];Lc(F,E,136);c[g>>2]=c[F>>2];c[g+4>>2]=c[F+4>>2];c[g+8>>2]=c[F+8>>2];c[g+12>>2]=c[F+12>>2];c[g+16>>2]=c[F+16>>2];c[g+20>>2]=c[F+20>>2];c[g+24>>2]=c[F+24>>2];c[g+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=g+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];I=v;K=C;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=C;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[v>>2];c[F+4>>2]=c[v+4>>2];c[F+8>>2]=c[v+8>>2];c[F+12>>2]=c[v+12>>2];c[F+16>>2]=c[v+16>>2];c[F+20>>2]=c[v+20>>2];c[F+24>>2]=c[v+24>>2];c[F+28>>2]=c[v+28>>2];c[E>>2]=c[C>>2];c[E+4>>2]=c[C+4>>2];c[E+8>>2]=c[C+8>>2];c[E+12>>2]=c[C+12>>2];c[E+16>>2]=c[C+16>>2];c[E+20>>2]=c[C+20>>2];c[E+24>>2]=c[C+24>>2];c[E+28>>2]=c[C+28>>2];Kc(F,E,136);c[w>>2]=c[F>>2];c[w+4>>2]=c[F+4>>2];c[w+8>>2]=c[F+8>>2];c[w+12>>2]=c[F+12>>2];c[w+16>>2]=c[F+16>>2];c[w+20>>2]=c[F+20>>2];c[w+24>>2]=c[F+24>>2];c[w+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Kc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=w+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];dd(f,w);I=F;K=C;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=f;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(e,F,E);I=v;K=g;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=g;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[v>>2];c[F+4>>2]=c[v+4>>2];c[F+8>>2]=c[v+8>>2];c[F+12>>2]=c[v+12>>2];c[F+16>>2]=c[v+16>>2];c[F+20>>2]=c[v+20>>2];c[F+24>>2]=c[v+24>>2];c[F+28>>2]=c[v+28>>2];c[E>>2]=c[g>>2];c[E+4>>2]=c[g+4>>2];c[E+8>>2]=c[g+8>>2];c[E+12>>2]=c[g+12>>2];c[E+16>>2]=c[g+16>>2];c[E+20>>2]=c[g+20>>2];c[E+24>>2]=c[g+24>>2];c[E+28>>2]=c[g+28>>2];Kc(F,E,136);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];c[s+16>>2]=c[F+16>>2];c[s+20>>2]=c[F+20>>2];c[s+24>>2]=c[F+24>>2];c[s+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Kc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=s+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];I=F;K=n;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=f;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(r,F,E);I=F;K=i;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=E;K=e;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(q,F,E);dd(v,s);I=H;K=e;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[v>>2];c[F+4>>2]=c[v+4>>2];c[F+8>>2]=c[v+8>>2];c[F+12>>2]=c[v+12>>2];c[F+16>>2]=c[v+16>>2];c[F+20>>2]=c[v+20>>2];c[F+24>>2]=c[v+24>>2];c[F+28>>2]=c[v+28>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];c[E+16>>2]=c[e+16>>2];c[E+20>>2]=c[e+20>>2];c[E+24>>2]=c[e+24>>2];c[E+28>>2]=c[e+28>>2];Lc(F,E,136);c[x>>2]=c[F>>2];c[x+4>>2]=c[F+4>>2];c[x+8>>2]=c[F+8>>2];c[x+12>>2]=c[F+12>>2];c[x+16>>2]=c[F+16>>2];c[x+20>>2]=c[F+20>>2];c[x+24>>2]=c[F+24>>2];c[x+28>>2]=c[F+28>>2];b=v+32|0;c[F>>2]=c[b>>2];c[F+4>>2]=c[b+4>>2];c[F+8>>2]=c[b+8>>2];c[F+12>>2]=c[b+12>>2];c[F+16>>2]=c[b+16>>2];c[F+20>>2]=c[b+20>>2];c[F+24>>2]=c[b+24>>2];c[F+28>>2]=c[b+28>>2];b=H+32|0;c[E>>2]=c[b>>2];c[E+4>>2]=c[b+4>>2];c[E+8>>2]=c[b+8>>2];c[E+12>>2]=c[b+12>>2];c[E+16>>2]=c[b+16>>2];c[E+20>>2]=c[b+20>>2];c[E+24>>2]=c[b+24>>2];c[E+28>>2]=c[b+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];b=x+32|0;c[b>>2]=c[G>>2];c[b+4>>2]=c[G+4>>2];c[b+8>>2]=c[G+8>>2];c[b+12>>2]=c[G+12>>2];c[b+16>>2]=c[G+16>>2];c[b+20>>2]=c[G+20>>2];c[b+24>>2]=c[G+24>>2];c[b+28>>2]=c[G+28>>2];I=v;K=r;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=r;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[v>>2];c[F+4>>2]=c[v+4>>2];c[F+8>>2]=c[v+8>>2];c[F+12>>2]=c[v+12>>2];c[F+16>>2]=c[v+16>>2];c[F+20>>2]=c[v+20>>2];c[F+24>>2]=c[v+24>>2];c[F+28>>2]=c[v+28>>2];c[E>>2]=c[r>>2];c[E+4>>2]=c[r+4>>2];c[E+8>>2]=c[r+8>>2];c[E+12>>2]=c[r+12>>2];c[E+16>>2]=c[r+16>>2];c[E+20>>2]=c[r+20>>2];c[E+24>>2]=c[r+24>>2];c[E+28>>2]=c[r+28>>2];Kc(F,E,136);c[w>>2]=c[F>>2];c[w+4>>2]=c[F+4>>2];c[w+8>>2]=c[F+8>>2];c[w+12>>2]=c[F+12>>2];c[w+16>>2]=c[F+16>>2];c[w+20>>2]=c[F+20>>2];c[w+24>>2]=c[F+24>>2];c[w+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Kc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=w+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];c[F>>2]=c[x>>2];c[F+4>>2]=c[x+4>>2];c[F+8>>2]=c[x+8>>2];c[F+12>>2]=c[x+12>>2];c[F+16>>2]=c[x+16>>2];c[F+20>>2]=c[x+20>>2];c[F+24>>2]=c[x+24>>2];c[F+28>>2]=c[x+28>>2];c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2];c[E+16>>2]=c[w+16>>2];c[E+20>>2]=c[w+20>>2];c[E+24>>2]=c[w+24>>2];c[E+28>>2]=c[w+28>>2];Lc(F,E,136);c[p>>2]=c[F>>2];c[p+4>>2]=c[F+4>>2];c[p+8>>2]=c[F+8>>2];c[p+12>>2]=c[F+12>>2];c[p+16>>2]=c[F+16>>2];c[p+20>>2]=c[F+20>>2];c[p+24>>2]=c[F+24>>2];c[p+28>>2]=c[F+28>>2];c[F>>2]=c[b>>2];c[F+4>>2]=c[b+4>>2];c[F+8>>2]=c[b+8>>2];c[F+12>>2]=c[b+12>>2];c[F+16>>2]=c[b+16>>2];c[F+20>>2]=c[b+20>>2];c[F+24>>2]=c[b+24>>2];c[F+28>>2]=c[b+28>>2];c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=p+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];I=a;K=p;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=x;K=s;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=v;K=r;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=p;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[r>>2];c[F+4>>2]=c[r+4>>2];c[F+8>>2]=c[r+8>>2];c[F+12>>2]=c[r+12>>2];c[F+16>>2]=c[r+16>>2];c[F+20>>2]=c[r+20>>2];c[F+24>>2]=c[r+24>>2];c[F+28>>2]=c[r+28>>2];c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2];c[E+16>>2]=c[p+16>>2];c[E+20>>2]=c[p+20>>2];c[E+24>>2]=c[p+24>>2];c[E+28>>2]=c[p+28>>2];Lc(F,E,136);c[w>>2]=c[F>>2];c[w+4>>2]=c[F+4>>2];c[w+8>>2]=c[F+8>>2];c[w+12>>2]=c[F+12>>2];c[w+16>>2]=c[F+16>>2];c[w+20>>2]=c[F+20>>2];c[w+24>>2]=c[F+24>>2];c[w+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=w+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];cd(y,x,w);I=v;K=q;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=q;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[v>>2];c[F+4>>2]=c[v+4>>2];c[F+8>>2]=c[v+8>>2];c[F+12>>2]=c[v+12>>2];c[F+16>>2]=c[v+16>>2];c[F+20>>2]=c[v+20>>2];c[F+24>>2]=c[v+24>>2];c[F+28>>2]=c[v+28>>2];c[E>>2]=c[q>>2];c[E+4>>2]=c[q+4>>2];c[E+8>>2]=c[q+8>>2];c[E+12>>2]=c[q+12>>2];c[E+16>>2]=c[q+16>>2];c[E+20>>2]=c[q+20>>2];c[E+24>>2]=c[q+24>>2];c[E+28>>2]=c[q+28>>2];Kc(F,E,136);c[w>>2]=c[F>>2];c[w+4>>2]=c[F+4>>2];c[w+8>>2]=c[F+8>>2];c[w+12>>2]=c[F+12>>2];c[w+16>>2]=c[F+16>>2];c[w+20>>2]=c[F+20>>2];c[w+24>>2]=c[F+24>>2];c[w+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Kc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=w+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[F+16>>2]=c[y+16>>2];c[F+20>>2]=c[y+20>>2];c[F+24>>2]=c[y+24>>2];c[F+28>>2]=c[y+28>>2];c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2];c[E+16>>2]=c[w+16>>2];c[E+20>>2]=c[w+20>>2];c[E+24>>2]=c[w+24>>2];c[E+28>>2]=c[w+28>>2];Lc(F,E,136);c[B>>2]=c[F>>2];c[B+4>>2]=c[F+4>>2];c[B+8>>2]=c[F+8>>2];c[B+12>>2]=c[F+12>>2];c[B+16>>2]=c[F+16>>2];c[B+20>>2]=c[F+20>>2];c[B+24>>2]=c[F+24>>2];c[B+28>>2]=c[F+28>>2];K=y+32|0;c[F>>2]=c[K>>2];c[F+4>>2]=c[K+4>>2];c[F+8>>2]=c[K+8>>2];c[F+12>>2]=c[K+12>>2];c[F+16>>2]=c[K+16>>2];c[F+20>>2]=c[K+20>>2];c[F+24>>2]=c[K+24>>2];c[F+28>>2]=c[K+28>>2];c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=B+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];I=v;K=u;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=H;K=o;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[F+16>>2]=c[u+16>>2];c[F+20>>2]=c[u+20>>2];c[F+24>>2]=c[u+24>>2];c[F+28>>2]=c[u+28>>2];c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2];c[E+16>>2]=c[o+16>>2];c[E+20>>2]=c[o+20>>2];c[E+24>>2]=c[o+24>>2];c[E+28>>2]=c[o+28>>2];Kc(F,E,136);c[w>>2]=c[F>>2];c[w+4>>2]=c[F+4>>2];c[w+8>>2]=c[F+8>>2];c[w+12>>2]=c[F+12>>2];c[w+16>>2]=c[F+16>>2];c[w+20>>2]=c[F+20>>2];c[w+24>>2]=c[F+24>>2];c[w+28>>2]=c[F+28>>2];I=v+32|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[F+16>>2]=c[I+16>>2];c[F+20>>2]=c[I+20>>2];c[F+24>>2]=c[I+24>>2];c[F+28>>2]=c[I+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Kc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=w+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];dd(x,w);I=H;K=t;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[x>>2];c[F+4>>2]=c[x+4>>2];c[F+8>>2]=c[x+8>>2];c[F+12>>2]=c[x+12>>2];c[F+16>>2]=c[x+16>>2];c[F+20>>2]=c[x+20>>2];c[F+24>>2]=c[x+24>>2];c[F+28>>2]=c[x+28>>2];c[E>>2]=c[t>>2];c[E+4>>2]=c[t+4>>2];c[E+8>>2]=c[t+8>>2];c[E+12>>2]=c[t+12>>2];c[E+16>>2]=c[t+16>>2];c[E+20>>2]=c[t+20>>2];c[E+24>>2]=c[t+24>>2];c[E+28>>2]=c[t+28>>2];Lc(F,E,136);c[y>>2]=c[F>>2];c[y+4>>2]=c[F+4>>2];c[y+8>>2]=c[F+8>>2];c[y+12>>2]=c[F+12>>2];c[y+16>>2]=c[F+16>>2];c[y+20>>2]=c[F+20>>2];c[y+24>>2]=c[F+24>>2];c[y+28>>2]=c[F+28>>2];b=x+32|0;c[F>>2]=c[b>>2];c[F+4>>2]=c[b+4>>2];c[F+8>>2]=c[b+8>>2];c[F+12>>2]=c[b+12>>2];c[F+16>>2]=c[b+16>>2];c[F+20>>2]=c[b+20>>2];c[F+24>>2]=c[b+24>>2];c[F+28>>2]=c[b+28>>2];b=H+32|0;c[E>>2]=c[b>>2];c[E+4>>2]=c[b+4>>2];c[E+8>>2]=c[b+8>>2];c[E+12>>2]=c[b+12>>2];c[E+16>>2]=c[b+16>>2];c[E+20>>2]=c[b+20>>2];c[E+24>>2]=c[b+24>>2];c[E+28>>2]=c[b+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];b=y+32|0;c[b>>2]=c[G>>2];c[b+4>>2]=c[G+4>>2];c[b+8>>2]=c[G+8>>2];c[b+12>>2]=c[G+12>>2];c[b+16>>2]=c[G+16>>2];c[b+20>>2]=c[G+20>>2];c[b+24>>2]=c[G+24>>2];c[b+28>>2]=c[G+28>>2];I=H;K=D;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[F+16>>2]=c[y+16>>2];c[F+20>>2]=c[y+20>>2];c[F+24>>2]=c[y+24>>2];c[F+28>>2]=c[y+28>>2];c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];c[E+16>>2]=c[D+16>>2];c[E+20>>2]=c[D+20>>2];c[E+24>>2]=c[D+24>>2];c[E+28>>2]=c[D+28>>2];Lc(F,E,136);c[z>>2]=c[F>>2];c[z+4>>2]=c[F+4>>2];c[z+8>>2]=c[F+8>>2];c[z+12>>2]=c[F+12>>2];c[z+16>>2]=c[F+16>>2];c[z+20>>2]=c[F+20>>2];c[z+24>>2]=c[F+24>>2];c[z+28>>2]=c[F+28>>2];c[F>>2]=c[b>>2];c[F+4>>2]=c[b+4>>2];c[F+8>>2]=c[b+8>>2];c[F+12>>2]=c[b+12>>2];c[F+16>>2]=c[b+16>>2];c[F+20>>2]=c[b+20>>2];c[F+24>>2]=c[b+24>>2];c[F+28>>2]=c[b+28>>2];I=H+32|0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[E+16>>2]=c[I+16>>2];c[E+20>>2]=c[I+20>>2];c[E+24>>2]=c[I+24>>2];c[E+28>>2]=c[I+28>>2];Lc(F,E,136);c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[G+16>>2]=c[F+16>>2];c[G+20>>2]=c[F+20>>2];c[G+24>>2]=c[F+24>>2];c[G+28>>2]=c[F+28>>2];I=z+32|0;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[I+16>>2]=c[G+16>>2];c[I+20>>2]=c[G+20>>2];c[I+24>>2]=c[G+24>>2];c[I+28>>2]=c[G+28>>2];I=E;K=C;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));cd(A,z,E);I=a+64|0;K=B;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0));I=a+128|0;K=A;L=I+64|0;do{c[I>>2]=c[K>>2];I=I+4|0;K=K+4|0}while((I|0)<(L|0))}l=J;return}function yc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=l;l=l+1120|0;o=y+1056|0;q=y+992|0;r=y+960|0;s=y+896|0;t=y+832|0;u=y+768|0;v=y+704|0;w=y+640|0;h=y+576|0;i=y+512|0;j=y+448|0;k=y+384|0;e=y+320|0;m=y+256|0;n=y+192|0;f=y+128|0;d=y+64|0;g=y;dd(g,b);p=b+64|0;dd(d,p);dd(f,d);x=t;z=b;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=d;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];c[q+16>>2]=c[b+16>>2];c[q+20>>2]=c[b+20>>2];c[q+24>>2]=c[b+24>>2];c[q+28>>2]=c[b+28>>2];c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[o+20>>2]=c[d+20>>2];c[o+24>>2]=c[d+24>>2];c[o+28>>2]=c[d+28>>2];Kc(q,o,136);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];c[u+16>>2]=c[q+16>>2];c[u+20>>2]=c[q+20>>2];c[u+24>>2]=c[q+24>>2];c[u+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=u+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];dd(v,u);x=s;z=g;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[v>>2];c[q+4>>2]=c[v+4>>2];c[q+8>>2]=c[v+8>>2];c[q+12>>2]=c[v+12>>2];c[q+16>>2]=c[v+16>>2];c[q+20>>2]=c[v+20>>2];c[q+24>>2]=c[v+24>>2];c[q+28>>2]=c[v+28>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];Lc(q,o,136);c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];d=v+32|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];c[q+16>>2]=c[d+16>>2];c[q+20>>2]=c[d+20>>2];c[q+24>>2]=c[d+24>>2];c[q+28>>2]=c[d+28>>2];d=s+32|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[o+20>>2]=c[d+20>>2];c[o+24>>2]=c[d+24>>2];c[o+28>>2]=c[d+28>>2];Lc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];d=w+32|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=s;z=f;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[w>>2];c[q+4>>2]=c[w+4>>2];c[q+8>>2]=c[w+8>>2];c[q+12>>2]=c[w+12>>2];c[q+16>>2]=c[w+16>>2];c[q+20>>2]=c[w+20>>2];c[q+24>>2]=c[w+24>>2];c[q+28>>2]=c[w+28>>2];c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];c[o+28>>2]=c[f+28>>2];Lc(q,o,136);c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];c[n+16>>2]=c[q+16>>2];c[n+20>>2]=c[q+20>>2];c[n+24>>2]=c[q+24>>2];c[n+28>>2]=c[q+28>>2];c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];c[q+16>>2]=c[d+16>>2];c[q+20>>2]=c[d+20>>2];c[q+24>>2]=c[d+24>>2];c[q+28>>2]=c[d+28>>2];d=s+32|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[o+20>>2]=c[d+20>>2];c[o+24>>2]=c[d+24>>2];c[o+28>>2]=c[d+28>>2];Lc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];d=n+32|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=t;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[o+16>>2]=c[n+16>>2];c[o+20>>2]=c[n+20>>2];c[o+24>>2]=c[n+24>>2];c[o+28>>2]=c[n+28>>2];Kc(q,o,136);c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];c[n+16>>2]=c[q+16>>2];c[n+20>>2]=c[q+20>>2];c[n+24>>2]=c[q+24>>2];c[n+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=t;z=g;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=g;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];Kc(q,o,136);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];c[u+16>>2]=c[q+16>>2];c[u+20>>2]=c[q+20>>2];c[u+24>>2]=c[q+24>>2];c[u+28>>2]=c[q+28>>2];d=t+32|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];c[q+16>>2]=c[d+16>>2];c[q+20>>2]=c[d+20>>2];c[q+24>>2]=c[d+24>>2];c[q+28>>2]=c[d+28>>2];d=s+32|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[o+20>>2]=c[d+20>>2];c[o+24>>2]=c[d+24>>2];c[o+28>>2]=c[d+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];d=u+32|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=s;z=g;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];c[q+16>>2]=c[u+16>>2];c[q+20>>2]=c[u+20>>2];c[q+24>>2]=c[u+24>>2];c[q+28>>2]=c[u+28>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];Kc(q,o,136);c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[m+16>>2]=c[q+16>>2];c[m+20>>2]=c[q+20>>2];c[m+24>>2]=c[q+24>>2];c[m+28>>2]=c[q+28>>2];c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];c[q+16>>2]=c[d+16>>2];c[q+20>>2]=c[d+20>>2];c[q+24>>2]=c[d+24>>2];c[q+28>>2]=c[d+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=m+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];dd(e,m);x=v;z=e;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=t;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[o+16>>2]=c[n+16>>2];c[o+20>>2]=c[n+20>>2];c[o+24>>2]=c[n+24>>2];c[o+28>>2]=c[n+28>>2];Kc(q,o,136);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];c[u+16>>2]=c[q+16>>2];c[u+20>>2]=c[q+20>>2];c[u+24>>2]=c[q+24>>2];c[u+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=u+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];c[q>>2]=c[e>>2];c[q+4>>2]=c[e+4>>2];c[q+8>>2]=c[e+8>>2];c[q+12>>2]=c[e+12>>2];c[q+16>>2]=c[e+16>>2];c[q+20>>2]=c[e+20>>2];c[q+24>>2]=c[e+24>>2];c[q+28>>2]=c[e+28>>2];c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];c[o+16>>2]=c[u+16>>2];c[o+20>>2]=c[u+20>>2];c[o+24>>2]=c[u+24>>2];c[o+28>>2]=c[u+28>>2];Lc(q,o,136);c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];z=v+32|0;c[q>>2]=c[z>>2];c[q+4>>2]=c[z+4>>2];c[q+8>>2]=c[z+8>>2];c[q+12>>2]=c[z+12>>2];c[q+16>>2]=c[z+16>>2];c[q+20>>2]=c[z+20>>2];c[q+24>>2]=c[z+24>>2];c[q+28>>2]=c[z+28>>2];c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Lc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=k+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];x=t;z=f;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=f;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];c[o+28>>2]=c[f+28>>2];Kc(q,o,136);c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];c[j+16>>2]=c[q+16>>2];c[j+20>>2]=c[q+20>>2];c[j+24>>2]=c[q+24>>2];c[j+28>>2]=c[q+28>>2];d=t+32|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];c[q+16>>2]=c[d+16>>2];c[q+20>>2]=c[d+20>>2];c[q+24>>2]=c[d+24>>2];c[q+28>>2]=c[d+28>>2];d=s+32|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[o+20>>2]=c[d+20>>2];c[o+24>>2]=c[d+24>>2];c[o+28>>2]=c[d+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];d=j+32|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=t;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[j>>2];c[o+4>>2]=c[j+4>>2];c[o+8>>2]=c[j+8>>2];c[o+12>>2]=c[j+12>>2];c[o+16>>2]=c[j+16>>2];c[o+20>>2]=c[j+20>>2];c[o+24>>2]=c[j+24>>2];c[o+28>>2]=c[j+28>>2];Kc(q,o,136);c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];c[j+16>>2]=c[q+16>>2];c[j+20>>2]=c[q+20>>2];c[j+24>>2]=c[q+24>>2];c[j+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=t;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[j>>2];c[o+4>>2]=c[j+4>>2];c[o+8>>2]=c[j+8>>2];c[o+12>>2]=c[j+12>>2];c[o+16>>2]=c[j+16>>2];c[o+20>>2]=c[j+20>>2];c[o+24>>2]=c[j+24>>2];c[o+28>>2]=c[j+28>>2];Kc(q,o,136);c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];c[j+16>>2]=c[q+16>>2];c[j+20>>2]=c[q+20>>2];c[j+24>>2]=c[q+24>>2];c[j+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];c[d+16>>2]=c[r+16>>2];c[d+20>>2]=c[r+20>>2];c[d+24>>2]=c[r+24>>2];c[d+28>>2]=c[r+28>>2];x=q;z=p;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=o;z=b+128|0;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));cd(i,q,o);x=a;z=k;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=v;z=m;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=t;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=k;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];c[q+16>>2]=c[n+16>>2];c[q+20>>2]=c[n+20>>2];c[q+24>>2]=c[n+24>>2];c[q+28>>2]=c[n+28>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2];Lc(q,o,136);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];c[u+16>>2]=c[q+16>>2];c[u+20>>2]=c[q+20>>2];c[u+24>>2]=c[q+24>>2];c[u+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Lc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=u+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];cd(w,v,u);x=s;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[w>>2];c[q+4>>2]=c[w+4>>2];c[q+8>>2]=c[w+8>>2];c[q+12>>2]=c[w+12>>2];c[q+16>>2]=c[w+16>>2];c[q+20>>2]=c[w+20>>2];c[q+24>>2]=c[w+24>>2];c[q+28>>2]=c[w+28>>2];c[o>>2]=c[j>>2];c[o+4>>2]=c[j+4>>2];c[o+8>>2]=c[j+8>>2];c[o+12>>2]=c[j+12>>2];c[o+16>>2]=c[j+16>>2];c[o+20>>2]=c[j+20>>2];c[o+24>>2]=c[j+24>>2];c[o+28>>2]=c[j+28>>2];Lc(q,o,136);c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];c[h+28>>2]=c[q+28>>2];x=w+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Lc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=h+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];x=t;z=i;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=s;z=i;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[q+16>>2]=c[t+16>>2];c[q+20>>2]=c[t+20>>2];c[q+24>>2]=c[t+24>>2];c[q+28>>2]=c[t+28>>2];c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[o+16>>2]=c[i+16>>2];c[o+20>>2]=c[i+20>>2];c[o+24>>2]=c[i+24>>2];c[o+28>>2]=c[i+28>>2];Kc(q,o,136);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];c[u+16>>2]=c[q+16>>2];c[u+20>>2]=c[q+20>>2];c[u+24>>2]=c[q+24>>2];c[u+28>>2]=c[q+28>>2];x=t+32|0;c[q>>2]=c[x>>2];c[q+4>>2]=c[x+4>>2];c[q+8>>2]=c[x+8>>2];c[q+12>>2]=c[x+12>>2];c[q+16>>2]=c[x+16>>2];c[q+20>>2]=c[x+20>>2];c[q+24>>2]=c[x+24>>2];c[q+28>>2]=c[x+28>>2];x=s+32|0;c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];c[o+16>>2]=c[x+16>>2];c[o+20>>2]=c[x+20>>2];c[o+24>>2]=c[x+24>>2];c[o+28>>2]=c[x+28>>2];Kc(q,o,136);c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];c[r+16>>2]=c[q+16>>2];c[r+20>>2]=c[q+20>>2];c[r+24>>2]=c[q+24>>2];c[r+28>>2]=c[q+28>>2];x=u+32|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];x=a+64|0;z=h;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=a+128|0;z=u;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));l=y;return}function zc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+656|0;g=p+520|0;h=p+448|0;i=p+384|0;j=p+320|0;k=p+256|0;m=p+128|0;n=p+64|0;o=p;f=b+128|0;d=f;if((((((((c[d>>2]|0)==0&(c[d+4>>2]|0)==0?(d=b+136|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0)?(d=b+144|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0)?(d=b+152|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0)?(d=b+160|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0)?(d=b+168|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0)?(d=b+176|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0)?(d=b+184|0,(c[d>>2]|0)==0&(c[d+4>>2]|0)==0):0){o=a;c[o>>2]=0;c[o+4>>2]=0;l=p;return}d=g;c[d>>2]=-980480611;c[d+4>>2]=-748862579;d=g+8|0;c[d>>2]=-171504835;c[d+4>>2]=175696680;d=g+16|0;c[d>>2]=2021213740;c[d+4>>2]=1718526831;d=g+24|0;c[d>>2]=-1710760145;c[d+4>>2]=235567041;d=g+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;if((f|0)!=(g|0)?(Xj(f,g,32)|0)!=0:0)d=f;else e=12;do if((e|0)==12){d=b+160|0;e=g+32|0;if((d|0)!=(e|0)?Xj(d,e,32)|0:0){d=f;break}f=g;d=b;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));f=g+64|0;d=b+64|0;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));f=a;c[f>>2]=1;c[f+4>>2]=0;f=a+8|0;d=g;e=f+128|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));l=p;return}while(0);f=g;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));ed(h,g);f=h;if(!((c[f>>2]|0)==1&(c[f+4>>2]|0)==0))$i(2032);f=o;d=h+8|0;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));dd(n,o);f=h;d=b;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));f=g;d=n;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));cd(m,h,g);f=j;d=b+64|0;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));f=h;d=n;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));f=g;d=o;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));cd(i,h,g);cd(k,j,i);f=m+64|0;d=k;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));f=a;c[f>>2]=1;c[f+4>>2]=0;f=a+8|0;d=m;e=f+128|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));l=p;return}function Ac(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+320|0;d=n+256|0;f=n+224|0;g=n+192|0;h=n+160|0;i=n+128|0;m=n+64|0;j=n+32|0;k=n;e=b+64|0;o=e;if((((c[o>>2]|0)==0&(c[o+4>>2]|0)==0?(o=b+72|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)?(o=b+80|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)?(o=b+88|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0){o=a;c[o>>2]=0;c[o+4>>2]=0;l=n;return}o=d;c[o>>2]=-980480611;c[o+4>>2]=-748862579;o=d+8|0;c[o>>2]=-171504835;c[o+4>>2]=175696680;o=d+16|0;c[o>>2]=2021213740;c[o+4>>2]=1718526831;o=d+24|0;c[o>>2]=-1710760145;c[o+4>>2]=235567041;if((e|0)!=(d|0))if(Xj(e,d,32)|0){c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[d+28>>2]=c[e+28>>2];o=d;if((((c[o>>2]|0)==0&(c[o+4>>2]|0)==0?(o=d+8|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)?(o=d+16|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)?(o=d+24|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)$i(2032);Oc(d,136);Mc(d,104,136,-460954743,-2016278654);c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[k+16>>2]=c[d+16>>2];c[k+20>>2]=c[d+20>>2];c[k+24>>2]=c[d+24>>2];c[k+28>>2]=c[d+28>>2];c[f>>2]=c[k>>2];c[f+4>>2]=c[k+4>>2];c[f+8>>2]=c[k+8>>2];c[f+12>>2]=c[k+12>>2];c[f+16>>2]=c[k+16>>2];c[f+20>>2]=c[k+20>>2];c[f+24>>2]=c[k+24>>2];c[f+28>>2]=c[k+28>>2];c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];c[d+16>>2]=c[k+16>>2];c[d+20>>2]=c[k+20>>2];c[d+24>>2]=c[k+24>>2];c[d+28>>2]=c[k+28>>2];Mc(f,d,136,-460954743,-2016278654);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];c[j+28>>2]=c[f+28>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[d+16>>2]=c[j+16>>2];c[d+20>>2]=c[j+20>>2];c[d+24>>2]=c[j+24>>2];c[d+28>>2]=c[j+28>>2];Mc(f,d,136,-460954743,-2016278654);c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+16>>2];c[m+20>>2]=c[f+20>>2];c[m+24>>2]=c[f+24>>2];c[m+28>>2]=c[f+28>>2];b=b+32|0;c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[h+28>>2]=c[b+28>>2];c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[f+28>>2]=c[j+28>>2];c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];c[d+16>>2]=c[k+16>>2];c[d+20>>2]=c[k+20>>2];c[d+24>>2]=c[k+24>>2];c[d+28>>2]=c[k+28>>2];Mc(f,d,136,-460954743,-2016278654);c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];Mc(h,g,136,-460954743,-2016278654);c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[i+20>>2]=c[h+20>>2];c[i+24>>2]=c[h+24>>2];c[i+28>>2]=c[h+28>>2];b=m+32|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];b=a;c[b>>2]=1;c[b+4>>2]=0;b=a+8|0;d=m;a=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(a|0));l=n;return};c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];o=b+32|0;b=d+32|0;c[b>>2]=c[o>>2];c[b+4>>2]=c[o+4>>2];c[b+8>>2]=c[o+8>>2];c[b+12>>2]=c[o+12>>2];c[b+16>>2]=c[o+16>>2];c[b+20>>2]=c[o+20>>2];c[b+24>>2]=c[o+24>>2];c[b+28>>2]=c[o+28>>2];b=a;c[b>>2]=1;c[b+4>>2]=0;b=a+8|0;a=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(a|0));l=n;return}function Bc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=l;l=l+480|0;h=d+448|0;g=d+416|0;e=d+384|0;m=d+352|0;j=d+320|0;f=d+288|0;i=d+256|0;k=d+224|0;n=d+192|0;s=d+160|0;p=d+128|0;o=d+96|0;r=d+64|0;u=d+32|0;t=d;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[h+28>>2]=c[b+28>>2];Mc(g,h,136,-460954743,-2016278654);c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];c[t+16>>2]=c[g+16>>2];c[t+20>>2]=c[g+20>>2];c[t+24>>2]=c[g+24>>2];c[t+28>>2]=c[g+28>>2];q=b+32|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];c[g+16>>2]=c[q+16>>2];c[g+20>>2]=c[q+20>>2];c[g+24>>2]=c[q+24>>2];c[g+28>>2]=c[q+28>>2];c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];c[h+28>>2]=c[q+28>>2];Mc(g,h,136,-460954743,-2016278654);c[u>>2]=c[g>>2];c[u+4>>2]=c[g+4>>2];c[u+8>>2]=c[g+8>>2];c[u+12>>2]=c[g+12>>2];c[u+16>>2]=c[g+16>>2];c[u+20>>2]=c[g+20>>2];c[u+24>>2]=c[g+24>>2];c[u+28>>2]=c[g+28>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];c[g+16>>2]=c[u+16>>2];c[g+20>>2]=c[u+20>>2];c[g+24>>2]=c[u+24>>2];c[g+28>>2]=c[u+28>>2];c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];c[h+12>>2]=c[u+12>>2];c[h+16>>2]=c[u+16>>2];c[h+20>>2]=c[u+20>>2];c[h+24>>2]=c[u+24>>2];c[h+28>>2]=c[u+28>>2];Mc(g,h,136,-460954743,-2016278654);c[r>>2]=c[g>>2];c[r+4>>2]=c[g+4>>2];c[r+8>>2]=c[g+8>>2];c[r+12>>2]=c[g+12>>2];c[r+16>>2]=c[g+16>>2];c[r+20>>2]=c[g+20>>2];c[r+24>>2]=c[g+24>>2];c[r+28>>2]=c[g+28>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];c[h+12>>2]=c[u+12>>2];c[h+16>>2]=c[u+16>>2];c[h+20>>2]=c[u+20>>2];c[h+24>>2]=c[u+24>>2];c[h+28>>2]=c[u+28>>2];Kc(g,h,136);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];Mc(g,h,136,-460954743,-2016278654);c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];c[m+16>>2]=c[g+16>>2];c[m+20>>2]=c[g+20>>2];c[m+24>>2]=c[g+24>>2];c[m+28>>2]=c[g+28>>2];c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];c[h+24>>2]=c[t+24>>2];c[h+28>>2]=c[t+28>>2];Lc(m,h,136);c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[j+16>>2]=c[m+16>>2];c[j+20>>2]=c[m+20>>2];c[j+24>>2]=c[m+24>>2];c[j+28>>2]=c[m+28>>2];c[h>>2]=c[r>>2];c[h+4>>2]=c[r+4>>2];c[h+8>>2]=c[r+8>>2];c[h+12>>2]=c[r+12>>2];c[h+16>>2]=c[r+16>>2];c[h+20>>2]=c[r+20>>2];c[h+24>>2]=c[r+24>>2];c[h+28>>2]=c[r+28>>2];Lc(j,h,136);c[o>>2]=c[j>>2];c[o+4>>2]=c[j+4>>2];c[o+8>>2]=c[j+8>>2];c[o+12>>2]=c[j+12>>2];c[o+16>>2]=c[j+16>>2];c[o+20>>2]=c[j+20>>2];c[o+24>>2]=c[j+24>>2];c[o+28>>2]=c[j+28>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];c[h+12>>2]=c[o+12>>2];c[h+16>>2]=c[o+16>>2];c[h+20>>2]=c[o+20>>2];c[h+24>>2]=c[o+24>>2];c[h+28>>2]=c[o+28>>2];Kc(g,h,136);c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];c[g>>2]=c[t>>2];c[g+4>>2]=c[t+4>>2];c[g+8>>2]=c[t+8>>2];c[g+12>>2]=c[t+12>>2];c[g+16>>2]=c[t+16>>2];c[g+20>>2]=c[t+20>>2];c[g+24>>2]=c[t+24>>2];c[g+28>>2]=c[t+28>>2];c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];c[h+24>>2]=c[t+24>>2];c[h+28>>2]=c[t+28>>2];Kc(g,h,136);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];c[h+24>>2]=c[t+24>>2];c[h+28>>2]=c[t+28>>2];Kc(e,h,136);c[p>>2]=c[e>>2];c[p+4>>2]=c[e+4>>2];c[p+8>>2]=c[e+8>>2];c[p+12>>2]=c[e+12>>2];c[p+16>>2]=c[e+16>>2];c[p+20>>2]=c[e+20>>2];c[p+24>>2]=c[e+24>>2];c[p+28>>2]=c[e+28>>2];c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];c[g+16>>2]=c[p+16>>2];c[g+20>>2]=c[p+20>>2];c[g+24>>2]=c[p+24>>2];c[g+28>>2]=c[p+28>>2];c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];c[h+16>>2]=c[p+16>>2];c[h+20>>2]=c[p+20>>2];c[h+24>>2]=c[p+24>>2];c[h+28>>2]=c[p+28>>2];Mc(g,h,136,-460954743,-2016278654);c[s>>2]=c[g>>2];c[s+4>>2]=c[g+4>>2];c[s+8>>2]=c[g+8>>2];c[s+12>>2]=c[g+12>>2];c[s+16>>2]=c[g+16>>2];c[s+20>>2]=c[g+20>>2];c[s+24>>2]=c[g+24>>2];c[s+28>>2]=c[g+28>>2];c[m>>2]=c[s>>2];c[m+4>>2]=c[s+4>>2];c[m+8>>2]=c[s+8>>2];c[m+12>>2]=c[s+12>>2];c[m+16>>2]=c[s+16>>2];c[m+20>>2]=c[s+20>>2];c[m+24>>2]=c[s+24>>2];c[m+28>>2]=c[s+28>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];c[h+12>>2]=c[o+12>>2];c[h+16>>2]=c[o+16>>2];c[h+20>>2]=c[o+20>>2];c[h+24>>2]=c[o+24>>2];c[h+28>>2]=c[o+28>>2];Kc(g,h,136);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];Lc(m,e,136);c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[g>>2]=c[r>>2];c[g+4>>2]=c[r+4>>2];c[g+8>>2]=c[r+8>>2];c[g+12>>2]=c[r+12>>2];c[g+16>>2]=c[r+16>>2];c[g+20>>2]=c[r+20>>2];c[g+24>>2]=c[r+24>>2];c[g+28>>2]=c[r+28>>2];c[h>>2]=c[r>>2];c[h+4>>2]=c[r+4>>2];c[h+8>>2]=c[r+8>>2];c[h+12>>2]=c[r+12>>2];c[h+16>>2]=c[r+16>>2];c[h+20>>2]=c[r+20>>2];c[h+24>>2]=c[r+24>>2];c[h+28>>2]=c[r+28>>2];Kc(g,h,136);c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[k+16>>2]=c[g+16>>2];c[k+20>>2]=c[g+20>>2];c[k+24>>2]=c[g+24>>2];c[k+28>>2]=c[g+28>>2];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];c[g+20>>2]=c[k+20>>2];c[g+24>>2]=c[k+24>>2];c[g+28>>2]=c[k+28>>2];c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];Kc(g,h,136);c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[k+16>>2]=c[g+16>>2];c[k+20>>2]=c[g+20>>2];c[k+24>>2]=c[g+24>>2];c[k+28>>2]=c[g+28>>2];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];c[g+20>>2]=c[k+20>>2];c[g+24>>2]=c[k+24>>2];c[g+28>>2]=c[k+28>>2];c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];Kc(g,h,136);c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[k+16>>2]=c[g+16>>2];c[k+20>>2]=c[g+20>>2];c[k+24>>2]=c[g+24>>2];c[k+28>>2]=c[g+28>>2];c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];c[g+16>>2]=c[q+16>>2];c[g+20>>2]=c[q+20>>2];c[g+24>>2]=c[q+24>>2];c[g+28>>2]=c[q+28>>2];b=b+64|0;c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[h+28>>2]=c[b+28>>2];Mc(g,h,136,-460954743,-2016278654);c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[i+20>>2]=c[g+20>>2];c[i+24>>2]=c[g+24>>2];c[i+28>>2]=c[g+28>>2];c[a>>2]=c[n>>2];c[a+4>>2]=c[n+4>>2];c[a+8>>2]=c[n+8>>2];c[a+12>>2]=c[n+12>>2];c[a+16>>2]=c[n+16>>2];c[a+20>>2]=c[n+20>>2];c[a+24>>2]=c[n+24>>2];c[a+28>>2]=c[n+28>>2];c[m>>2]=c[p>>2];c[m+4>>2]=c[p+4>>2];c[m+8>>2]=c[p+8>>2];c[m+12>>2]=c[p+12>>2];c[m+16>>2]=c[p+16>>2];c[m+20>>2]=c[p+20>>2];c[m+24>>2]=c[p+24>>2];c[m+28>>2]=c[p+28>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];c[h+12>>2]=c[n+12>>2];c[h+16>>2]=c[n+16>>2];c[h+20>>2]=c[n+20>>2];c[h+24>>2]=c[n+24>>2];c[h+28>>2]=c[n+28>>2];Lc(g,h,136);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];Mc(m,e,136,-460954743,-2016278654);c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[j+16>>2]=c[m+16>>2];c[j+20>>2]=c[m+20>>2];c[j+24>>2]=c[m+24>>2];c[j+28>>2]=c[m+28>>2];c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];Lc(j,h,136);c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[f+28>>2]=c[j+28>>2];c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[h+16>>2]=c[i+16>>2];c[h+20>>2]=c[i+20>>2];c[h+24>>2]=c[i+24>>2];c[h+28>>2]=c[i+28>>2];Kc(g,h,136);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];b=a+32|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];c[b+16>>2]=c[f+16>>2];c[b+20>>2]=c[f+20>>2];c[b+24>>2]=c[f+24>>2];c[b+28>>2]=c[f+28>>2];b=a+64|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[b+16>>2]=c[e+16>>2];c[b+20>>2]=c[e+20>>2];c[b+24>>2]=c[e+24>>2];c[b+28>>2]=c[e+28>>2];l=d;return}function Cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+320|0;i=n+224|0;j=n+128|0;k=n+96|0;m=n;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;h=m+32|0;c[h>>2]=-980480611;c[h+4>>2]=-748862579;h=m+40|0;c[h>>2]=-171504835;c[h+4>>2]=175696680;h=m+48|0;c[h>>2]=2021213740;c[h+4>>2]=1718526831;h=m+56|0;c[h>>2]=-1710760145;c[h+4>>2]=235567041;h=m+64|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];d=i;c[d>>2]=1;c[d+4>>2]=0;d=i+8|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;Mc(j,i,8,-268435457,-1025378925);c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];c[k+16>>2]=c[j+16>>2];c[k+20>>2]=c[j+20>>2];c[k+24>>2]=c[j+24>>2];c[k+28>>2]=c[j+28>>2];d=256;while(1){if(!d){d=7;break}d=d+-1|0;if(d>>>0>255){d=7;break}h=k+(d>>>6<<3)|0;f=c[h>>2]|0;h=c[h+4>>2]|0;g=nk(1,0,d&63|0)|0;if(!((f&g|0)==0&(h&y|0)==0)){e=d;d=9;break}}if((d|0)==7){f=a;g=m;h=f+96|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));l=n;return}else if((d|0)==9){a:while(1){f=j;g=m;h=f+96|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));f=i;g=b;h=f+96|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));Dc(m,j,i);while(1){if(!e){d=7;break a}e=e+-1|0;if(e>>>0>255){d=7;break a}d=k+(e>>>6<<3)|0;g=c[d>>2]|0;d=c[d+4>>2]|0;f=nk(1,0,e&63|0)|0;d=(g&f|0)==0&(d&y|0)==0;Bc(i,m);f=m;g=i;h=f+96|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!d)continue a}}if((d|0)==7){f=a;g=m;h=f+96|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));l=n;return}}}function Dc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+768|0;x=F+736|0;y=F+704|0;z=F+672|0;A=F+640|0;C=F+608|0;D=F+576|0;E=F+544|0;e=F+512|0;f=F+480|0;g=F+448|0;h=F+416|0;i=F+384|0;j=F+352|0;k=F+320|0;m=F+288|0;n=F+256|0;o=F+224|0;p=F+192|0;q=F+160|0;r=F+128|0;s=F+96|0;t=F+64|0;u=F+32|0;v=F;w=b+64|0;B=w;if((((c[B>>2]|0)==0&(c[B+4>>2]|0)==0?(B=b+72|0,(c[B>>2]|0)==0&(c[B+4>>2]|0)==0):0)?(B=b+80|0,(c[B>>2]|0)==0&(c[B+4>>2]|0)==0):0)?(B=b+88|0,(c[B>>2]|0)==0&(c[B+4>>2]|0)==0):0){b=d;e=a+96|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=F;return}B=d+64|0;G=B;if((((c[G>>2]|0)==0&(c[G+4>>2]|0)==0?(G=d+72|0,(c[G>>2]|0)==0&(c[G+4>>2]|0)==0):0)?(G=d+80|0,(c[G>>2]|0)==0&(c[G+4>>2]|0)==0):0)?(G=d+88|0,(c[G>>2]|0)==0&(c[G+4>>2]|0)==0):0){e=a+96|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=F;return};c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];c[y+20>>2]=c[w+20>>2];c[y+24>>2]=c[w+24>>2];c[y+28>>2]=c[w+28>>2];c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];c[x+16>>2]=c[w+16>>2];c[x+20>>2]=c[w+20>>2];c[x+24>>2]=c[w+24>>2];c[x+28>>2]=c[w+28>>2];Mc(y,x,136,-460954743,-2016278654);c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[v+16>>2]=c[y+16>>2];c[v+20>>2]=c[y+20>>2];c[v+24>>2]=c[y+24>>2];c[v+28>>2]=c[y+28>>2];c[y>>2]=c[B>>2];c[y+4>>2]=c[B+4>>2];c[y+8>>2]=c[B+8>>2];c[y+12>>2]=c[B+12>>2];c[y+16>>2]=c[B+16>>2];c[y+20>>2]=c[B+20>>2];c[y+24>>2]=c[B+24>>2];c[y+28>>2]=c[B+28>>2];c[x>>2]=c[B>>2];c[x+4>>2]=c[B+4>>2];c[x+8>>2]=c[B+8>>2];c[x+12>>2]=c[B+12>>2];c[x+16>>2]=c[B+16>>2];c[x+20>>2]=c[B+20>>2];c[x+24>>2]=c[B+24>>2];c[x+28>>2]=c[B+28>>2];Mc(y,x,136,-460954743,-2016278654);c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2];c[u+16>>2]=c[y+16>>2];c[u+20>>2]=c[y+20>>2];c[u+24>>2]=c[y+24>>2];c[u+28>>2]=c[y+28>>2];c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];c[y+16>>2]=c[b+16>>2];c[y+20>>2]=c[b+20>>2];c[y+24>>2]=c[b+24>>2];c[y+28>>2]=c[b+28>>2];c[x>>2]=c[u>>2];c[x+4>>2]=c[u+4>>2];c[x+8>>2]=c[u+8>>2];c[x+12>>2]=c[u+12>>2];c[x+16>>2]=c[u+16>>2];c[x+20>>2]=c[u+20>>2];c[x+24>>2]=c[u+24>>2];c[x+28>>2]=c[u+28>>2];Mc(y,x,136,-460954743,-2016278654);c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];c[y>>2]=c[d>>2];c[y+4>>2]=c[d+4>>2];c[y+8>>2]=c[d+8>>2];c[y+12>>2]=c[d+12>>2];c[y+16>>2]=c[d+16>>2];c[y+20>>2]=c[d+20>>2];c[y+24>>2]=c[d+24>>2];c[y+28>>2]=c[d+28>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];c[x+16>>2]=c[v+16>>2];c[x+20>>2]=c[v+20>>2];c[x+24>>2]=c[v+24>>2];c[x+28>>2]=c[v+28>>2];Mc(y,x,136,-460954743,-2016278654);c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[s+16>>2]=c[y+16>>2];c[s+20>>2]=c[y+20>>2];c[s+24>>2]=c[y+24>>2];c[s+28>>2]=c[y+28>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];c[y+20>>2]=c[w+20>>2];c[y+24>>2]=c[w+24>>2];c[y+28>>2]=c[w+28>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];c[x+16>>2]=c[v+16>>2];c[x+20>>2]=c[v+20>>2];c[x+24>>2]=c[v+24>>2];c[x+28>>2]=c[v+28>>2];Mc(y,x,136,-460954743,-2016278654);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];c[y>>2]=c[B>>2];c[y+4>>2]=c[B+4>>2];c[y+8>>2]=c[B+8>>2];c[y+12>>2]=c[B+12>>2];c[y+16>>2]=c[B+16>>2];c[y+20>>2]=c[B+20>>2];c[y+24>>2]=c[B+24>>2];c[y+28>>2]=c[B+28>>2];c[x>>2]=c[u>>2];c[x+4>>2]=c[u+4>>2];c[x+8>>2]=c[u+8>>2];c[x+12>>2]=c[u+12>>2];c[x+16>>2]=c[u+16>>2];c[x+20>>2]=c[u+20>>2];c[x+24>>2]=c[u+24>>2];c[x+28>>2]=c[u+28>>2];Mc(y,x,136,-460954743,-2016278654);c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];c[q+16>>2]=c[y+16>>2];c[q+20>>2]=c[y+20>>2];c[q+24>>2]=c[y+24>>2];c[q+28>>2]=c[y+28>>2];G=b+32|0;c[y>>2]=c[G>>2];c[y+4>>2]=c[G+4>>2];c[y+8>>2]=c[G+8>>2];c[y+12>>2]=c[G+12>>2];c[y+16>>2]=c[G+16>>2];c[y+20>>2]=c[G+20>>2];c[y+24>>2]=c[G+24>>2];c[y+28>>2]=c[G+28>>2];c[x>>2]=c[q>>2];c[x+4>>2]=c[q+4>>2];c[x+8>>2]=c[q+8>>2];c[x+12>>2]=c[q+12>>2];c[x+16>>2]=c[q+16>>2];c[x+20>>2]=c[q+20>>2];c[x+24>>2]=c[q+24>>2];c[x+28>>2]=c[q+28>>2];Mc(y,x,136,-460954743,-2016278654);c[p>>2]=c[y>>2];c[p+4>>2]=c[y+4>>2];c[p+8>>2]=c[y+8>>2];c[p+12>>2]=c[y+12>>2];c[p+16>>2]=c[y+16>>2];c[p+20>>2]=c[y+20>>2];c[p+24>>2]=c[y+24>>2];c[p+28>>2]=c[y+28>>2];G=d+32|0;c[y>>2]=c[G>>2];c[y+4>>2]=c[G+4>>2];c[y+8>>2]=c[G+8>>2];c[y+12>>2]=c[G+12>>2];c[y+16>>2]=c[G+16>>2];c[y+20>>2]=c[G+20>>2];c[y+24>>2]=c[G+24>>2];c[y+28>>2]=c[G+28>>2];c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];Mc(y,x,136,-460954743,-2016278654);c[o>>2]=c[y>>2];c[o+4>>2]=c[y+4>>2];c[o+8>>2]=c[y+8>>2];c[o+12>>2]=c[y+12>>2];c[o+16>>2]=c[y+16>>2];c[o+20>>2]=c[y+20>>2];c[o+24>>2]=c[y+24>>2];c[o+28>>2]=c[y+28>>2];if((Xj(t,s,32)|0)==0?(Xj(p,o,32)|0)==0:0)Bc(a,b);else{c[y>>2]=c[s>>2];c[y+4>>2]=c[s+4>>2];c[y+8>>2]=c[s+8>>2];c[y+12>>2]=c[s+12>>2];c[y+16>>2]=c[s+16>>2];c[y+20>>2]=c[s+20>>2];c[y+24>>2]=c[s+24>>2];c[y+28>>2]=c[s+28>>2];c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2];c[x+16>>2]=c[t+16>>2];c[x+20>>2]=c[t+20>>2];c[x+24>>2]=c[t+24>>2];c[x+28>>2]=c[t+28>>2];Lc(y,x,136);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];c[n+16>>2]=c[y+16>>2];c[n+20>>2]=c[y+20>>2];c[n+24>>2]=c[y+24>>2];c[n+28>>2]=c[y+28>>2];c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[y+16>>2]=c[o+16>>2];c[y+20>>2]=c[o+20>>2];c[y+24>>2]=c[o+24>>2];c[y+28>>2]=c[o+28>>2];c[x>>2]=c[p>>2];c[x+4>>2]=c[p+4>>2];c[x+8>>2]=c[p+8>>2];c[x+12>>2]=c[p+12>>2];c[x+16>>2]=c[p+16>>2];c[x+20>>2]=c[p+20>>2];c[x+24>>2]=c[p+24>>2];c[x+28>>2]=c[p+28>>2];Lc(y,x,136);c[m>>2]=c[y>>2];c[m+4>>2]=c[y+4>>2];c[m+8>>2]=c[y+8>>2];c[m+12>>2]=c[y+12>>2];c[m+16>>2]=c[y+16>>2];c[m+20>>2]=c[y+20>>2];c[m+24>>2]=c[y+24>>2];c[m+28>>2]=c[y+28>>2];c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];c[y+16>>2]=c[n+16>>2];c[y+20>>2]=c[n+20>>2];c[y+24>>2]=c[n+24>>2];c[y+28>>2]=c[n+28>>2];c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];c[x+16>>2]=c[n+16>>2];c[x+20>>2]=c[n+20>>2];c[x+24>>2]=c[n+24>>2];c[x+28>>2]=c[n+28>>2];Kc(y,x,136);c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];c[z+16>>2]=c[y+16>>2];c[z+20>>2]=c[y+20>>2];c[z+24>>2]=c[y+24>>2];c[z+28>>2]=c[y+28>>2];c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];c[x+16>>2]=c[z+16>>2];c[x+20>>2]=c[z+20>>2];c[x+24>>2]=c[z+24>>2];c[x+28>>2]=c[z+28>>2];Mc(y,x,136,-460954743,-2016278654);c[k>>2]=c[y>>2];c[k+4>>2]=c[y+4>>2];c[k+8>>2]=c[y+8>>2];c[k+12>>2]=c[y+12>>2];c[k+16>>2]=c[y+16>>2];c[k+20>>2]=c[y+20>>2];c[k+24>>2]=c[y+24>>2];c[k+28>>2]=c[y+28>>2];c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];c[y+16>>2]=c[n+16>>2];c[y+20>>2]=c[n+20>>2];c[y+24>>2]=c[n+24>>2];c[y+28>>2]=c[n+28>>2];c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];c[x+8>>2]=c[k+8>>2];c[x+12>>2]=c[k+12>>2];c[x+16>>2]=c[k+16>>2];c[x+20>>2]=c[k+20>>2];c[x+24>>2]=c[k+24>>2];c[x+28>>2]=c[k+28>>2];Mc(y,x,136,-460954743,-2016278654);c[j>>2]=c[y>>2];c[j+4>>2]=c[y+4>>2];c[j+8>>2]=c[y+8>>2];c[j+12>>2]=c[y+12>>2];c[j+16>>2]=c[y+16>>2];c[j+20>>2]=c[y+20>>2];c[j+24>>2]=c[y+24>>2];c[j+28>>2]=c[y+28>>2];c[y>>2]=c[m>>2];c[y+4>>2]=c[m+4>>2];c[y+8>>2]=c[m+8>>2];c[y+12>>2]=c[m+12>>2];c[y+16>>2]=c[m+16>>2];c[y+20>>2]=c[m+20>>2];c[y+24>>2]=c[m+24>>2];c[y+28>>2]=c[m+28>>2];c[x>>2]=c[m>>2];c[x+4>>2]=c[m+4>>2];c[x+8>>2]=c[m+8>>2];c[x+12>>2]=c[m+12>>2];c[x+16>>2]=c[m+16>>2];c[x+20>>2]=c[m+20>>2];c[x+24>>2]=c[m+24>>2];c[x+28>>2]=c[m+28>>2];Kc(y,x,136);c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];c[i+16>>2]=c[y+16>>2];c[i+20>>2]=c[y+20>>2];c[i+24>>2]=c[y+24>>2];c[i+28>>2]=c[y+28>>2];c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];c[x+8>>2]=c[k+8>>2];c[x+12>>2]=c[k+12>>2];c[x+16>>2]=c[k+16>>2];c[x+20>>2]=c[k+20>>2];c[x+24>>2]=c[k+24>>2];c[x+28>>2]=c[k+28>>2];Mc(y,x,136,-460954743,-2016278654);c[h>>2]=c[y>>2];c[h+4>>2]=c[y+4>>2];c[h+8>>2]=c[y+8>>2];c[h+12>>2]=c[y+12>>2];c[h+16>>2]=c[y+16>>2];c[h+20>>2]=c[y+20>>2];c[h+24>>2]=c[y+24>>2];c[h+28>>2]=c[y+28>>2];c[y>>2]=c[p>>2];c[y+4>>2]=c[p+4>>2];c[y+8>>2]=c[p+8>>2];c[y+12>>2]=c[p+12>>2];c[y+16>>2]=c[p+16>>2];c[y+20>>2]=c[p+20>>2];c[y+24>>2]=c[p+24>>2];c[y+28>>2]=c[p+28>>2];c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];Mc(y,x,136,-460954743,-2016278654);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2];c[g+16>>2]=c[y+16>>2];c[g+20>>2]=c[y+20>>2];c[g+24>>2]=c[y+24>>2];c[g+28>>2]=c[y+28>>2];c[y>>2]=c[i>>2];c[y+4>>2]=c[i+4>>2];c[y+8>>2]=c[i+8>>2];c[y+12>>2]=c[i+12>>2];c[y+16>>2]=c[i+16>>2];c[y+20>>2]=c[i+20>>2];c[y+24>>2]=c[i+24>>2];c[y+28>>2]=c[i+28>>2];c[x>>2]=c[i>>2];c[x+4>>2]=c[i+4>>2];c[x+8>>2]=c[i+8>>2];c[x+12>>2]=c[i+12>>2];c[x+16>>2]=c[i+16>>2];c[x+20>>2]=c[i+20>>2];c[x+24>>2]=c[i+24>>2];c[x+28>>2]=c[i+28>>2];Mc(y,x,136,-460954743,-2016278654);c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];c[z+16>>2]=c[y+16>>2];c[z+20>>2]=c[y+20>>2];c[z+24>>2]=c[y+24>>2];c[z+28>>2]=c[y+28>>2];c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];Lc(z,x,136);c[A>>2]=c[z>>2];c[A+4>>2]=c[z+4>>2];c[A+8>>2]=c[z+8>>2];c[A+12>>2]=c[z+12>>2];c[A+16>>2]=c[z+16>>2];c[A+20>>2]=c[z+20>>2];c[A+24>>2]=c[z+24>>2];c[A+28>>2]=c[z+28>>2];c[y>>2]=c[h>>2];c[y+4>>2]=c[h+4>>2];c[y+8>>2]=c[h+8>>2];c[y+12>>2]=c[h+12>>2];c[y+16>>2]=c[h+16>>2];c[y+20>>2]=c[h+20>>2];c[y+24>>2]=c[h+24>>2];c[y+28>>2]=c[h+28>>2];c[x>>2]=c[h>>2];c[x+4>>2]=c[h+4>>2];c[x+8>>2]=c[h+8>>2];c[x+12>>2]=c[h+12>>2];c[x+16>>2]=c[h+16>>2];c[x+20>>2]=c[h+20>>2];c[x+24>>2]=c[h+24>>2];c[x+28>>2]=c[h+28>>2];Kc(y,x,136);c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];c[z+16>>2]=c[y+16>>2];c[z+20>>2]=c[y+20>>2];c[z+24>>2]=c[y+24>>2];c[z+28>>2]=c[y+28>>2];Lc(A,z,136);c[f>>2]=c[A>>2];c[f+4>>2]=c[A+4>>2];c[f+8>>2]=c[A+8>>2];c[f+12>>2]=c[A+12>>2];c[f+16>>2]=c[A+16>>2];c[f+20>>2]=c[A+20>>2];c[f+24>>2]=c[A+24>>2];c[f+28>>2]=c[A+28>>2];c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];c[A+16>>2]=c[i+16>>2];c[A+20>>2]=c[i+20>>2];c[A+24>>2]=c[i+24>>2];c[A+28>>2]=c[i+28>>2];c[y>>2]=c[h>>2];c[y+4>>2]=c[h+4>>2];c[y+8>>2]=c[h+8>>2];c[y+12>>2]=c[h+12>>2];c[y+16>>2]=c[h+16>>2];c[y+20>>2]=c[h+20>>2];c[y+24>>2]=c[h+24>>2];c[y+28>>2]=c[h+28>>2];c[x>>2]=c[f>>2];c[x+4>>2]=c[f+4>>2];c[x+8>>2]=c[f+8>>2];c[x+12>>2]=c[f+12>>2];c[x+16>>2]=c[f+16>>2];c[x+20>>2]=c[f+20>>2];c[x+24>>2]=c[f+24>>2];c[x+28>>2]=c[f+28>>2];Lc(y,x,136);c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];c[z+16>>2]=c[y+16>>2];c[z+20>>2]=c[y+20>>2];c[z+24>>2]=c[y+24>>2];c[z+28>>2]=c[y+28>>2];Mc(A,z,136,-460954743,-2016278654);c[C>>2]=c[A>>2];c[C+4>>2]=c[A+4>>2];c[C+8>>2]=c[A+8>>2];c[C+12>>2]=c[A+12>>2];c[C+16>>2]=c[A+16>>2];c[C+20>>2]=c[A+20>>2];c[C+24>>2]=c[A+24>>2];c[C+28>>2]=c[A+28>>2];c[y>>2]=c[g>>2];c[y+4>>2]=c[g+4>>2];c[y+8>>2]=c[g+8>>2];c[y+12>>2]=c[g+12>>2];c[y+16>>2]=c[g+16>>2];c[y+20>>2]=c[g+20>>2];c[y+24>>2]=c[g+24>>2];c[y+28>>2]=c[g+28>>2];c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2];c[x+16>>2]=c[g+16>>2];c[x+20>>2]=c[g+20>>2];c[x+24>>2]=c[g+24>>2];c[x+28>>2]=c[g+28>>2];Kc(y,x,136);c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];c[z+16>>2]=c[y+16>>2];c[z+20>>2]=c[y+20>>2];c[z+24>>2]=c[y+24>>2];c[z+28>>2]=c[y+28>>2];Lc(C,z,136);c[e>>2]=c[C>>2];c[e+4>>2]=c[C+4>>2];c[e+8>>2]=c[C+8>>2];c[e+12>>2]=c[C+12>>2];c[e+16>>2]=c[C+16>>2];c[e+20>>2]=c[C+20>>2];c[e+24>>2]=c[C+24>>2];c[e+28>>2]=c[C+28>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[y+16>>2]=c[w+16>>2];c[y+20>>2]=c[w+20>>2];c[y+24>>2]=c[w+24>>2];c[y+28>>2]=c[w+28>>2];c[x>>2]=c[B>>2];c[x+4>>2]=c[B+4>>2];c[x+8>>2]=c[B+8>>2];c[x+12>>2]=c[B+12>>2];c[x+16>>2]=c[B+16>>2];c[x+20>>2]=c[B+20>>2];c[x+24>>2]=c[B+24>>2];c[x+28>>2]=c[B+28>>2];Kc(y,x,136);c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];c[z+16>>2]=c[y+16>>2];c[z+20>>2]=c[y+20>>2];c[z+24>>2]=c[y+24>>2];c[z+28>>2]=c[y+28>>2];c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];c[x+16>>2]=c[z+16>>2];c[x+20>>2]=c[z+20>>2];c[x+24>>2]=c[z+24>>2];c[x+28>>2]=c[z+28>>2];Mc(y,x,136,-460954743,-2016278654);c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];c[A+16>>2]=c[y+16>>2];c[A+20>>2]=c[y+20>>2];c[A+24>>2]=c[y+24>>2];c[A+28>>2]=c[y+28>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];c[x+16>>2]=c[v+16>>2];c[x+20>>2]=c[v+20>>2];c[x+24>>2]=c[v+24>>2];c[x+28>>2]=c[v+28>>2];Lc(A,x,136);c[C>>2]=c[A>>2];c[C+4>>2]=c[A+4>>2];c[C+8>>2]=c[A+8>>2];c[C+12>>2]=c[A+12>>2];c[C+16>>2]=c[A+16>>2];c[C+20>>2]=c[A+20>>2];c[C+24>>2]=c[A+24>>2];c[C+28>>2]=c[A+28>>2];c[x>>2]=c[u>>2];c[x+4>>2]=c[u+4>>2];c[x+8>>2]=c[u+8>>2];c[x+12>>2]=c[u+12>>2];c[x+16>>2]=c[u+16>>2];c[x+20>>2]=c[u+20>>2];c[x+24>>2]=c[u+24>>2];c[x+28>>2]=c[u+28>>2];Lc(C,x,136);c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];c[x+16>>2]=c[n+16>>2];c[x+20>>2]=c[n+20>>2];c[x+24>>2]=c[n+24>>2];c[x+28>>2]=c[n+28>>2];Mc(D,x,136,-460954743,-2016278654);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];c[E+16>>2]=c[D+16>>2];c[E+20>>2]=c[D+20>>2];c[E+24>>2]=c[D+24>>2];c[E+28>>2]=c[D+28>>2];G=a+32|0;c[G>>2]=c[e>>2];c[G+4>>2]=c[e+4>>2];c[G+8>>2]=c[e+8>>2];c[G+12>>2]=c[e+12>>2];c[G+16>>2]=c[e+16>>2];c[G+20>>2]=c[e+20>>2];c[G+24>>2]=c[e+24>>2];c[G+28>>2]=c[e+28>>2];G=a+64|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[G+16>>2]=c[E+16>>2];c[G+20>>2]=c[E+20>>2];c[G+24>>2]=c[E+24>>2];c[G+28>>2]=c[E+28>>2]}l=F;return}function Ec(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0;ce=l;l=l+12736|0;Xc=ce+12576|0;bd=ce+12504|0;fd=ce+12472|0;qd=ce+12440|0;sd=ce+12408|0;td=ce+12376|0;ud=ce+12344|0;Tc=ce+12312|0;vd=ce+12280|0;wd=ce+12248|0;xd=ce+12216|0;yd=ce+12184|0;zd=ce+12152|0;Ad=ce+12120|0;Cd=ce+12088|0;Hd=ce+12056|0;Id=ce+12024|0;Jd=ce+11992|0;Kd=ce+11960|0;Ld=ce+11928|0;Md=ce+11896|0;Nd=ce+11864|0;Od=ce+11832|0;Pd=ce+11800|0;Uc=ce+11768|0;Vc=ce+11736|0;Wc=ce+11704|0;Yc=ce+11672|0;Zc=ce+11640|0;_c=ce+11608|0;$c=ce+11576|0;ad=ce+11544|0;Qd=ce+11512|0;Rd=ce+11448|0;Sd=ce+11416|0;Td=ce+11352|0;Ud=ce+11288|0;Vd=ce+10904|0;Wd=ce+10872|0;Xd=ce+10808|0;Yd=ce+10776|0;Zd=ce+10712|0;_d=ce+10648|0;$d=ce+10264|0;cd=ce+10232|0;dd=ce+10168|0;ed=ce+10136|0;gd=ce+10072|0;hd=ce+10008|0;id=ce+9624|0;jd=ce+9592|0;kd=ce+9528|0;ld=ce+9496|0;md=ce+9432|0;nd=ce+9368|0;od=ce+8984|0;pd=ce+8600|0;rd=ce+8568|0;ae=ce+8184|0;Nb=ce+8152|0;Ob=ce+8120|0;Pb=ce+8088|0;Qb=ce+8056|0;Rb=ce+8024|0;Sb=ce+7992|0;Tb=ce+7960|0;Ub=ce+7928|0;Vb=ce+7896|0;Wb=ce+7864|0;_b=ce+7832|0;$b=ce+7800|0;ac=ce+7768|0;bc=ce+7736|0;cc=ce+7704|0;dc=ce+7672|0;ec=ce+7640|0;sc=ce+7608|0;tc=ce+7576|0;uc=ce+7544|0;vc=ce+7512|0;be=ce+7480|0;Ic=ce+7416|0;Jc=ce+7352|0;xc=ce+7288|0;yc=ce+7224|0;Kc=ce+7160|0;Bc=ce+7096|0;Cc=ce+7032|0;Dc=ce+6968|0;fc=ce+6904|0;gc=ce+6840|0;hc=ce+6776|0;ic=ce+6712|0;jc=ce+6648|0;kc=ce+6584|0;lc=ce+6520|0;mc=ce+6456|0;Ka=ce+6392|0;La=ce+6328|0;Ma=ce+6264|0;Na=ce+6200|0;Oa=ce+6136|0;Pa=ce+6072|0;Qa=ce+6008|0;Ra=ce+5944|0;Sa=ce+5880|0;Ta=ce+5816|0;Ua=ce+5752|0;Va=ce+5688|0;Wa=ce+5624|0;Xa=ce+5560|0;Ya=ce+5496|0;Za=ce+5432|0;_a=ce+5368|0;$a=ce+5304|0;ab=ce+5240|0;bb=ce+5176|0;cb=ce+5112|0;db=ce+5048|0;eb=ce+4984|0;fb=ce+4920|0;gb=ce+4856|0;hb=ce+4792|0;ib=ce+4728|0;jb=ce+4664|0;kb=ce+4600|0;lb=ce+4536|0;mb=ce+4472|0;nb=ce+4408|0;ob=ce+4344|0;pb=ce+4280|0;qb=ce+4216|0;rb=ce+4152|0;sb=ce+4088|0;tb=ce+4024|0;ub=ce+3960|0;vb=ce+3896|0;wb=ce+3832|0;xb=ce+3768|0;yb=ce+3704|0;zb=ce+3640|0;Ab=ce+3576|0;Bb=ce+3512|0;Cb=ce+3448|0;Db=ce+3384|0;Eb=ce+3320|0;Fb=ce+3256|0;Gb=ce+3192|0;Hb=ce+3128|0;Ib=ce+3064|0;nc=ce+3e3|0;oc=ce+2936|0;wc=ce+2872|0;pc=ce+2808|0;qc=ce+2744|0;rc=ce+2680|0;Rc=ce+2488|0;Lc=ce+2296|0;Ec=ce+2168|0;Mc=ce+2040|0;Fc=ce+1912|0;Jb=ce+1720|0;Kb=ce+1528|0;Lb=ce+1496|0;Sc=ce+12712|0;Nc=ce+1304|0;Bd=ce+1160|0;Dd=ce+776|0;Ed=ce+384|0;Fd=ce+256|0;Gd=ce+192|0;e=ce+128|0;f=ce;Ac(bd,b);zc(Xc,d);b=c[bd>>2]|0;Oc=e;Pc=bd+8|0;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));d=c[Xc>>2]|0;Oc=f;Pc=Xc+8|0;Qc=Oc+128|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));if((b|0)==0|(d|0)==0){be=a;c[be>>2]=-980480611;c[be+4>>2]=-748862579;be=a+8|0;c[be>>2]=-171504835;c[be+4>>2]=175696680;be=a+16|0;c[be>>2]=2021213740;c[be+4>>2]=1718526831;be=a+24|0;c[be>>2]=-1710760145;c[be+4>>2]=235567041;hk(a+32|0,0,352)|0;l=ce;return}Oc=Fd;Pc=f;Qc=Oc+128|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Gd;Pc=e;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Nc;Pc=f;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Ia=Fd+64|0;Ga=Nc+64|0;Oc=Ga;Pc=Ia;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Ha=Nc+128|0;b=Nc+128|0;c[b>>2]=-980480611;c[b+4>>2]=-748862579;b=Nc+136|0;c[b>>2]=-171504835;c[b+4>>2]=175696680;b=Nc+144|0;c[b>>2]=2021213740;c[b+4>>2]=1718526831;b=Nc+152|0;c[b>>2]=-1710760145;c[b+4>>2]=235567041;b=Nc+160|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;b=Xb(19584,8,Xc)|0;if(!b){c[Xc>>2]=0;Yb(Xc)}c[Sc>>2]=b;Ja=Sc+4|0;c[Ja>>2]=102;Mb=Sc+8|0;c[Mb>>2]=0;e=Lb;c[e>>2]=-1099547736;c[e+4>>2]=-1652985799;e=Lb+8|0;c[e>>2]=1;c[e+4>>2]=0;e=Lb+16|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;e=Kb+64|0;f=Kb+128|0;g=dc+8|0;h=dc+16|0;i=dc+24|0;j=Hb+32|0;k=bc+8|0;m=bc+16|0;o=bc+24|0;p=Ib+32|0;q=Ab+32|0;r=zb+32|0;s=Bb+32|0;t=yb+32|0;u=Cb+32|0;v=wb+8|0;w=wb+16|0;x=wb+24|0;z=wb+32|0;A=wb+40|0;B=wb+48|0;C=wb+56|0;D=sb+32|0;E=rb+32|0;F=tb+32|0;G=qb+32|0;H=ub+32|0;I=nb+32|0;J=mb+32|0;K=ob+32|0;L=jd+8|0;M=jd+16|0;N=jd+24|0;O=hd+8|0;P=hd+16|0;Q=hd+24|0;R=pb+32|0;S=ib+32|0;T=hb+32|0;U=jb+32|0;V=fb+32|0;W=eb+32|0;Y=gb+32|0;$=kb+32|0;ba=lb+32|0;ca=cb+32|0;da=bb+32|0;ea=db+32|0;fa=Xa+32|0;ga=Wa+32|0;ha=Ya+32|0;ia=Ra+32|0;ja=Qa+32|0;ka=Sa+32|0;la=Pa+32|0;ma=Ta+32|0;oa=Ua+32|0;pa=Va+32|0;qa=Ka+8|0;ra=Ka+16|0;sa=Ka+24|0;ta=Ka+32|0;ua=Ka+40|0;va=Ka+48|0;wa=Ka+56|0;xa=kc+32|0;ya=lc+32|0;Aa=hc+32|0;Ba=gc+32|0;Ca=ic+32|0;Da=fc+32|0;Ea=jc+32|0;b=0;Fa=256;a:while(1){Fa=Fa+-1|0;d=Lb+(Fa>>>6<<3)|0;Pc=c[d>>2]|0;d=c[d+4>>2]|0;Qc=nk(1,0,Fa&63|0)|0;d=(Pc&Qc|0)!=0|(d&y|0)!=0;do if(b){Oc=Gb;Pc=Nc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Fb;Pc=Ga;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));n=0;aa(15,Hb|0,Gb|0,Fb|0);Qc=n;n=0;if(Qc&1){b=82;break a};c[ec>>2]=c[Hb>>2];c[ec+4>>2]=c[Hb+4>>2];c[ec+8>>2]=c[Hb+8>>2];c[ec+12>>2]=c[Hb+12>>2];c[ec+16>>2]=c[Hb+16>>2];c[ec+20>>2]=c[Hb+20>>2];c[ec+24>>2]=c[Hb+24>>2];c[ec+28>>2]=c[Hb+28>>2];Qc=dc;c[Qc>>2]=1325794674;c[Qc+4>>2]=-2017531950;Qc=g;c[Qc>>2]=790391525;c[Qc+4>>2]=-788714787;Qc=h;c[Qc>>2]=-50507964;c[Qc+4>>2]=-1889569646;Qc=i;c[Qc>>2]=1033682860;c[Qc+4>>2]=523723546;n=0;X(1,ec|0,dc|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){b=82;break a};c[Ib>>2]=c[ec>>2];c[Ib+4>>2]=c[ec+4>>2];c[Ib+8>>2]=c[ec+8>>2];c[Ib+12>>2]=c[ec+12>>2];c[Ib+16>>2]=c[ec+16>>2];c[Ib+20>>2]=c[ec+20>>2];c[Ib+24>>2]=c[ec+24>>2];c[Ib+28>>2]=c[ec+28>>2];c[cc>>2]=c[j>>2];c[cc+4>>2]=c[j+4>>2];c[cc+8>>2]=c[j+8>>2];c[cc+12>>2]=c[j+12>>2];c[cc+16>>2]=c[j+16>>2];c[cc+20>>2]=c[j+20>>2];c[cc+24>>2]=c[j+24>>2];c[cc+28>>2]=c[j+28>>2];Qc=bc;c[Qc>>2]=1325794674;c[Qc+4>>2]=-2017531950;Qc=k;c[Qc>>2]=790391525;c[Qc+4>>2]=-788714787;Qc=m;c[Qc>>2]=-50507964;c[Qc+4>>2]=-1889569646;Qc=o;c[Qc>>2]=1033682860;c[Qc+4>>2]=523723546;n=0;X(1,cc|0,bc|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[cc>>2];c[be+4>>2]=c[cc+4>>2];c[be+8>>2]=c[cc+8>>2];c[be+12>>2]=c[cc+12>>2];c[be+16>>2]=c[cc+16>>2];c[be+20>>2]=c[cc+20>>2];c[be+24>>2]=c[cc+24>>2];c[be+28>>2]=c[cc+28>>2];c[p>>2]=c[be>>2];c[p+4>>2]=c[be+4>>2];c[p+8>>2]=c[be+8>>2];c[p+12>>2]=c[be+12>>2];c[p+16>>2]=c[be+16>>2];c[p+20>>2]=c[be+20>>2];c[p+24>>2]=c[be+24>>2];c[p+28>>2]=c[be+28>>2];n=0;_(17,Eb|0,Ga|0);Qc=n;n=0;if(Qc&1){b=82;break a}n=0;_(17,Db|0,Ha|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=Ab;Pc=Db;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=zb;Pc=Db;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[ac>>2]=c[Ab>>2];c[ac+4>>2]=c[Ab+4>>2];c[ac+8>>2]=c[Ab+8>>2];c[ac+12>>2]=c[Ab+12>>2];c[ac+16>>2]=c[Ab+16>>2];c[ac+20>>2]=c[Ab+20>>2];c[ac+24>>2]=c[Ab+24>>2];c[ac+28>>2]=c[Ab+28>>2];c[$b>>2]=c[Db>>2];c[$b+4>>2]=c[Db+4>>2];c[$b+8>>2]=c[Db+8>>2];c[$b+12>>2]=c[Db+12>>2];c[$b+16>>2]=c[Db+16>>2];c[$b+20>>2]=c[Db+20>>2];c[$b+24>>2]=c[Db+24>>2];c[$b+28>>2]=c[Db+28>>2];n=0;aa(16,ac|0,$b|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[Bb>>2]=c[ac>>2];c[Bb+4>>2]=c[ac+4>>2];c[Bb+8>>2]=c[ac+8>>2];c[Bb+12>>2]=c[ac+12>>2];c[Bb+16>>2]=c[ac+16>>2];c[Bb+20>>2]=c[ac+20>>2];c[Bb+24>>2]=c[ac+24>>2];c[Bb+28>>2]=c[ac+28>>2];c[_b>>2]=c[q>>2];c[_b+4>>2]=c[q+4>>2];c[_b+8>>2]=c[q+8>>2];c[_b+12>>2]=c[q+12>>2];c[_b+16>>2]=c[q+16>>2];c[_b+20>>2]=c[q+20>>2];c[_b+24>>2]=c[q+24>>2];c[_b+28>>2]=c[q+28>>2];c[Wb>>2]=c[r>>2];c[Wb+4>>2]=c[r+4>>2];c[Wb+8>>2]=c[r+8>>2];c[Wb+12>>2]=c[r+12>>2];c[Wb+16>>2]=c[r+16>>2];c[Wb+20>>2]=c[r+20>>2];c[Wb+24>>2]=c[r+24>>2];c[Wb+28>>2]=c[r+28>>2];n=0;aa(16,_b|0,Wb|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[_b>>2];c[be+4>>2]=c[_b+4>>2];c[be+8>>2]=c[_b+8>>2];c[be+12>>2]=c[_b+12>>2];c[be+16>>2]=c[_b+16>>2];c[be+20>>2]=c[_b+20>>2];c[be+24>>2]=c[_b+24>>2];c[be+28>>2]=c[_b+28>>2];c[s>>2]=c[be>>2];c[s+4>>2]=c[be+4>>2];c[s+8>>2]=c[be+8>>2];c[s+12>>2]=c[be+12>>2];c[s+16>>2]=c[be+16>>2];c[s+20>>2]=c[be+20>>2];c[s+24>>2]=c[be+24>>2];c[s+28>>2]=c[be+28>>2];Oc=yb;Pc=Db;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Vb>>2]=c[Bb>>2];c[Vb+4>>2]=c[Bb+4>>2];c[Vb+8>>2]=c[Bb+8>>2];c[Vb+12>>2]=c[Bb+12>>2];c[Vb+16>>2]=c[Bb+16>>2];c[Vb+20>>2]=c[Bb+20>>2];c[Vb+24>>2]=c[Bb+24>>2];c[Vb+28>>2]=c[Bb+28>>2];c[Ub>>2]=c[Db>>2];c[Ub+4>>2]=c[Db+4>>2];c[Ub+8>>2]=c[Db+8>>2];c[Ub+12>>2]=c[Db+12>>2];c[Ub+16>>2]=c[Db+16>>2];c[Ub+20>>2]=c[Db+20>>2];c[Ub+24>>2]=c[Db+24>>2];c[Ub+28>>2]=c[Db+28>>2];n=0;aa(16,Vb|0,Ub|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[Cb>>2]=c[Vb>>2];c[Cb+4>>2]=c[Vb+4>>2];c[Cb+8>>2]=c[Vb+8>>2];c[Cb+12>>2]=c[Vb+12>>2];c[Cb+16>>2]=c[Vb+16>>2];c[Cb+20>>2]=c[Vb+20>>2];c[Cb+24>>2]=c[Vb+24>>2];c[Cb+28>>2]=c[Vb+28>>2];c[Tb>>2]=c[s>>2];c[Tb+4>>2]=c[s+4>>2];c[Tb+8>>2]=c[s+8>>2];c[Tb+12>>2]=c[s+12>>2];c[Tb+16>>2]=c[s+16>>2];c[Tb+20>>2]=c[s+20>>2];c[Tb+24>>2]=c[s+24>>2];c[Tb+28>>2]=c[s+28>>2];c[Sb>>2]=c[t>>2];c[Sb+4>>2]=c[t+4>>2];c[Sb+8>>2]=c[t+8>>2];c[Sb+12>>2]=c[t+12>>2];c[Sb+16>>2]=c[t+16>>2];c[Sb+20>>2]=c[t+20>>2];c[Sb+24>>2]=c[t+24>>2];c[Sb+28>>2]=c[t+28>>2];n=0;aa(16,Tb|0,Sb|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Tb>>2];c[be+4>>2]=c[Tb+4>>2];c[be+8>>2]=c[Tb+8>>2];c[be+12>>2]=c[Tb+12>>2];c[be+16>>2]=c[Tb+16>>2];c[be+20>>2]=c[Tb+20>>2];c[be+24>>2]=c[Tb+24>>2];c[be+28>>2]=c[Tb+28>>2];c[u>>2]=c[be>>2];c[u+4>>2]=c[be+4>>2];c[u+8>>2]=c[be+8>>2];c[u+12>>2]=c[be+12>>2];c[u+16>>2]=c[be+16>>2];c[u+20>>2]=c[be+20>>2];c[u+24>>2]=c[be+24>>2];c[u+28>>2]=c[be+28>>2];Oc=wb;c[Oc>>2]=2008548008;c[Oc+4>>2]=1006188771;Oc=v;c[Oc>>2]=909333341;c[Oc+4>>2]=34282279;Oc=w;c[Oc>>2]=1232425568;c[Oc+4>>2]=649588208;Oc=x;c[Oc>>2]=1132767341;c[Oc+4>>2]=622118450;Oc=z;c[Oc>>2]=-774045849;c[Oc+4>>2]=954723532;Oc=A;c[Oc>>2]=-1815212738;c[Oc+4>>2]=1710273405;Oc=B;c[Oc>>2]=581697706;c[Oc+4>>2]=-683028259;Oc=C;c[Oc>>2]=1248365901;c[Oc+4>>2]=21084622;Oc=vb;Pc=Cb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));n=0;aa(15,xb|0,wb|0,vb|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=sb;Pc=xb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=rb;Pc=xb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Rb>>2]=c[sb>>2];c[Rb+4>>2]=c[sb+4>>2];c[Rb+8>>2]=c[sb+8>>2];c[Rb+12>>2]=c[sb+12>>2];c[Rb+16>>2]=c[sb+16>>2];c[Rb+20>>2]=c[sb+20>>2];c[Rb+24>>2]=c[sb+24>>2];c[Rb+28>>2]=c[sb+28>>2];c[Qb>>2]=c[xb>>2];c[Qb+4>>2]=c[xb+4>>2];c[Qb+8>>2]=c[xb+8>>2];c[Qb+12>>2]=c[xb+12>>2];c[Qb+16>>2]=c[xb+16>>2];c[Qb+20>>2]=c[xb+20>>2];c[Qb+24>>2]=c[xb+24>>2];c[Qb+28>>2]=c[xb+28>>2];n=0;aa(16,Rb|0,Qb|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[tb>>2]=c[Rb>>2];c[tb+4>>2]=c[Rb+4>>2];c[tb+8>>2]=c[Rb+8>>2];c[tb+12>>2]=c[Rb+12>>2];c[tb+16>>2]=c[Rb+16>>2];c[tb+20>>2]=c[Rb+20>>2];c[tb+24>>2]=c[Rb+24>>2];c[tb+28>>2]=c[Rb+28>>2];c[Pb>>2]=c[D>>2];c[Pb+4>>2]=c[D+4>>2];c[Pb+8>>2]=c[D+8>>2];c[Pb+12>>2]=c[D+12>>2];c[Pb+16>>2]=c[D+16>>2];c[Pb+20>>2]=c[D+20>>2];c[Pb+24>>2]=c[D+24>>2];c[Pb+28>>2]=c[D+28>>2];c[Ob>>2]=c[E>>2];c[Ob+4>>2]=c[E+4>>2];c[Ob+8>>2]=c[E+8>>2];c[Ob+12>>2]=c[E+12>>2];c[Ob+16>>2]=c[E+16>>2];c[Ob+20>>2]=c[E+20>>2];c[Ob+24>>2]=c[E+24>>2];c[Ob+28>>2]=c[E+28>>2];n=0;aa(16,Pb|0,Ob|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Pb>>2];c[be+4>>2]=c[Pb+4>>2];c[be+8>>2]=c[Pb+8>>2];c[be+12>>2]=c[Pb+12>>2];c[be+16>>2]=c[Pb+16>>2];c[be+20>>2]=c[Pb+20>>2];c[be+24>>2]=c[Pb+24>>2];c[be+28>>2]=c[Pb+28>>2];c[F>>2]=c[be>>2];c[F+4>>2]=c[be+4>>2];c[F+8>>2]=c[be+8>>2];c[F+12>>2]=c[be+12>>2];c[F+16>>2]=c[be+16>>2];c[F+20>>2]=c[be+20>>2];c[F+24>>2]=c[be+24>>2];c[F+28>>2]=c[be+28>>2];Oc=qb;Pc=xb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Nb>>2]=c[tb>>2];c[Nb+4>>2]=c[tb+4>>2];c[Nb+8>>2]=c[tb+8>>2];c[Nb+12>>2]=c[tb+12>>2];c[Nb+16>>2]=c[tb+16>>2];c[Nb+20>>2]=c[tb+20>>2];c[Nb+24>>2]=c[tb+24>>2];c[Nb+28>>2]=c[tb+28>>2];c[ae>>2]=c[xb>>2];c[ae+4>>2]=c[xb+4>>2];c[ae+8>>2]=c[xb+8>>2];c[ae+12>>2]=c[xb+12>>2];c[ae+16>>2]=c[xb+16>>2];c[ae+20>>2]=c[xb+20>>2];c[ae+24>>2]=c[xb+24>>2];c[ae+28>>2]=c[xb+28>>2];n=0;aa(16,Nb|0,ae|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[ub>>2]=c[Nb>>2];c[ub+4>>2]=c[Nb+4>>2];c[ub+8>>2]=c[Nb+8>>2];c[ub+12>>2]=c[Nb+12>>2];c[ub+16>>2]=c[Nb+16>>2];c[ub+20>>2]=c[Nb+20>>2];c[ub+24>>2]=c[Nb+24>>2];c[ub+28>>2]=c[Nb+28>>2];c[rd>>2]=c[F>>2];c[rd+4>>2]=c[F+4>>2];c[rd+8>>2]=c[F+8>>2];c[rd+12>>2]=c[F+12>>2];c[rd+16>>2]=c[F+16>>2];c[rd+20>>2]=c[F+20>>2];c[rd+24>>2]=c[F+24>>2];c[rd+28>>2]=c[F+28>>2];c[pd>>2]=c[G>>2];c[pd+4>>2]=c[G+4>>2];c[pd+8>>2]=c[G+8>>2];c[pd+12>>2]=c[G+12>>2];c[pd+16>>2]=c[G+16>>2];c[pd+20>>2]=c[G+20>>2];c[pd+24>>2]=c[G+24>>2];c[pd+28>>2]=c[G+28>>2];n=0;aa(16,rd|0,pd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[rd>>2];c[be+4>>2]=c[rd+4>>2];c[be+8>>2]=c[rd+8>>2];c[be+12>>2]=c[rd+12>>2];c[be+16>>2]=c[rd+16>>2];c[be+20>>2]=c[rd+20>>2];c[be+24>>2]=c[rd+24>>2];c[be+28>>2]=c[rd+28>>2];c[H>>2]=c[be>>2];c[H+4>>2]=c[be+4>>2];c[H+8>>2]=c[be+8>>2];c[H+12>>2]=c[be+12>>2];c[H+16>>2]=c[be+16>>2];c[H+20>>2]=c[be+20>>2];c[H+24>>2]=c[be+24>>2];c[H+28>>2]=c[be+28>>2];Oc=nb;Pc=Eb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=mb;Pc=ub;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[od>>2]=c[Eb>>2];c[od+4>>2]=c[Eb+4>>2];c[od+8>>2]=c[Eb+8>>2];c[od+12>>2]=c[Eb+12>>2];c[od+16>>2]=c[Eb+16>>2];c[od+20>>2]=c[Eb+20>>2];c[od+24>>2]=c[Eb+24>>2];c[od+28>>2]=c[Eb+28>>2];c[nd>>2]=c[ub>>2];c[nd+4>>2]=c[ub+4>>2];c[nd+8>>2]=c[ub+8>>2];c[nd+12>>2]=c[ub+12>>2];c[nd+16>>2]=c[ub+16>>2];c[nd+20>>2]=c[ub+20>>2];c[nd+24>>2]=c[ub+24>>2];c[nd+28>>2]=c[ub+28>>2];n=0;aa(16,od|0,nd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[ob>>2]=c[od>>2];c[ob+4>>2]=c[od+4>>2];c[ob+8>>2]=c[od+8>>2];c[ob+12>>2]=c[od+12>>2];c[ob+16>>2]=c[od+16>>2];c[ob+20>>2]=c[od+20>>2];c[ob+24>>2]=c[od+24>>2];c[ob+28>>2]=c[od+28>>2];c[md>>2]=c[I>>2];c[md+4>>2]=c[I+4>>2];c[md+8>>2]=c[I+8>>2];c[md+12>>2]=c[I+12>>2];c[md+16>>2]=c[I+16>>2];c[md+20>>2]=c[I+20>>2];c[md+24>>2]=c[I+24>>2];c[md+28>>2]=c[I+28>>2];c[ld>>2]=c[J>>2];c[ld+4>>2]=c[J+4>>2];c[ld+8>>2]=c[J+8>>2];c[ld+12>>2]=c[J+12>>2];c[ld+16>>2]=c[J+16>>2];c[ld+20>>2]=c[J+20>>2];c[ld+24>>2]=c[J+24>>2];c[ld+28>>2]=c[J+28>>2];n=0;aa(16,md|0,ld|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[md>>2];c[be+4>>2]=c[md+4>>2];c[be+8>>2]=c[md+8>>2];c[be+12>>2]=c[md+12>>2];c[be+16>>2]=c[md+16>>2];c[be+20>>2]=c[md+20>>2];c[be+24>>2]=c[md+24>>2];c[be+28>>2]=c[md+28>>2];c[K>>2]=c[be>>2];c[K+4>>2]=c[be+4>>2];c[K+8>>2]=c[be+8>>2];c[K+12>>2]=c[be+12>>2];c[K+16>>2]=c[be+16>>2];c[K+20>>2]=c[be+20>>2];c[K+24>>2]=c[be+24>>2];c[K+28>>2]=c[be+28>>2];c[kd>>2]=c[ob>>2];c[kd+4>>2]=c[ob+4>>2];c[kd+8>>2]=c[ob+8>>2];c[kd+12>>2]=c[ob+12>>2];c[kd+16>>2]=c[ob+16>>2];c[kd+20>>2]=c[ob+20>>2];c[kd+24>>2]=c[ob+24>>2];c[kd+28>>2]=c[ob+28>>2];Qc=jd;c[Qc>>2]=1325794674;c[Qc+4>>2]=-2017531950;Qc=L;c[Qc>>2]=790391525;c[Qc+4>>2]=-788714787;Qc=M;c[Qc>>2]=-50507964;c[Qc+4>>2]=-1889569646;Qc=N;c[Qc>>2]=1033682860;c[Qc+4>>2]=523723546;n=0;X(1,kd|0,jd|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){b=82;break a};c[pb>>2]=c[kd>>2];c[pb+4>>2]=c[kd+4>>2];c[pb+8>>2]=c[kd+8>>2];c[pb+12>>2]=c[kd+12>>2];c[pb+16>>2]=c[kd+16>>2];c[pb+20>>2]=c[kd+20>>2];c[pb+24>>2]=c[kd+24>>2];c[pb+28>>2]=c[kd+28>>2];c[id>>2]=c[K>>2];c[id+4>>2]=c[K+4>>2];c[id+8>>2]=c[K+8>>2];c[id+12>>2]=c[K+12>>2];c[id+16>>2]=c[K+16>>2];c[id+20>>2]=c[K+20>>2];c[id+24>>2]=c[K+24>>2];c[id+28>>2]=c[K+28>>2];Qc=hd;c[Qc>>2]=1325794674;c[Qc+4>>2]=-2017531950;Qc=O;c[Qc>>2]=790391525;c[Qc+4>>2]=-788714787;Qc=P;c[Qc>>2]=-50507964;c[Qc+4>>2]=-1889569646;Qc=Q;c[Qc>>2]=1033682860;c[Qc+4>>2]=523723546;n=0;X(1,id|0,hd|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[id>>2];c[be+4>>2]=c[id+4>>2];c[be+8>>2]=c[id+8>>2];c[be+12>>2]=c[id+12>>2];c[be+16>>2]=c[id+16>>2];c[be+20>>2]=c[id+20>>2];c[be+24>>2]=c[id+24>>2];c[be+28>>2]=c[id+28>>2];c[R>>2]=c[be>>2];c[R+4>>2]=c[be+4>>2];c[R+8>>2]=c[be+8>>2];c[R+12>>2]=c[be+12>>2];c[R+16>>2]=c[be+16>>2];c[R+20>>2]=c[be+20>>2];c[R+24>>2]=c[be+24>>2];c[R+28>>2]=c[be+28>>2];Oc=ib;Pc=Ga;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=hb;Pc=Ha;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[gd>>2]=c[Ga>>2];c[gd+4>>2]=c[Ga+4>>2];c[gd+8>>2]=c[Ga+8>>2];c[gd+12>>2]=c[Ga+12>>2];c[gd+16>>2]=c[Ga+16>>2];c[gd+20>>2]=c[Ga+20>>2];c[gd+24>>2]=c[Ga+24>>2];c[gd+28>>2]=c[Ga+28>>2];c[ed>>2]=c[Ha>>2];c[ed+4>>2]=c[Ha+4>>2];c[ed+8>>2]=c[Ha+8>>2];c[ed+12>>2]=c[Ha+12>>2];c[ed+16>>2]=c[Ha+16>>2];c[ed+20>>2]=c[Ha+20>>2];c[ed+24>>2]=c[Ha+24>>2];c[ed+28>>2]=c[Ha+28>>2];n=0;aa(16,gd|0,ed|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[jb>>2]=c[gd>>2];c[jb+4>>2]=c[gd+4>>2];c[jb+8>>2]=c[gd+8>>2];c[jb+12>>2]=c[gd+12>>2];c[jb+16>>2]=c[gd+16>>2];c[jb+20>>2]=c[gd+20>>2];c[jb+24>>2]=c[gd+24>>2];c[jb+28>>2]=c[gd+28>>2];c[dd>>2]=c[S>>2];c[dd+4>>2]=c[S+4>>2];c[dd+8>>2]=c[S+8>>2];c[dd+12>>2]=c[S+12>>2];c[dd+16>>2]=c[S+16>>2];c[dd+20>>2]=c[S+20>>2];c[dd+24>>2]=c[S+24>>2];c[dd+28>>2]=c[S+28>>2];c[cd>>2]=c[T>>2];c[cd+4>>2]=c[T+4>>2];c[cd+8>>2]=c[T+8>>2];c[cd+12>>2]=c[T+12>>2];c[cd+16>>2]=c[T+16>>2];c[cd+20>>2]=c[T+20>>2];c[cd+24>>2]=c[T+24>>2];c[cd+28>>2]=c[T+28>>2];n=0;aa(16,dd|0,cd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[dd>>2];c[be+4>>2]=c[dd+4>>2];c[be+8>>2]=c[dd+8>>2];c[be+12>>2]=c[dd+12>>2];c[be+16>>2]=c[dd+16>>2];c[be+20>>2]=c[dd+20>>2];c[be+24>>2]=c[dd+24>>2];c[be+28>>2]=c[dd+28>>2];c[U>>2]=c[be>>2];c[U+4>>2]=c[be+4>>2];c[U+8>>2]=c[be+8>>2];c[U+12>>2]=c[be+12>>2];c[U+16>>2]=c[be+16>>2];c[U+20>>2]=c[be+20>>2];c[U+24>>2]=c[be+24>>2];c[U+28>>2]=c[be+28>>2];n=0;_(17,kb|0,jb|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=fb;Pc=Eb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=eb;Pc=Db;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[$d>>2]=c[Eb>>2];c[$d+4>>2]=c[Eb+4>>2];c[$d+8>>2]=c[Eb+8>>2];c[$d+12>>2]=c[Eb+12>>2];c[$d+16>>2]=c[Eb+16>>2];c[$d+20>>2]=c[Eb+20>>2];c[$d+24>>2]=c[Eb+24>>2];c[$d+28>>2]=c[Eb+28>>2];c[_d>>2]=c[Db>>2];c[_d+4>>2]=c[Db+4>>2];c[_d+8>>2]=c[Db+8>>2];c[_d+12>>2]=c[Db+12>>2];c[_d+16>>2]=c[Db+16>>2];c[_d+20>>2]=c[Db+20>>2];c[_d+24>>2]=c[Db+24>>2];c[_d+28>>2]=c[Db+28>>2];n=0;aa(16,$d|0,_d|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[gb>>2]=c[$d>>2];c[gb+4>>2]=c[$d+4>>2];c[gb+8>>2]=c[$d+8>>2];c[gb+12>>2]=c[$d+12>>2];c[gb+16>>2]=c[$d+16>>2];c[gb+20>>2]=c[$d+20>>2];c[gb+24>>2]=c[$d+24>>2];c[gb+28>>2]=c[$d+28>>2];c[Zd>>2]=c[V>>2];c[Zd+4>>2]=c[V+4>>2];c[Zd+8>>2]=c[V+8>>2];c[Zd+12>>2]=c[V+12>>2];c[Zd+16>>2]=c[V+16>>2];c[Zd+20>>2]=c[V+20>>2];c[Zd+24>>2]=c[V+24>>2];c[Zd+28>>2]=c[V+28>>2];c[Yd>>2]=c[W>>2];c[Yd+4>>2]=c[W+4>>2];c[Yd+8>>2]=c[W+8>>2];c[Yd+12>>2]=c[W+12>>2];c[Yd+16>>2]=c[W+16>>2];c[Yd+20>>2]=c[W+20>>2];c[Yd+24>>2]=c[W+24>>2];c[Yd+28>>2]=c[W+28>>2];n=0;aa(16,Zd|0,Yd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Zd>>2];c[be+4>>2]=c[Zd+4>>2];c[be+8>>2]=c[Zd+8>>2];c[be+12>>2]=c[Zd+12>>2];c[be+16>>2]=c[Zd+16>>2];c[be+20>>2]=c[Zd+20>>2];c[be+24>>2]=c[Zd+24>>2];c[be+28>>2]=c[Zd+28>>2];c[Y>>2]=c[be>>2];c[Y+4>>2]=c[be+4>>2];c[Y+8>>2]=c[be+8>>2];c[Y+12>>2]=c[be+12>>2];c[Y+16>>2]=c[be+16>>2];c[Y+20>>2]=c[be+20>>2];c[Y+24>>2]=c[be+24>>2];c[Y+28>>2]=c[be+28>>2];c[Xd>>2]=c[kb>>2];c[Xd+4>>2]=c[kb+4>>2];c[Xd+8>>2]=c[kb+8>>2];c[Xd+12>>2]=c[kb+12>>2];c[Xd+16>>2]=c[kb+16>>2];c[Xd+20>>2]=c[kb+20>>2];c[Xd+24>>2]=c[kb+24>>2];c[Xd+28>>2]=c[kb+28>>2];c[Wd>>2]=c[gb>>2];c[Wd+4>>2]=c[gb+4>>2];c[Wd+8>>2]=c[gb+8>>2];c[Wd+12>>2]=c[gb+12>>2];c[Wd+16>>2]=c[gb+16>>2];c[Wd+20>>2]=c[gb+20>>2];c[Wd+24>>2]=c[gb+24>>2];c[Wd+28>>2]=c[gb+28>>2];n=0;aa(17,Xd|0,Wd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[lb>>2]=c[Xd>>2];c[lb+4>>2]=c[Xd+4>>2];c[lb+8>>2]=c[Xd+8>>2];c[lb+12>>2]=c[Xd+12>>2];c[lb+16>>2]=c[Xd+16>>2];c[lb+20>>2]=c[Xd+20>>2];c[lb+24>>2]=c[Xd+24>>2];c[lb+28>>2]=c[Xd+28>>2];c[Vd>>2]=c[$>>2];c[Vd+4>>2]=c[$+4>>2];c[Vd+8>>2]=c[$+8>>2];c[Vd+12>>2]=c[$+12>>2];c[Vd+16>>2]=c[$+16>>2];c[Vd+20>>2]=c[$+20>>2];c[Vd+24>>2]=c[$+24>>2];c[Vd+28>>2]=c[$+28>>2];c[Ud>>2]=c[Y>>2];c[Ud+4>>2]=c[Y+4>>2];c[Ud+8>>2]=c[Y+8>>2];c[Ud+12>>2]=c[Y+12>>2];c[Ud+16>>2]=c[Y+16>>2];c[Ud+20>>2]=c[Y+20>>2];c[Ud+24>>2]=c[Y+24>>2];c[Ud+28>>2]=c[Y+28>>2];n=0;aa(17,Vd|0,Ud|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Vd>>2];c[be+4>>2]=c[Vd+4>>2];c[be+8>>2]=c[Vd+8>>2];c[be+12>>2]=c[Vd+12>>2];c[be+16>>2]=c[Vd+16>>2];c[be+20>>2]=c[Vd+20>>2];c[be+24>>2]=c[Vd+24>>2];c[be+28>>2]=c[Vd+28>>2];c[ba>>2]=c[be>>2];c[ba+4>>2]=c[be+4>>2];c[ba+8>>2]=c[be+8>>2];c[ba+12>>2]=c[be+12>>2];c[ba+16>>2]=c[be+16>>2];c[ba+20>>2]=c[be+20>>2];c[ba+24>>2]=c[be+24>>2];c[ba+28>>2]=c[be+28>>2];Oc=cb;Pc=xb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=bb;Pc=Eb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Td>>2]=c[xb>>2];c[Td+4>>2]=c[xb+4>>2];c[Td+8>>2]=c[xb+8>>2];c[Td+12>>2]=c[xb+12>>2];c[Td+16>>2]=c[xb+16>>2];c[Td+20>>2]=c[xb+20>>2];c[Td+24>>2]=c[xb+24>>2];c[Td+28>>2]=c[xb+28>>2];c[Sd>>2]=c[Eb>>2];c[Sd+4>>2]=c[Eb+4>>2];c[Sd+8>>2]=c[Eb+8>>2];c[Sd+12>>2]=c[Eb+12>>2];c[Sd+16>>2]=c[Eb+16>>2];c[Sd+20>>2]=c[Eb+20>>2];c[Sd+24>>2]=c[Eb+24>>2];c[Sd+28>>2]=c[Eb+28>>2];n=0;aa(17,Td|0,Sd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[db>>2]=c[Td>>2];c[db+4>>2]=c[Td+4>>2];c[db+8>>2]=c[Td+8>>2];c[db+12>>2]=c[Td+12>>2];c[db+16>>2]=c[Td+16>>2];c[db+20>>2]=c[Td+20>>2];c[db+24>>2]=c[Td+24>>2];c[db+28>>2]=c[Td+28>>2];c[Rd>>2]=c[ca>>2];c[Rd+4>>2]=c[ca+4>>2];c[Rd+8>>2]=c[ca+8>>2];c[Rd+12>>2]=c[ca+12>>2];c[Rd+16>>2]=c[ca+16>>2];c[Rd+20>>2]=c[ca+20>>2];c[Rd+24>>2]=c[ca+24>>2];c[Rd+28>>2]=c[ca+28>>2];c[Qd>>2]=c[da>>2];c[Qd+4>>2]=c[da+4>>2];c[Qd+8>>2]=c[da+8>>2];c[Qd+12>>2]=c[da+12>>2];c[Qd+16>>2]=c[da+16>>2];c[Qd+20>>2]=c[da+20>>2];c[Qd+24>>2]=c[da+24>>2];c[Qd+28>>2]=c[da+28>>2];n=0;aa(17,Rd|0,Qd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Rd>>2];c[be+4>>2]=c[Rd+4>>2];c[be+8>>2]=c[Rd+8>>2];c[be+12>>2]=c[Rd+12>>2];c[be+16>>2]=c[Rd+16>>2];c[be+20>>2]=c[Rd+20>>2];c[be+24>>2]=c[Rd+24>>2];c[be+28>>2]=c[Rd+28>>2];c[ea>>2]=c[be>>2];c[ea+4>>2]=c[be+4>>2];c[ea+8>>2]=c[be+8>>2];c[ea+12>>2]=c[be+12>>2];c[ea+16>>2]=c[be+16>>2];c[ea+20>>2]=c[be+20>>2];c[ea+24>>2]=c[be+24>>2];c[ea+28>>2]=c[be+28>>2];n=0;_(17,ab|0,Nc|0);Qc=n;n=0;if(Qc&1){b=82;break a}n=0;_(17,$a|0,xb|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=Za;Pc=Ib;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Xa;Pc=Eb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Wa;Pc=ub;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[ad>>2]=c[Eb>>2];c[ad+4>>2]=c[Eb+4>>2];c[ad+8>>2]=c[Eb+8>>2];c[ad+12>>2]=c[Eb+12>>2];c[ad+16>>2]=c[Eb+16>>2];c[ad+20>>2]=c[Eb+20>>2];c[ad+24>>2]=c[Eb+24>>2];c[ad+28>>2]=c[Eb+28>>2];c[$c>>2]=c[ub>>2];c[$c+4>>2]=c[ub+4>>2];c[$c+8>>2]=c[ub+8>>2];c[$c+12>>2]=c[ub+12>>2];c[$c+16>>2]=c[ub+16>>2];c[$c+20>>2]=c[ub+20>>2];c[$c+24>>2]=c[ub+24>>2];c[$c+28>>2]=c[ub+28>>2];n=0;aa(17,ad|0,$c|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[Ya>>2]=c[ad>>2];c[Ya+4>>2]=c[ad+4>>2];c[Ya+8>>2]=c[ad+8>>2];c[Ya+12>>2]=c[ad+12>>2];c[Ya+16>>2]=c[ad+16>>2];c[Ya+20>>2]=c[ad+20>>2];c[Ya+24>>2]=c[ad+24>>2];c[Ya+28>>2]=c[ad+28>>2];c[_c>>2]=c[fa>>2];c[_c+4>>2]=c[fa+4>>2];c[_c+8>>2]=c[fa+8>>2];c[_c+12>>2]=c[fa+12>>2];c[_c+16>>2]=c[fa+16>>2];c[_c+20>>2]=c[fa+20>>2];c[_c+24>>2]=c[fa+24>>2];c[_c+28>>2]=c[fa+28>>2];c[Zc>>2]=c[ga>>2];c[Zc+4>>2]=c[ga+4>>2];c[Zc+8>>2]=c[ga+8>>2];c[Zc+12>>2]=c[ga+12>>2];c[Zc+16>>2]=c[ga+16>>2];c[Zc+20>>2]=c[ga+20>>2];c[Zc+24>>2]=c[ga+24>>2];c[Zc+28>>2]=c[ga+28>>2];n=0;aa(17,_c|0,Zc|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[_c>>2];c[be+4>>2]=c[_c+4>>2];c[be+8>>2]=c[_c+8>>2];c[be+12>>2]=c[_c+12>>2];c[be+16>>2]=c[_c+16>>2];c[be+20>>2]=c[_c+20>>2];c[be+24>>2]=c[_c+24>>2];c[be+28>>2]=c[_c+28>>2];c[ha>>2]=c[be>>2];c[ha+4>>2]=c[be+4>>2];c[ha+8>>2]=c[be+8>>2];c[ha+12>>2]=c[be+12>>2];c[ha+16>>2]=c[be+16>>2];c[ha+20>>2]=c[be+20>>2];c[ha+24>>2]=c[be+24>>2];c[ha+28>>2]=c[be+28>>2];n=0;aa(15,_a|0,Za|0,Ya|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=Nc;Pc=_a;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));n=0;_(17,Ua|0,pb|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=Ra;Pc=$a;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Qa;Pc=$a;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Yc>>2]=c[Ra>>2];c[Yc+4>>2]=c[Ra+4>>2];c[Yc+8>>2]=c[Ra+8>>2];c[Yc+12>>2]=c[Ra+12>>2];c[Yc+16>>2]=c[Ra+16>>2];c[Yc+20>>2]=c[Ra+20>>2];c[Yc+24>>2]=c[Ra+24>>2];c[Yc+28>>2]=c[Ra+28>>2];c[Wc>>2]=c[$a>>2];c[Wc+4>>2]=c[$a+4>>2];c[Wc+8>>2]=c[$a+8>>2];c[Wc+12>>2]=c[$a+12>>2];c[Wc+16>>2]=c[$a+16>>2];c[Wc+20>>2]=c[$a+20>>2];c[Wc+24>>2]=c[$a+24>>2];c[Wc+28>>2]=c[$a+28>>2];n=0;aa(16,Yc|0,Wc|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[Sa>>2]=c[Yc>>2];c[Sa+4>>2]=c[Yc+4>>2];c[Sa+8>>2]=c[Yc+8>>2];c[Sa+12>>2]=c[Yc+12>>2];c[Sa+16>>2]=c[Yc+16>>2];c[Sa+20>>2]=c[Yc+20>>2];c[Sa+24>>2]=c[Yc+24>>2];c[Sa+28>>2]=c[Yc+28>>2];c[Vc>>2]=c[ia>>2];c[Vc+4>>2]=c[ia+4>>2];c[Vc+8>>2]=c[ia+8>>2];c[Vc+12>>2]=c[ia+12>>2];c[Vc+16>>2]=c[ia+16>>2];c[Vc+20>>2]=c[ia+20>>2];c[Vc+24>>2]=c[ia+24>>2];c[Vc+28>>2]=c[ia+28>>2];c[Uc>>2]=c[ja>>2];c[Uc+4>>2]=c[ja+4>>2];c[Uc+8>>2]=c[ja+8>>2];c[Uc+12>>2]=c[ja+12>>2];c[Uc+16>>2]=c[ja+16>>2];c[Uc+20>>2]=c[ja+20>>2];c[Uc+24>>2]=c[ja+24>>2];c[Uc+28>>2]=c[ja+28>>2];n=0;aa(16,Vc|0,Uc|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Vc>>2];c[be+4>>2]=c[Vc+4>>2];c[be+8>>2]=c[Vc+8>>2];c[be+12>>2]=c[Vc+12>>2];c[be+16>>2]=c[Vc+16>>2];c[be+20>>2]=c[Vc+20>>2];c[be+24>>2]=c[Vc+24>>2];c[be+28>>2]=c[Vc+28>>2];c[ka>>2]=c[be>>2];c[ka+4>>2]=c[be+4>>2];c[ka+8>>2]=c[be+8>>2];c[ka+12>>2]=c[be+12>>2];c[ka+16>>2]=c[be+16>>2];c[ka+20>>2]=c[be+20>>2];c[ka+24>>2]=c[be+24>>2];c[ka+28>>2]=c[be+28>>2];Oc=Pa;Pc=$a;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Pd>>2]=c[Sa>>2];c[Pd+4>>2]=c[Sa+4>>2];c[Pd+8>>2]=c[Sa+8>>2];c[Pd+12>>2]=c[Sa+12>>2];c[Pd+16>>2]=c[Sa+16>>2];c[Pd+20>>2]=c[Sa+20>>2];c[Pd+24>>2]=c[Sa+24>>2];c[Pd+28>>2]=c[Sa+28>>2];c[Od>>2]=c[$a>>2];c[Od+4>>2]=c[$a+4>>2];c[Od+8>>2]=c[$a+8>>2];c[Od+12>>2]=c[$a+12>>2];c[Od+16>>2]=c[$a+16>>2];c[Od+20>>2]=c[$a+20>>2];c[Od+24>>2]=c[$a+24>>2];c[Od+28>>2]=c[$a+28>>2];n=0;aa(16,Pd|0,Od|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[Ta>>2]=c[Pd>>2];c[Ta+4>>2]=c[Pd+4>>2];c[Ta+8>>2]=c[Pd+8>>2];c[Ta+12>>2]=c[Pd+12>>2];c[Ta+16>>2]=c[Pd+16>>2];c[Ta+20>>2]=c[Pd+20>>2];c[Ta+24>>2]=c[Pd+24>>2];c[Ta+28>>2]=c[Pd+28>>2];c[Nd>>2]=c[ka>>2];c[Nd+4>>2]=c[ka+4>>2];c[Nd+8>>2]=c[ka+8>>2];c[Nd+12>>2]=c[ka+12>>2];c[Nd+16>>2]=c[ka+16>>2];c[Nd+20>>2]=c[ka+20>>2];c[Nd+24>>2]=c[ka+24>>2];c[Nd+28>>2]=c[ka+28>>2];c[Md>>2]=c[la>>2];c[Md+4>>2]=c[la+4>>2];c[Md+8>>2]=c[la+8>>2];c[Md+12>>2]=c[la+12>>2];c[Md+16>>2]=c[la+16>>2];c[Md+20>>2]=c[la+20>>2];c[Md+24>>2]=c[la+24>>2];c[Md+28>>2]=c[la+28>>2];n=0;aa(16,Nd|0,Md|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Nd>>2];c[be+4>>2]=c[Nd+4>>2];c[be+8>>2]=c[Nd+8>>2];c[be+12>>2]=c[Nd+12>>2];c[be+16>>2]=c[Nd+16>>2];c[be+20>>2]=c[Nd+20>>2];c[be+24>>2]=c[Nd+24>>2];c[be+28>>2]=c[Nd+28>>2];c[ma>>2]=c[be>>2];c[ma+4>>2]=c[be+4>>2];c[ma+8>>2]=c[be+8>>2];c[ma+12>>2]=c[be+12>>2];c[ma+16>>2]=c[be+16>>2];c[ma+20>>2]=c[be+20>>2];c[ma+24>>2]=c[be+24>>2];c[ma+28>>2]=c[be+28>>2];c[Ld>>2]=c[Ua>>2];c[Ld+4>>2]=c[Ua+4>>2];c[Ld+8>>2]=c[Ua+8>>2];c[Ld+12>>2]=c[Ua+12>>2];c[Ld+16>>2]=c[Ua+16>>2];c[Ld+20>>2]=c[Ua+20>>2];c[Ld+24>>2]=c[Ua+24>>2];c[Ld+28>>2]=c[Ua+28>>2];c[Kd>>2]=c[Ta>>2];c[Kd+4>>2]=c[Ta+4>>2];c[Kd+8>>2]=c[Ta+8>>2];c[Kd+12>>2]=c[Ta+12>>2];c[Kd+16>>2]=c[Ta+16>>2];c[Kd+20>>2]=c[Ta+20>>2];c[Kd+24>>2]=c[Ta+24>>2];c[Kd+28>>2]=c[Ta+28>>2];n=0;aa(17,Ld|0,Kd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[Va>>2]=c[Ld>>2];c[Va+4>>2]=c[Ld+4>>2];c[Va+8>>2]=c[Ld+8>>2];c[Va+12>>2]=c[Ld+12>>2];c[Va+16>>2]=c[Ld+16>>2];c[Va+20>>2]=c[Ld+20>>2];c[Va+24>>2]=c[Ld+24>>2];c[Va+28>>2]=c[Ld+28>>2];c[Jd>>2]=c[oa>>2];c[Jd+4>>2]=c[oa+4>>2];c[Jd+8>>2]=c[oa+8>>2];c[Jd+12>>2]=c[oa+12>>2];c[Jd+16>>2]=c[oa+16>>2];c[Jd+20>>2]=c[oa+20>>2];c[Jd+24>>2]=c[oa+24>>2];c[Jd+28>>2]=c[oa+28>>2];c[Id>>2]=c[ma>>2];c[Id+4>>2]=c[ma+4>>2];c[Id+8>>2]=c[ma+8>>2];c[Id+12>>2]=c[ma+12>>2];c[Id+16>>2]=c[ma+16>>2];c[Id+20>>2]=c[ma+20>>2];c[Id+24>>2]=c[ma+24>>2];c[Id+28>>2]=c[ma+28>>2];n=0;aa(17,Jd|0,Id|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Jd>>2];c[be+4>>2]=c[Jd+4>>2];c[be+8>>2]=c[Jd+8>>2];c[be+12>>2]=c[Jd+12>>2];c[be+16>>2]=c[Jd+16>>2];c[be+20>>2]=c[Jd+20>>2];c[be+24>>2]=c[Jd+24>>2];c[be+28>>2]=c[Jd+28>>2];c[pa>>2]=c[be>>2];c[pa+4>>2]=c[be+4>>2];c[pa+8>>2]=c[be+8>>2];c[pa+12>>2]=c[be+12>>2];c[pa+16>>2]=c[be+16>>2];c[pa+20>>2]=c[be+20>>2];c[pa+24>>2]=c[be+24>>2];c[pa+28>>2]=c[be+28>>2];Oc=Ga;Pc=Va;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Na;Pc=Eb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Ma;Pc=lb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));n=0;aa(15,Oa|0,Na|0,Ma|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=Ha;Pc=Oa;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Ka;c[Oc>>2]=1091403767;c[Oc+4>>2]=-167360562;Oc=qa;c[Oc>>2]=-753151983;c[Oc+4>>2]=792555341;Oc=ra;c[Oc>>2]=960546513;c[Oc+4>>2]=692269950;Oc=sa;c[Oc>>2]=-1478256553;c[Oc+4>>2]=496343272;Oc=ta;c[Oc>>2]=-980480611;c[Oc+4>>2]=-748862579;Oc=ua;c[Oc>>2]=-171504835;c[Oc+4>>2]=175696680;Oc=va;c[Oc>>2]=2021213740;c[Oc+4>>2]=1718526831;Oc=wa;c[Oc>>2]=-1710760145;c[Oc+4>>2]=235567041;Oc=mc;Pc=db;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));n=0;aa(15,La|0,Ka|0,mc|0);Qc=n;n=0;if(Qc&1){b=82;break a}Oc=kc;Pc=lb;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Hd>>2]=c[lb>>2];c[Hd+4>>2]=c[lb+4>>2];c[Hd+8>>2]=c[lb+8>>2];c[Hd+12>>2]=c[lb+12>>2];c[Hd+16>>2]=c[lb+16>>2];c[Hd+20>>2]=c[lb+20>>2];c[Hd+24>>2]=c[lb+24>>2];c[Hd+28>>2]=c[lb+28>>2];n=0;_(18,Hd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[lc>>2]=c[Hd>>2];c[lc+4>>2]=c[Hd+4>>2];c[lc+8>>2]=c[Hd+8>>2];c[lc+12>>2]=c[Hd+12>>2];c[lc+16>>2]=c[Hd+16>>2];c[lc+20>>2]=c[Hd+20>>2];c[lc+24>>2]=c[Hd+24>>2];c[lc+28>>2]=c[Hd+28>>2];c[Cd>>2]=c[xa>>2];c[Cd+4>>2]=c[xa+4>>2];c[Cd+8>>2]=c[xa+8>>2];c[Cd+12>>2]=c[xa+12>>2];c[Cd+16>>2]=c[xa+16>>2];c[Cd+20>>2]=c[xa+20>>2];c[Cd+24>>2]=c[xa+24>>2];c[Cd+28>>2]=c[xa+28>>2];n=0;_(18,Cd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Cd>>2];c[be+4>>2]=c[Cd+4>>2];c[be+8>>2]=c[Cd+8>>2];c[be+12>>2]=c[Cd+12>>2];c[be+16>>2]=c[Cd+16>>2];c[be+20>>2]=c[Cd+20>>2];c[be+24>>2]=c[Cd+24>>2];c[be+28>>2]=c[Cd+28>>2];c[ya>>2]=c[be>>2];c[ya+4>>2]=c[be+4>>2];c[ya+8>>2]=c[be+8>>2];c[ya+12>>2]=c[be+12>>2];c[ya+16>>2]=c[be+16>>2];c[ya+20>>2]=c[be+20>>2];c[ya+24>>2]=c[be+24>>2];c[ya+28>>2]=c[be+28>>2];Oc=hc;Pc=ab;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=gc;Pc=ab;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[Ad>>2]=c[hc>>2];c[Ad+4>>2]=c[hc+4>>2];c[Ad+8>>2]=c[hc+8>>2];c[Ad+12>>2]=c[hc+12>>2];c[Ad+16>>2]=c[hc+16>>2];c[Ad+20>>2]=c[hc+20>>2];c[Ad+24>>2]=c[hc+24>>2];c[Ad+28>>2]=c[hc+28>>2];c[zd>>2]=c[ab>>2];c[zd+4>>2]=c[ab+4>>2];c[zd+8>>2]=c[ab+8>>2];c[zd+12>>2]=c[ab+12>>2];c[zd+16>>2]=c[ab+16>>2];c[zd+20>>2]=c[ab+20>>2];c[zd+24>>2]=c[ab+24>>2];c[zd+28>>2]=c[ab+28>>2];n=0;aa(16,Ad|0,zd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[ic>>2]=c[Ad>>2];c[ic+4>>2]=c[Ad+4>>2];c[ic+8>>2]=c[Ad+8>>2];c[ic+12>>2]=c[Ad+12>>2];c[ic+16>>2]=c[Ad+16>>2];c[ic+20>>2]=c[Ad+20>>2];c[ic+24>>2]=c[Ad+24>>2];c[ic+28>>2]=c[Ad+28>>2];c[yd>>2]=c[Aa>>2];c[yd+4>>2]=c[Aa+4>>2];c[yd+8>>2]=c[Aa+8>>2];c[yd+12>>2]=c[Aa+12>>2];c[yd+16>>2]=c[Aa+16>>2];c[yd+20>>2]=c[Aa+20>>2];c[yd+24>>2]=c[Aa+24>>2];c[yd+28>>2]=c[Aa+28>>2];c[xd>>2]=c[Ba>>2];c[xd+4>>2]=c[Ba+4>>2];c[xd+8>>2]=c[Ba+8>>2];c[xd+12>>2]=c[Ba+12>>2];c[xd+16>>2]=c[Ba+16>>2];c[xd+20>>2]=c[Ba+20>>2];c[xd+24>>2]=c[Ba+24>>2];c[xd+28>>2]=c[Ba+28>>2];n=0;aa(16,yd|0,xd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[yd>>2];c[be+4>>2]=c[yd+4>>2];c[be+8>>2]=c[yd+8>>2];c[be+12>>2]=c[yd+12>>2];c[be+16>>2]=c[yd+16>>2];c[be+20>>2]=c[yd+20>>2];c[be+24>>2]=c[yd+24>>2];c[be+28>>2]=c[yd+28>>2];c[Ca>>2]=c[be>>2];c[Ca+4>>2]=c[be+4>>2];c[Ca+8>>2]=c[be+8>>2];c[Ca+12>>2]=c[be+12>>2];c[Ca+16>>2]=c[be+16>>2];c[Ca+20>>2]=c[be+20>>2];c[Ca+24>>2]=c[be+24>>2];c[Ca+28>>2]=c[be+28>>2];Oc=fc;Pc=ab;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[wd>>2]=c[ic>>2];c[wd+4>>2]=c[ic+4>>2];c[wd+8>>2]=c[ic+8>>2];c[wd+12>>2]=c[ic+12>>2];c[wd+16>>2]=c[ic+16>>2];c[wd+20>>2]=c[ic+20>>2];c[wd+24>>2]=c[ic+24>>2];c[wd+28>>2]=c[ic+28>>2];c[vd>>2]=c[ab>>2];c[vd+4>>2]=c[ab+4>>2];c[vd+8>>2]=c[ab+8>>2];c[vd+12>>2]=c[ab+12>>2];c[vd+16>>2]=c[ab+16>>2];c[vd+20>>2]=c[ab+20>>2];c[vd+24>>2]=c[ab+24>>2];c[vd+28>>2]=c[ab+28>>2];n=0;aa(16,wd|0,vd|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[jc>>2]=c[wd>>2];c[jc+4>>2]=c[wd+4>>2];c[jc+8>>2]=c[wd+8>>2];c[jc+12>>2]=c[wd+12>>2];c[jc+16>>2]=c[wd+16>>2];c[jc+20>>2]=c[wd+20>>2];c[jc+24>>2]=c[wd+24>>2];c[jc+28>>2]=c[wd+28>>2];c[Tc>>2]=c[Ca>>2];c[Tc+4>>2]=c[Ca+4>>2];c[Tc+8>>2]=c[Ca+8>>2];c[Tc+12>>2]=c[Ca+12>>2];c[Tc+16>>2]=c[Ca+16>>2];c[Tc+20>>2]=c[Ca+20>>2];c[Tc+24>>2]=c[Ca+24>>2];c[Tc+28>>2]=c[Ca+28>>2];c[ud>>2]=c[Da>>2];c[ud+4>>2]=c[Da+4>>2];c[ud+8>>2]=c[Da+8>>2];c[ud+12>>2]=c[Da+12>>2];c[ud+16>>2]=c[Da+16>>2];c[ud+20>>2]=c[Da+20>>2];c[ud+24>>2]=c[Da+24>>2];c[ud+28>>2]=c[Da+28>>2];n=0;aa(16,Tc|0,ud|0,136);Qc=n;n=0;if(Qc&1){b=82;break a};c[be>>2]=c[Tc>>2];c[be+4>>2]=c[Tc+4>>2];c[be+8>>2]=c[Tc+8>>2];c[be+12>>2]=c[Tc+12>>2];c[be+16>>2]=c[Tc+16>>2];c[be+20>>2]=c[Tc+20>>2];c[be+24>>2]=c[Tc+24>>2];c[be+28>>2]=c[Tc+28>>2];c[Ea>>2]=c[be>>2];c[Ea+4>>2]=c[be+4>>2];c[Ea+8>>2]=c[be+8>>2];c[Ea+12>>2]=c[be+12>>2];c[Ea+16>>2]=c[be+16>>2];c[Ea+20>>2]=c[be+20>>2];c[Ea+24>>2]=c[be+24>>2];c[Ea+28>>2]=c[be+28>>2];Oc=Kb;Pc=La;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=e;Pc=lc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=f;Pc=jc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));b=c[Mb>>2]|0;if((b|0)==(c[Ja>>2]|0)){n=0;Z(42,Sc|0);Qc=n;n=0;if(Qc&1){b=82;break a}b=c[Mb>>2]|0}ok((c[Sc>>2]|0)+(b*192|0)|0,Kb|0,192)|0;c[Mb>>2]=b+1;if(!d){b=1;break}n=0;aa(18,Jb|0,Nc|0,Fd|0);Qc=n;n=0;if(Qc&1){b=82;break a}b=c[Mb>>2]|0;if((b|0)==(c[Ja>>2]|0)){n=0;Z(42,Sc|0);Qc=n;n=0;if(Qc&1){b=82;break a}b=c[Mb>>2]|0}ok((c[Sc>>2]|0)+(b*192|0)|0,Jb|0,192)|0;c[Mb>>2]=b+1;b=1}else b=d;while(0);if(!Fa){b=6;break}}if((b|0)==6){Qc=qc;c[Qc>>2]=1164159792;c[Qc+4>>2]=-1250477296;Qc=qc+8|0;c[Qc>>2]=-1448450988;c[Qc+4>>2]=880775624;Qc=qc+16|0;c[Qc>>2]=606996881;c[Qc+4>>2]=2046849319;Qc=qc+24|0;c[Qc>>2]=293737708;c[Qc+4>>2]=425114840;Qc=qc+32|0;c[Qc>>2]=-1599453353;c[Qc+4>>2]=1854185246;Qc=qc+40|0;c[Qc>>2]=-1980198591;c[Qc+4>>2]=-1440973971;Qc=qc+48|0;c[Qc>>2]=-85931462;c[Qc+4>>2]=-1226370099;Qc=qc+56|0;c[Qc>>2]=1317202883;c[Qc+4>>2]=644435899;c[pc>>2]=c[Fd>>2];c[pc+4>>2]=c[Fd+4>>2];c[pc+8>>2]=c[Fd+8>>2];c[pc+12>>2]=c[Fd+12>>2];c[pc+16>>2]=c[Fd+16>>2];c[pc+20>>2]=c[Fd+20>>2];c[pc+24>>2]=c[Fd+24>>2];c[pc+28>>2]=c[Fd+28>>2];Qc=Fd+32|0;c[vc>>2]=c[Qc>>2];c[vc+4>>2]=c[Qc+4>>2];c[vc+8>>2]=c[Qc+8>>2];c[vc+12>>2]=c[Qc+12>>2];c[vc+16>>2]=c[Qc+16>>2];c[vc+20>>2]=c[Qc+20>>2];c[vc+24>>2]=c[Qc+24>>2];c[vc+28>>2]=c[Qc+28>>2];Qc=uc;c[Qc>>2]=317583274;c[Qc+4>>2]=1757628553;Qc=uc+8|0;c[Qc>>2]=1923792719;c[Qc+4>>2]=-1928822936;Qc=uc+16|0;c[Qc>>2]=151523889;c[Qc+4>>2]=1373741639;Qc=uc+24|0;c[Qc>>2]=1193918714;c[Qc+4>>2]=576313009;n=0;X(1,vc|0,uc|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)};c[be>>2]=c[vc>>2];c[be+4>>2]=c[vc+4>>2];c[be+8>>2]=c[vc+8>>2];c[be+12>>2]=c[vc+12>>2];c[be+16>>2]=c[vc+16>>2];c[be+20>>2]=c[vc+20>>2];c[be+24>>2]=c[vc+24>>2];c[be+28>>2]=c[vc+28>>2];Qc=pc+32|0;c[Qc>>2]=c[be>>2];c[Qc+4>>2]=c[be+4>>2];c[Qc+8>>2]=c[be+8>>2];c[Qc+12>>2]=c[be+12>>2];c[Qc+16>>2]=c[be+16>>2];c[Qc+20>>2]=c[be+20>>2];c[Qc+24>>2]=c[be+24>>2];c[Qc+28>>2]=c[be+28>>2];n=0;aa(15,rc|0,qc|0,pc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}Qc=oc;c[Qc>>2]=691451433;c[Qc+4>>2]=-457450228;Qc=oc+8|0;c[Qc>>2]=-516703541;c[Qc+4>>2]=-1154420382;Qc=oc+16|0;c[Qc>>2]=-110865562;c[Qc+4>>2]=833212854;Qc=oc+24|0;c[Qc>>2]=-1526662947;c[Qc+4>>2]=624259262;Qc=oc+32|0;c[Qc>>2]=1610512327;c[Qc+4>>2]=-1579713308;Qc=oc+40|0;c[Qc>>2]=2015810011;c[Qc+4>>2]=128974097;Qc=oc+48|0;c[Qc>>2]=-1149313941;c[Qc+4>>2]=1830206759;Qc=oc+56|0;c[Qc>>2]=-2048983348;c[Qc+4>>2]=747053058;c[nc>>2]=c[Ia>>2];c[nc+4>>2]=c[Ia+4>>2];c[nc+8>>2]=c[Ia+8>>2];c[nc+12>>2]=c[Ia+12>>2];c[nc+16>>2]=c[Ia+16>>2];c[nc+20>>2]=c[Ia+20>>2];c[nc+24>>2]=c[Ia+24>>2];c[nc+28>>2]=c[Ia+28>>2];Qc=Fd+96|0;c[tc>>2]=c[Qc>>2];c[tc+4>>2]=c[Qc+4>>2];c[tc+8>>2]=c[Qc+8>>2];c[tc+12>>2]=c[Qc+12>>2];c[tc+16>>2]=c[Qc+16>>2];c[tc+20>>2]=c[Qc+20>>2];c[tc+24>>2]=c[Qc+24>>2];c[tc+28>>2]=c[Qc+28>>2];Qc=sc;c[Qc>>2]=317583274;c[Qc+4>>2]=1757628553;Qc=sc+8|0;c[Qc>>2]=1923792719;c[Qc+4>>2]=-1928822936;Qc=sc+16|0;c[Qc>>2]=151523889;c[Qc+4>>2]=1373741639;Qc=sc+24|0;c[Qc>>2]=1193918714;c[Qc+4>>2]=576313009;n=0;X(1,tc|0,sc|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)};c[be>>2]=c[tc>>2];c[be+4>>2]=c[tc+4>>2];c[be+8>>2]=c[tc+8>>2];c[be+12>>2]=c[tc+12>>2];c[be+16>>2]=c[tc+16>>2];c[be+20>>2]=c[tc+20>>2];c[be+24>>2]=c[tc+24>>2];c[be+28>>2]=c[tc+28>>2];Qc=nc+32|0;c[Qc>>2]=c[be>>2];c[Qc+4>>2]=c[be+4>>2];c[Qc+8>>2]=c[be+8>>2];c[Qc+12>>2]=c[be+12>>2];c[Qc+16>>2]=c[be+16>>2];c[Qc+20>>2]=c[be+20>>2];c[Qc+24>>2]=c[be+24>>2];c[Qc+28>>2]=c[be+28>>2];n=0;aa(15,wc|0,oc|0,nc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}Oc=Fc;Pc=rc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));b=Fc+64|0;Oc=b;Pc=wc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Qc=Cc;c[Qc>>2]=1164159792;c[Qc+4>>2]=-1250477296;Qc=Cc+8|0;c[Qc>>2]=-1448450988;c[Qc+4>>2]=880775624;Qc=Cc+16|0;c[Qc>>2]=606996881;c[Qc+4>>2]=2046849319;Qc=Cc+24|0;c[Qc>>2]=293737708;c[Qc+4>>2]=425114840;Qc=Cc+32|0;c[Qc>>2]=-1599453353;c[Qc+4>>2]=1854185246;Qc=Cc+40|0;c[Qc>>2]=-1980198591;c[Qc+4>>2]=-1440973971;Qc=Cc+48|0;c[Qc>>2]=-85931462;c[Qc+4>>2]=-1226370099;Qc=Cc+56|0;c[Qc>>2]=1317202883;c[Qc+4>>2]=644435899;c[Bc>>2]=c[Fc>>2];c[Bc+4>>2]=c[Fc+4>>2];c[Bc+8>>2]=c[Fc+8>>2];c[Bc+12>>2]=c[Fc+12>>2];c[Bc+16>>2]=c[Fc+16>>2];c[Bc+20>>2]=c[Fc+20>>2];c[Bc+24>>2]=c[Fc+24>>2];c[Bc+28>>2]=c[Fc+28>>2];Qc=Fc+32|0;c[td>>2]=c[Qc>>2];c[td+4>>2]=c[Qc+4>>2];c[td+8>>2]=c[Qc+8>>2];c[td+12>>2]=c[Qc+12>>2];c[td+16>>2]=c[Qc+16>>2];c[td+20>>2]=c[Qc+20>>2];c[td+24>>2]=c[Qc+24>>2];c[td+28>>2]=c[Qc+28>>2];Qc=sd;c[Qc>>2]=317583274;c[Qc+4>>2]=1757628553;Qc=sd+8|0;c[Qc>>2]=1923792719;c[Qc+4>>2]=-1928822936;Qc=sd+16|0;c[Qc>>2]=151523889;c[Qc+4>>2]=1373741639;Qc=sd+24|0;c[Qc>>2]=1193918714;c[Qc+4>>2]=576313009;n=0;X(1,td|0,sd|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)};c[be>>2]=c[td>>2];c[be+4>>2]=c[td+4>>2];c[be+8>>2]=c[td+8>>2];c[be+12>>2]=c[td+12>>2];c[be+16>>2]=c[td+16>>2];c[be+20>>2]=c[td+20>>2];c[be+24>>2]=c[td+24>>2];c[be+28>>2]=c[td+28>>2];Qc=Bc+32|0;c[Qc>>2]=c[be>>2];c[Qc+4>>2]=c[be+4>>2];c[Qc+8>>2]=c[be+8>>2];c[Qc+12>>2]=c[be+12>>2];c[Qc+16>>2]=c[be+16>>2];c[Qc+20>>2]=c[be+20>>2];c[Qc+24>>2]=c[be+24>>2];c[Qc+28>>2]=c[be+28>>2];n=0;aa(15,Dc|0,Cc|0,Bc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}Qc=yc;c[Qc>>2]=691451433;c[Qc+4>>2]=-457450228;Qc=yc+8|0;c[Qc>>2]=-516703541;c[Qc+4>>2]=-1154420382;Qc=yc+16|0;c[Qc>>2]=-110865562;c[Qc+4>>2]=833212854;Qc=yc+24|0;c[Qc>>2]=-1526662947;c[Qc+4>>2]=624259262;Qc=yc+32|0;c[Qc>>2]=1610512327;c[Qc+4>>2]=-1579713308;Qc=yc+40|0;c[Qc>>2]=2015810011;c[Qc+4>>2]=128974097;Qc=yc+48|0;c[Qc>>2]=-1149313941;c[Qc+4>>2]=1830206759;Qc=yc+56|0;c[Qc>>2]=-2048983348;c[Qc+4>>2]=747053058;c[xc>>2]=c[b>>2];c[xc+4>>2]=c[b+4>>2];c[xc+8>>2]=c[b+8>>2];c[xc+12>>2]=c[b+12>>2];c[xc+16>>2]=c[b+16>>2];c[xc+20>>2]=c[b+20>>2];c[xc+24>>2]=c[b+24>>2];c[xc+28>>2]=c[b+28>>2];Qc=Fc+96|0;c[qd>>2]=c[Qc>>2];c[qd+4>>2]=c[Qc+4>>2];c[qd+8>>2]=c[Qc+8>>2];c[qd+12>>2]=c[Qc+12>>2];c[qd+16>>2]=c[Qc+16>>2];c[qd+20>>2]=c[Qc+20>>2];c[qd+24>>2]=c[Qc+24>>2];c[qd+28>>2]=c[Qc+28>>2];Qc=fd;c[Qc>>2]=317583274;c[Qc+4>>2]=1757628553;Qc=fd+8|0;c[Qc>>2]=1923792719;c[Qc+4>>2]=-1928822936;Qc=fd+16|0;c[Qc>>2]=151523889;c[Qc+4>>2]=1373741639;Qc=fd+24|0;c[Qc>>2]=1193918714;c[Qc+4>>2]=576313009;n=0;X(1,qd|0,fd|0,136,-460954743,-2016278654);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)};c[be>>2]=c[qd>>2];c[be+4>>2]=c[qd+4>>2];c[be+8>>2]=c[qd+8>>2];c[be+12>>2]=c[qd+12>>2];c[be+16>>2]=c[qd+16>>2];c[be+20>>2]=c[qd+20>>2];c[be+24>>2]=c[qd+24>>2];c[be+28>>2]=c[qd+28>>2];Qc=xc+32|0;c[Qc>>2]=c[be>>2];c[Qc+4>>2]=c[be+4>>2];c[Qc+8>>2]=c[be+8>>2];c[Qc+12>>2]=c[be+12>>2];c[Qc+16>>2]=c[be+16>>2];c[Qc+20>>2]=c[be+20>>2];c[Qc+24>>2]=c[be+24>>2];c[Qc+28>>2]=c[be+28>>2];n=0;aa(15,Kc|0,yc|0,xc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}Oc=Ec;Pc=Dc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));b=Ec+64|0;Oc=b;Pc=Kc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Mc;Pc=Ec;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Oc=Ic;Pc=b;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));c[bd>>2]=c[b>>2];c[bd+4>>2]=c[b+4>>2];c[bd+8>>2]=c[b+8>>2];c[bd+12>>2]=c[b+12>>2];c[bd+16>>2]=c[b+16>>2];c[bd+20>>2]=c[b+20>>2];c[bd+24>>2]=c[b+24>>2];c[bd+28>>2]=c[b+28>>2];n=0;_(18,bd|0,136);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)};c[Jc>>2]=c[bd>>2];c[Jc+4>>2]=c[bd+4>>2];c[Jc+8>>2]=c[bd+8>>2];c[Jc+12>>2]=c[bd+12>>2];c[Jc+16>>2]=c[bd+16>>2];c[Jc+20>>2]=c[bd+20>>2];c[Jc+24>>2]=c[bd+24>>2];c[Jc+28>>2]=c[bd+28>>2];Qc=Ic+32|0;c[Xc>>2]=c[Qc>>2];c[Xc+4>>2]=c[Qc+4>>2];c[Xc+8>>2]=c[Qc+8>>2];c[Xc+12>>2]=c[Qc+12>>2];c[Xc+16>>2]=c[Qc+16>>2];c[Xc+20>>2]=c[Qc+20>>2];c[Xc+24>>2]=c[Qc+24>>2];c[Xc+28>>2]=c[Qc+28>>2];n=0;_(18,Xc|0,136);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)};c[be>>2]=c[Xc>>2];c[be+4>>2]=c[Xc+4>>2];c[be+8>>2]=c[Xc+8>>2];c[be+12>>2]=c[Xc+12>>2];c[be+16>>2]=c[Xc+16>>2];c[be+20>>2]=c[Xc+20>>2];c[be+24>>2]=c[Xc+24>>2];c[be+28>>2]=c[Xc+28>>2];Oc=Jc+32|0;c[Oc>>2]=c[be>>2];c[Oc+4>>2]=c[be+4>>2];c[Oc+8>>2]=c[be+8>>2];c[Oc+12>>2]=c[be+12>>2];c[Oc+16>>2]=c[be+16>>2];c[Oc+20>>2]=c[be+20>>2];c[Oc+24>>2]=c[be+24>>2];c[Oc+28>>2]=c[be+28>>2];Oc=Mc+64|0;Pc=Jc;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));n=0;aa(18,Lc|0,Nc|0,Fc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}b=c[Mb>>2]|0;do if((b|0)==(c[Ja>>2]|0)){n=0;Z(42,Sc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}else{b=c[Mb>>2]|0;break}}while(0);ok((c[Sc>>2]|0)+(b*192|0)|0,Lc|0,192)|0;c[Mb>>2]=b+1;n=0;aa(18,Rc|0,Nc|0,Mc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}b=c[Mb>>2]|0;do if((b|0)==(c[Ja>>2]|0)){n=0;Z(42,Sc|0);Qc=n;n=0;if(Qc&1){ce=na()|0;Gc(Sc);za(ce|0)}else{b=c[Mb>>2]|0;break}}while(0);ok((c[Sc>>2]|0)+(b*192|0)|0,Rc|0,192)|0;c[Mb>>2]=b+1;Oc=Bd;Pc=Fd;Qc=Oc+128|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));o=Bd+128|0;c[o>>2]=c[Sc>>2];c[o+4>>2]=c[Sc+4>>2];c[o+8>>2]=c[Sc+8>>2];k=ae;c[k>>2]=-980480611;c[k+4>>2]=-748862579;k=ae+8|0;c[k>>2]=-171504835;c[k+4>>2]=175696680;k=ae+16|0;c[k>>2]=2021213740;c[k+4>>2]=1718526831;k=ae+24|0;c[k>>2]=-1710760145;c[k+4>>2]=235567041;hk(ae+32|0,0,352)|0;k=rd;c[k>>2]=-1099547736;c[k+4>>2]=-1652985799;k=rd+8|0;c[k>>2]=1;c[k+4>>2]=0;k=rd+16|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;o=c[o>>2]|0;k=c[Bd+136>>2]|0;m=Gd+32|0;f=md+32|0;g=kd+32|0;h=gd+32|0;i=dd+32|0;d=256;b=0;e=0;b:while(1){do{if(!d){b=87;break b}d=d+-1|0;if(d>>>0>255){b=87;break b}Rc=rd+(d>>>6<<3)|0;Pc=c[Rc>>2]|0;Rc=c[Rc+4>>2]|0;Qc=nk(1,0,d&63|0)|0;Sc=b;b=(Pc&Qc|0)!=0|(Rc&y|0)!=0}while(!Sc);if(k>>>0<=e>>>0){b=103;break}j=e+1|0;n=0;_(19,od|0,ae|0);Sc=n;n=0;if(Sc&1){b=126;break}Oc=nd;Pc=o+(e*192|0)|0;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Sc=o+(e*192|0)+64|0;c[ld>>2]=c[m>>2];c[ld+4>>2]=c[m+4>>2];c[ld+8>>2]=c[m+8>>2];c[ld+12>>2]=c[m+12>>2];c[ld+16>>2]=c[m+16>>2];c[ld+20>>2]=c[m+20>>2];c[ld+24>>2]=c[m+24>>2];c[ld+28>>2]=c[m+28>>2];c[Tc>>2]=c[Sc>>2];c[Tc+4>>2]=c[Sc+4>>2];c[Tc+8>>2]=c[Sc+8>>2];c[Tc+12>>2]=c[Sc+12>>2];c[Tc+16>>2]=c[Sc+16>>2];c[Tc+20>>2]=c[Sc+20>>2];c[Tc+24>>2]=c[Sc+24>>2];c[Tc+28>>2]=c[Sc+28>>2];c[ud>>2]=c[m>>2];c[ud+4>>2]=c[m+4>>2];c[ud+8>>2]=c[m+8>>2];c[ud+12>>2]=c[m+12>>2];c[ud+16>>2]=c[m+16>>2];c[ud+20>>2]=c[m+20>>2];c[ud+24>>2]=c[m+24>>2];c[ud+28>>2]=c[m+28>>2];n=0;X(1,Tc|0,ud|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[md>>2]=c[Tc>>2];c[md+4>>2]=c[Tc+4>>2];c[md+8>>2]=c[Tc+8>>2];c[md+12>>2]=c[Tc+12>>2];c[md+16>>2]=c[Tc+16>>2];c[md+20>>2]=c[Tc+20>>2];c[md+24>>2]=c[Tc+24>>2];c[md+28>>2]=c[Tc+28>>2];Sc=o+(e*192|0)+96|0;c[td>>2]=c[Sc>>2];c[td+4>>2]=c[Sc+4>>2];c[td+8>>2]=c[Sc+8>>2];c[td+12>>2]=c[Sc+12>>2];c[td+16>>2]=c[Sc+16>>2];c[td+20>>2]=c[Sc+20>>2];c[td+24>>2]=c[Sc+24>>2];c[td+28>>2]=c[Sc+28>>2];c[sd>>2]=c[ld>>2];c[sd+4>>2]=c[ld+4>>2];c[sd+8>>2]=c[ld+8>>2];c[sd+12>>2]=c[ld+12>>2];c[sd+16>>2]=c[ld+16>>2];c[sd+20>>2]=c[ld+20>>2];c[sd+24>>2]=c[ld+24>>2];c[sd+28>>2]=c[ld+28>>2];n=0;X(1,td|0,sd|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[be>>2]=c[td>>2];c[be+4>>2]=c[td+4>>2];c[be+8>>2]=c[td+8>>2];c[be+12>>2]=c[td+12>>2];c[be+16>>2]=c[td+16>>2];c[be+20>>2]=c[td+20>>2];c[be+24>>2]=c[td+24>>2];c[be+28>>2]=c[td+28>>2];c[f>>2]=c[be>>2];c[f+4>>2]=c[be+4>>2];c[f+8>>2]=c[be+8>>2];c[f+12>>2]=c[be+12>>2];c[f+16>>2]=c[be+16>>2];c[f+20>>2]=c[be+20>>2];c[f+24>>2]=c[be+24>>2];c[f+28>>2]=c[be+28>>2];Sc=o+(e*192|0)+128|0;c[jd>>2]=c[Gd>>2];c[jd+4>>2]=c[Gd+4>>2];c[jd+8>>2]=c[Gd+8>>2];c[jd+12>>2]=c[Gd+12>>2];c[jd+16>>2]=c[Gd+16>>2];c[jd+20>>2]=c[Gd+20>>2];c[jd+24>>2]=c[Gd+24>>2];c[jd+28>>2]=c[Gd+28>>2];c[qd>>2]=c[Sc>>2];c[qd+4>>2]=c[Sc+4>>2];c[qd+8>>2]=c[Sc+8>>2];c[qd+12>>2]=c[Sc+12>>2];c[qd+16>>2]=c[Sc+16>>2];c[qd+20>>2]=c[Sc+20>>2];c[qd+24>>2]=c[Sc+24>>2];c[qd+28>>2]=c[Sc+28>>2];c[fd>>2]=c[Gd>>2];c[fd+4>>2]=c[Gd+4>>2];c[fd+8>>2]=c[Gd+8>>2];c[fd+12>>2]=c[Gd+12>>2];c[fd+16>>2]=c[Gd+16>>2];c[fd+20>>2]=c[Gd+20>>2];c[fd+24>>2]=c[Gd+24>>2];c[fd+28>>2]=c[Gd+28>>2];n=0;X(1,qd|0,fd|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[kd>>2]=c[qd>>2];c[kd+4>>2]=c[qd+4>>2];c[kd+8>>2]=c[qd+8>>2];c[kd+12>>2]=c[qd+12>>2];c[kd+16>>2]=c[qd+16>>2];c[kd+20>>2]=c[qd+20>>2];c[kd+24>>2]=c[qd+24>>2];c[kd+28>>2]=c[qd+28>>2];Sc=o+(e*192|0)+160|0;c[bd>>2]=c[Sc>>2];c[bd+4>>2]=c[Sc+4>>2];c[bd+8>>2]=c[Sc+8>>2];c[bd+12>>2]=c[Sc+12>>2];c[bd+16>>2]=c[Sc+16>>2];c[bd+20>>2]=c[Sc+20>>2];c[bd+24>>2]=c[Sc+24>>2];c[bd+28>>2]=c[Sc+28>>2];c[Xc>>2]=c[jd>>2];c[Xc+4>>2]=c[jd+4>>2];c[Xc+8>>2]=c[jd+8>>2];c[Xc+12>>2]=c[jd+12>>2];c[Xc+16>>2]=c[jd+16>>2];c[Xc+20>>2]=c[jd+20>>2];c[Xc+24>>2]=c[jd+24>>2];c[Xc+28>>2]=c[jd+28>>2];n=0;X(1,bd|0,Xc|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[be>>2]=c[bd>>2];c[be+4>>2]=c[bd+4>>2];c[be+8>>2]=c[bd+8>>2];c[be+12>>2]=c[bd+12>>2];c[be+16>>2]=c[bd+16>>2];c[be+20>>2]=c[bd+20>>2];c[be+24>>2]=c[bd+24>>2];c[be+28>>2]=c[bd+28>>2];c[g>>2]=c[be>>2];c[g+4>>2]=c[be+4>>2];c[g+8>>2]=c[be+8>>2];c[g+12>>2]=c[be+12>>2];c[g+16>>2]=c[be+16>>2];c[g+20>>2]=c[be+20>>2];c[g+24>>2]=c[be+24>>2];c[g+28>>2]=c[be+28>>2];n=0;X(2,pd|0,od|0,nd|0,md|0,kd|0);Sc=n;n=0;if(Sc&1){b=126;break}ok(ae|0,pd|0,384)|0;if(!b){b=1;e=j;continue}if(k>>>0<=j>>>0){b=112;break}e=e+2|0;Oc=hd;Pc=o+(j*192|0)|0;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));Sc=o+(j*192|0)+64|0;c[ed>>2]=c[m>>2];c[ed+4>>2]=c[m+4>>2];c[ed+8>>2]=c[m+8>>2];c[ed+12>>2]=c[m+12>>2];c[ed+16>>2]=c[m+16>>2];c[ed+20>>2]=c[m+20>>2];c[ed+24>>2]=c[m+24>>2];c[ed+28>>2]=c[m+28>>2];c[Yc>>2]=c[Sc>>2];c[Yc+4>>2]=c[Sc+4>>2];c[Yc+8>>2]=c[Sc+8>>2];c[Yc+12>>2]=c[Sc+12>>2];c[Yc+16>>2]=c[Sc+16>>2];c[Yc+20>>2]=c[Sc+20>>2];c[Yc+24>>2]=c[Sc+24>>2];c[Yc+28>>2]=c[Sc+28>>2];c[Wc>>2]=c[m>>2];c[Wc+4>>2]=c[m+4>>2];c[Wc+8>>2]=c[m+8>>2];c[Wc+12>>2]=c[m+12>>2];c[Wc+16>>2]=c[m+16>>2];c[Wc+20>>2]=c[m+20>>2];c[Wc+24>>2]=c[m+24>>2];c[Wc+28>>2]=c[m+28>>2];n=0;X(1,Yc|0,Wc|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[gd>>2]=c[Yc>>2];c[gd+4>>2]=c[Yc+4>>2];c[gd+8>>2]=c[Yc+8>>2];c[gd+12>>2]=c[Yc+12>>2];c[gd+16>>2]=c[Yc+16>>2];c[gd+20>>2]=c[Yc+20>>2];c[gd+24>>2]=c[Yc+24>>2];c[gd+28>>2]=c[Yc+28>>2];Sc=o+(j*192|0)+96|0;c[Vc>>2]=c[Sc>>2];c[Vc+4>>2]=c[Sc+4>>2];c[Vc+8>>2]=c[Sc+8>>2];c[Vc+12>>2]=c[Sc+12>>2];c[Vc+16>>2]=c[Sc+16>>2];c[Vc+20>>2]=c[Sc+20>>2];c[Vc+24>>2]=c[Sc+24>>2];c[Vc+28>>2]=c[Sc+28>>2];c[Uc>>2]=c[ed>>2];c[Uc+4>>2]=c[ed+4>>2];c[Uc+8>>2]=c[ed+8>>2];c[Uc+12>>2]=c[ed+12>>2];c[Uc+16>>2]=c[ed+16>>2];c[Uc+20>>2]=c[ed+20>>2];c[Uc+24>>2]=c[ed+24>>2];c[Uc+28>>2]=c[ed+28>>2];n=0;X(1,Vc|0,Uc|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[be>>2]=c[Vc>>2];c[be+4>>2]=c[Vc+4>>2];c[be+8>>2]=c[Vc+8>>2];c[be+12>>2]=c[Vc+12>>2];c[be+16>>2]=c[Vc+16>>2];c[be+20>>2]=c[Vc+20>>2];c[be+24>>2]=c[Vc+24>>2];c[be+28>>2]=c[Vc+28>>2];c[h>>2]=c[be>>2];c[h+4>>2]=c[be+4>>2];c[h+8>>2]=c[be+8>>2];c[h+12>>2]=c[be+12>>2];c[h+16>>2]=c[be+16>>2];c[h+20>>2]=c[be+20>>2];c[h+24>>2]=c[be+24>>2];c[h+28>>2]=c[be+28>>2];Sc=o+(j*192|0)+128|0;c[cd>>2]=c[Gd>>2];c[cd+4>>2]=c[Gd+4>>2];c[cd+8>>2]=c[Gd+8>>2];c[cd+12>>2]=c[Gd+12>>2];c[cd+16>>2]=c[Gd+16>>2];c[cd+20>>2]=c[Gd+20>>2];c[cd+24>>2]=c[Gd+24>>2];c[cd+28>>2]=c[Gd+28>>2];c[ad>>2]=c[Sc>>2];c[ad+4>>2]=c[Sc+4>>2];c[ad+8>>2]=c[Sc+8>>2];c[ad+12>>2]=c[Sc+12>>2];c[ad+16>>2]=c[Sc+16>>2];c[ad+20>>2]=c[Sc+20>>2];c[ad+24>>2]=c[Sc+24>>2];c[ad+28>>2]=c[Sc+28>>2];c[$c>>2]=c[Gd>>2];c[$c+4>>2]=c[Gd+4>>2];c[$c+8>>2]=c[Gd+8>>2];c[$c+12>>2]=c[Gd+12>>2];c[$c+16>>2]=c[Gd+16>>2];c[$c+20>>2]=c[Gd+20>>2];c[$c+24>>2]=c[Gd+24>>2];c[$c+28>>2]=c[Gd+28>>2];n=0;X(1,ad|0,$c|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[dd>>2]=c[ad>>2];c[dd+4>>2]=c[ad+4>>2];c[dd+8>>2]=c[ad+8>>2];c[dd+12>>2]=c[ad+12>>2];c[dd+16>>2]=c[ad+16>>2];c[dd+20>>2]=c[ad+20>>2];c[dd+24>>2]=c[ad+24>>2];c[dd+28>>2]=c[ad+28>>2];Sc=o+(j*192|0)+160|0;c[_c>>2]=c[Sc>>2];c[_c+4>>2]=c[Sc+4>>2];c[_c+8>>2]=c[Sc+8>>2];c[_c+12>>2]=c[Sc+12>>2];c[_c+16>>2]=c[Sc+16>>2];c[_c+20>>2]=c[Sc+20>>2];c[_c+24>>2]=c[Sc+24>>2];c[_c+28>>2]=c[Sc+28>>2];c[Zc>>2]=c[cd>>2];c[Zc+4>>2]=c[cd+4>>2];c[Zc+8>>2]=c[cd+8>>2];c[Zc+12>>2]=c[cd+12>>2];c[Zc+16>>2]=c[cd+16>>2];c[Zc+20>>2]=c[cd+20>>2];c[Zc+24>>2]=c[cd+24>>2];c[Zc+28>>2]=c[cd+28>>2];n=0;X(1,_c|0,Zc|0,136,-460954743,-2016278654);Sc=n;n=0;if(Sc&1){b=126;break};c[be>>2]=c[_c>>2];c[be+4>>2]=c[_c+4>>2];c[be+8>>2]=c[_c+8>>2];c[be+12>>2]=c[_c+12>>2];c[be+16>>2]=c[_c+16>>2];c[be+20>>2]=c[_c+20>>2];c[be+24>>2]=c[_c+24>>2];c[be+28>>2]=c[_c+28>>2];c[i>>2]=c[be>>2];c[i+4>>2]=c[be+4>>2];c[i+8>>2]=c[be+8>>2];c[i+12>>2]=c[be+12>>2];c[i+16>>2]=c[be+16>>2];c[i+20>>2]=c[be+20>>2];c[i+24>>2]=c[be+24>>2];c[i+28>>2]=c[be+28>>2];n=0;X(2,id|0,ae|0,hd|0,gd|0,dd|0);Sc=n;n=0;if(Sc&1){b=126;break}ok(ae|0,id|0,384)|0;b=1}if((b|0)==87){if(k>>>0<=e>>>0){n=0;aa(19,2056,e|0,k|0);n=0;ce=na()|0;Hc(Bd);za(ce|0)}b=e+1|0;Oc=_d;Pc=o+(e*192|0)|0;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));ud=o+(e*192|0)+64|0;c[Yd>>2]=c[m>>2];c[Yd+4>>2]=c[m+4>>2];c[Yd+8>>2]=c[m+8>>2];c[Yd+12>>2]=c[m+12>>2];c[Yd+16>>2]=c[m+16>>2];c[Yd+20>>2]=c[m+20>>2];c[Yd+24>>2]=c[m+24>>2];c[Yd+28>>2]=c[m+28>>2];c[Pd>>2]=c[ud>>2];c[Pd+4>>2]=c[ud+4>>2];c[Pd+8>>2]=c[ud+8>>2];c[Pd+12>>2]=c[ud+12>>2];c[Pd+16>>2]=c[ud+16>>2];c[Pd+20>>2]=c[ud+20>>2];c[Pd+24>>2]=c[ud+24>>2];c[Pd+28>>2]=c[ud+28>>2];c[Od>>2]=c[m>>2];c[Od+4>>2]=c[m+4>>2];c[Od+8>>2]=c[m+8>>2];c[Od+12>>2]=c[m+12>>2];c[Od+16>>2]=c[m+16>>2];c[Od+20>>2]=c[m+20>>2];c[Od+24>>2]=c[m+24>>2];c[Od+28>>2]=c[m+28>>2];n=0;X(1,Pd|0,Od|0,136,-460954743,-2016278654);Od=n;n=0;if(Od&1){ce=na()|0;Hc(Bd);za(ce|0)};c[Zd>>2]=c[Pd>>2];c[Zd+4>>2]=c[Pd+4>>2];c[Zd+8>>2]=c[Pd+8>>2];c[Zd+12>>2]=c[Pd+12>>2];c[Zd+16>>2]=c[Pd+16>>2];c[Zd+20>>2]=c[Pd+20>>2];c[Zd+24>>2]=c[Pd+24>>2];c[Zd+28>>2]=c[Pd+28>>2];Pd=o+(e*192|0)+96|0;c[Nd>>2]=c[Pd>>2];c[Nd+4>>2]=c[Pd+4>>2];c[Nd+8>>2]=c[Pd+8>>2];c[Nd+12>>2]=c[Pd+12>>2];c[Nd+16>>2]=c[Pd+16>>2];c[Nd+20>>2]=c[Pd+20>>2];c[Nd+24>>2]=c[Pd+24>>2];c[Nd+28>>2]=c[Pd+28>>2];c[Md>>2]=c[Yd>>2];c[Md+4>>2]=c[Yd+4>>2];c[Md+8>>2]=c[Yd+8>>2];c[Md+12>>2]=c[Yd+12>>2];c[Md+16>>2]=c[Yd+16>>2];c[Md+20>>2]=c[Yd+20>>2];c[Md+24>>2]=c[Yd+24>>2];c[Md+28>>2]=c[Yd+28>>2];n=0;X(1,Nd|0,Md|0,136,-460954743,-2016278654);Yd=n;n=0;if(Yd&1){ce=na()|0;Hc(Bd);za(ce|0)};c[be>>2]=c[Nd>>2];c[be+4>>2]=c[Nd+4>>2];c[be+8>>2]=c[Nd+8>>2];c[be+12>>2]=c[Nd+12>>2];c[be+16>>2]=c[Nd+16>>2];c[be+20>>2]=c[Nd+20>>2];c[be+24>>2]=c[Nd+24>>2];c[be+28>>2]=c[Nd+28>>2];Yd=Zd+32|0;c[Yd>>2]=c[be>>2];c[Yd+4>>2]=c[be+4>>2];c[Yd+8>>2]=c[be+8>>2];c[Yd+12>>2]=c[be+12>>2];c[Yd+16>>2]=c[be+16>>2];c[Yd+20>>2]=c[be+20>>2];c[Yd+24>>2]=c[be+24>>2];c[Yd+28>>2]=c[be+28>>2];Yd=o+(e*192|0)+128|0;c[Wd>>2]=c[Gd>>2];c[Wd+4>>2]=c[Gd+4>>2];c[Wd+8>>2]=c[Gd+8>>2];c[Wd+12>>2]=c[Gd+12>>2];c[Wd+16>>2]=c[Gd+16>>2];c[Wd+20>>2]=c[Gd+20>>2];c[Wd+24>>2]=c[Gd+24>>2];c[Wd+28>>2]=c[Gd+28>>2];c[Ld>>2]=c[Yd>>2];c[Ld+4>>2]=c[Yd+4>>2];c[Ld+8>>2]=c[Yd+8>>2];c[Ld+12>>2]=c[Yd+12>>2];c[Ld+16>>2]=c[Yd+16>>2];c[Ld+20>>2]=c[Yd+20>>2];c[Ld+24>>2]=c[Yd+24>>2];c[Ld+28>>2]=c[Yd+28>>2];c[Kd>>2]=c[Gd>>2];c[Kd+4>>2]=c[Gd+4>>2];c[Kd+8>>2]=c[Gd+8>>2];c[Kd+12>>2]=c[Gd+12>>2];c[Kd+16>>2]=c[Gd+16>>2];c[Kd+20>>2]=c[Gd+20>>2];c[Kd+24>>2]=c[Gd+24>>2];c[Kd+28>>2]=c[Gd+28>>2];n=0;X(1,Ld|0,Kd|0,136,-460954743,-2016278654);Yd=n;n=0;if(Yd&1){ce=na()|0;Hc(Bd);za(ce|0)};c[Xd>>2]=c[Ld>>2];c[Xd+4>>2]=c[Ld+4>>2];c[Xd+8>>2]=c[Ld+8>>2];c[Xd+12>>2]=c[Ld+12>>2];c[Xd+16>>2]=c[Ld+16>>2];c[Xd+20>>2]=c[Ld+20>>2];c[Xd+24>>2]=c[Ld+24>>2];c[Xd+28>>2]=c[Ld+28>>2];Yd=o+(e*192|0)+160|0;c[Jd>>2]=c[Yd>>2];c[Jd+4>>2]=c[Yd+4>>2];c[Jd+8>>2]=c[Yd+8>>2];c[Jd+12>>2]=c[Yd+12>>2];c[Jd+16>>2]=c[Yd+16>>2];c[Jd+20>>2]=c[Yd+20>>2];c[Jd+24>>2]=c[Yd+24>>2];c[Jd+28>>2]=c[Yd+28>>2];c[Id>>2]=c[Wd>>2];c[Id+4>>2]=c[Wd+4>>2];c[Id+8>>2]=c[Wd+8>>2];c[Id+12>>2]=c[Wd+12>>2];c[Id+16>>2]=c[Wd+16>>2];c[Id+20>>2]=c[Wd+20>>2];c[Id+24>>2]=c[Wd+24>>2];c[Id+28>>2]=c[Wd+28>>2];n=0;X(1,Jd|0,Id|0,136,-460954743,-2016278654);Yd=n;n=0;if(Yd&1){ce=na()|0;Hc(Bd);za(ce|0)};c[be>>2]=c[Jd>>2];c[be+4>>2]=c[Jd+4>>2];c[be+8>>2]=c[Jd+8>>2];c[be+12>>2]=c[Jd+12>>2];c[be+16>>2]=c[Jd+16>>2];c[be+20>>2]=c[Jd+20>>2];c[be+24>>2]=c[Jd+24>>2];c[be+28>>2]=c[Jd+28>>2];Yd=Xd+32|0;c[Yd>>2]=c[be>>2];c[Yd+4>>2]=c[be+4>>2];c[Yd+8>>2]=c[be+8>>2];c[Yd+12>>2]=c[be+12>>2];c[Yd+16>>2]=c[be+16>>2];c[Yd+20>>2]=c[be+20>>2];c[Yd+24>>2]=c[be+24>>2];c[Yd+28>>2]=c[be+28>>2];n=0;X(2,$d|0,ae|0,_d|0,Zd|0,Xd|0);_d=n;n=0;if(_d&1){ce=na()|0;Hc(Bd);za(ce|0)}ok(ae|0,$d|0,384)|0;if(k>>>0<=b>>>0){n=0;aa(19,2056,b|0,k|0);n=0;ce=na()|0;Hc(Bd);za(ce|0)}Oc=Ud;Pc=o+(b*192|0)|0;Qc=Oc+64|0;do{c[Oc>>2]=c[Pc>>2];Oc=Oc+4|0;Pc=Pc+4|0}while((Oc|0)<(Qc|0));$d=o+(b*192|0)+64|0;c[Sd>>2]=c[m>>2];c[Sd+4>>2]=c[m+4>>2];c[Sd+8>>2]=c[m+8>>2];c[Sd+12>>2]=c[m+12>>2];c[Sd+16>>2]=c[m+16>>2];c[Sd+20>>2]=c[m+20>>2];c[Sd+24>>2]=c[m+24>>2];c[Sd+28>>2]=c[m+28>>2];c[Hd>>2]=c[$d>>2];c[Hd+4>>2]=c[$d+4>>2];c[Hd+8>>2]=c[$d+8>>2];c[Hd+12>>2]=c[$d+12>>2];c[Hd+16>>2]=c[$d+16>>2];c[Hd+20>>2]=c[$d+20>>2];c[Hd+24>>2]=c[$d+24>>2];c[Hd+28>>2]=c[$d+28>>2];c[Cd>>2]=c[m>>2];c[Cd+4>>2]=c[m+4>>2];c[Cd+8>>2]=c[m+8>>2];c[Cd+12>>2]=c[m+12>>2];c[Cd+16>>2]=c[m+16>>2];c[Cd+20>>2]=c[m+20>>2];c[Cd+24>>2]=c[m+24>>2];c[Cd+28>>2]=c[m+28>>2];n=0;X(1,Hd|0,Cd|0,136,-460954743,-2016278654);$d=n;n=0;if($d&1){ce=na()|0;Hc(Bd);za(ce|0)};c[Td>>2]=c[Hd>>2];c[Td+4>>2]=c[Hd+4>>2];c[Td+8>>2]=c[Hd+8>>2];c[Td+12>>2]=c[Hd+12>>2];c[Td+16>>2]=c[Hd+16>>2];c[Td+20>>2]=c[Hd+20>>2];c[Td+24>>2]=c[Hd+24>>2];c[Td+28>>2]=c[Hd+28>>2];$d=o+(b*192|0)+96|0;c[Ad>>2]=c[$d>>2];c[Ad+4>>2]=c[$d+4>>2];c[Ad+8>>2]=c[$d+8>>2];c[Ad+12>>2]=c[$d+12>>2];c[Ad+16>>2]=c[$d+16>>2];c[Ad+20>>2]=c[$d+20>>2];c[Ad+24>>2]=c[$d+24>>2];c[Ad+28>>2]=c[$d+28>>2];c[zd>>2]=c[Sd>>2];c[zd+4>>2]=c[Sd+4>>2];c[zd+8>>2]=c[Sd+8>>2];c[zd+12>>2]=c[Sd+12>>2];c[zd+16>>2]=c[Sd+16>>2];c[zd+20>>2]=c[Sd+20>>2];c[zd+24>>2]=c[Sd+24>>2];c[zd+28>>2]=c[Sd+28>>2];n=0;X(1,Ad|0,zd|0,136,-460954743,-2016278654);$d=n;n=0;if($d&1){ce=na()|0;Hc(Bd);za(ce|0)};c[be>>2]=c[Ad>>2];c[be+4>>2]=c[Ad+4>>2];c[be+8>>2]=c[Ad+8>>2];c[be+12>>2]=c[Ad+12>>2];c[be+16>>2]=c[Ad+16>>2];c[be+20>>2]=c[Ad+20>>2];c[be+24>>2]=c[Ad+24>>2];c[be+28>>2]=c[Ad+28>>2];$d=Td+32|0;c[$d>>2]=c[be>>2];c[$d+4>>2]=c[be+4>>2];c[$d+8>>2]=c[be+8>>2];c[$d+12>>2]=c[be+12>>2];c[$d+16>>2]=c[be+16>>2];c[$d+20>>2]=c[be+20>>2];c[$d+24>>2]=c[be+24>>2];c[$d+28>>2]=c[be+28>>2];$d=o+(b*192|0)+128|0;c[Qd>>2]=c[Gd>>2];c[Qd+4>>2]=c[Gd+4>>2];c[Qd+8>>2]=c[Gd+8>>2];c[Qd+12>>2]=c[Gd+12>>2];c[Qd+16>>2]=c[Gd+16>>2];c[Qd+20>>2]=c[Gd+20>>2];c[Qd+24>>2]=c[Gd+24>>2];c[Qd+28>>2]=c[Gd+28>>2];c[yd>>2]=c[$d>>2];c[yd+4>>2]=c[$d+4>>2];c[yd+8>>2]=c[$d+8>>2];c[yd+12>>2]=c[$d+12>>2];c[yd+16>>2]=c[$d+16>>2];c[yd+20>>2]=c[$d+20>>2];c[yd+24>>2]=c[$d+24>>2];c[yd+28>>2]=c[$d+28>>2];c[xd>>2]=c[Gd>>2];c[xd+4>>2]=c[Gd+4>>2];c[xd+8>>2]=c[Gd+8>>2];c[xd+12>>2]=c[Gd+12>>2];c[xd+16>>2]=c[Gd+16>>2];c[xd+20>>2]=c[Gd+20>>2];c[xd+24>>2]=c[Gd+24>>2];c[xd+28>>2]=c[Gd+28>>2];n=0;X(1,yd|0,xd|0,136,-460954743,-2016278654);$d=n;n=0;if($d&1){ce=na()|0;Hc(Bd);za(ce|0)};c[Rd>>2]=c[yd>>2];c[Rd+4>>2]=c[yd+4>>2];c[Rd+8>>2]=c[yd+8>>2];c[Rd+12>>2]=c[yd+12>>2];c[Rd+16>>2]=c[yd+16>>2];c[Rd+20>>2]=c[yd+20>>2];c[Rd+24>>2]=c[yd+24>>2];c[Rd+28>>2]=c[yd+28>>2];$d=o+(b*192|0)+160|0;c[wd>>2]=c[$d>>2];c[wd+4>>2]=c[$d+4>>2];c[wd+8>>2]=c[$d+8>>2];c[wd+12>>2]=c[$d+12>>2];c[wd+16>>2]=c[$d+16>>2];c[wd+20>>2]=c[$d+20>>2];c[wd+24>>2]=c[$d+24>>2];c[wd+28>>2]=c[$d+28>>2];c[vd>>2]=c[Qd>>2];c[vd+4>>2]=c[Qd+4>>2];c[vd+8>>2]=c[Qd+8>>2];c[vd+12>>2]=c[Qd+12>>2];c[vd+16>>2]=c[Qd+16>>2];c[vd+20>>2]=c[Qd+20>>2];c[vd+24>>2]=c[Qd+24>>2];c[vd+28>>2]=c[Qd+28>>2];n=0;X(1,wd|0,vd|0,136,-460954743,-2016278654);$d=n;n=0;if($d&1){ce=na()|0;Hc(Bd);za(ce|0)};c[be>>2]=c[wd>>2];c[be+4>>2]=c[wd+4>>2];c[be+8>>2]=c[wd+8>>2];c[be+12>>2]=c[wd+12>>2];c[be+16>>2]=c[wd+16>>2];c[be+20>>2]=c[wd+20>>2];c[be+24>>2]=c[wd+24>>2];c[be+28>>2]=c[wd+28>>2];$d=Rd+32|0;c[$d>>2]=c[be>>2];c[$d+4>>2]=c[be+4>>2];c[$d+8>>2]=c[be+8>>2];c[$d+12>>2]=c[be+12>>2];c[$d+16>>2]=c[be+16>>2];c[$d+20>>2]=c[be+20>>2];c[$d+24>>2]=c[be+24>>2];c[$d+28>>2]=c[be+28>>2];n=0;X(2,Vd|0,ae|0,Ud|0,Td|0,Rd|0);be=n;n=0;if(be&1){ce=na()|0;Hc(Bd);za(ce|0)}ok(ae|0,Vd|0,384)|0;ok(Dd|0,ae|0,384)|0;n=0;_(20,Ed|0,Dd|0);be=n;n=0;if(be&1){ce=na()|0;Hc(Bd);za(ce|0)}be=Ed;if(!((c[be>>2]|0)==1&(c[be+4>>2]|0)==0)){n=0;_(21,6331,31);n=0;ce=na()|0;Hc(Bd);za(ce|0)}ok(a|0,Ed+8|0,384)|0;b=c[Bd+132>>2]|0;if(b|0)Zb(o,b*192|0,8);l=ce;return}else if((b|0)==103){n=0;aa(19,2056,e|0,k|0);n=0;ce=na()|0;Hc(Bd);za(ce|0)}else if((b|0)==112){n=0;aa(19,2056,j|0,k|0);n=0;ce=na()|0;Hc(Bd);za(ce|0)}else if((b|0)==126){ce=na()|0;Hc(Bd);za(ce|0)}}else if((b|0)==82){ce=na()|0;Gc(Sc);za(ce|0)}}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=l;l=l+1024|0;r=z+960|0;s=z+896|0;t=z+832|0;u=z+768|0;v=z+704|0;w=z+640|0;x=z+576|0;g=z+512|0;h=z+448|0;i=z+384|0;j=z+320|0;k=z+256|0;e=z+192|0;f=z+128|0;m=z+64|0;n=z;y=v;A=b;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));o=b+128|0;y=s;A=o;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=d;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(u,s,r);c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[s+16>>2]=c[v+16>>2];c[s+20>>2]=c[v+20>>2];c[s+24>>2]=c[v+24>>2];c[s+28>>2]=c[v+28>>2];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[r+16>>2]=c[u+16>>2];c[r+20>>2]=c[u+20>>2];c[r+24>>2]=c[u+24>>2];c[r+28>>2]=c[u+28>>2];Lc(s,r,136);c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[n+16>>2]=c[s+16>>2];c[n+20>>2]=c[s+20>>2];c[n+24>>2]=c[s+24>>2];c[n+28>>2]=c[s+28>>2];p=v+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[s+16>>2]=c[p+16>>2];c[s+20>>2]=c[p+20>>2];c[s+24>>2]=c[p+24>>2];c[s+28>>2]=c[p+28>>2];p=u+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];c[r+16>>2]=c[p+16>>2];c[r+20>>2]=c[p+20>>2];c[r+24>>2]=c[p+24>>2];c[r+28>>2]=c[p+28>>2];Lc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];p=n+32|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];c[p+16>>2]=c[t+16>>2];c[p+20>>2]=c[t+20>>2];c[p+24>>2]=c[t+24>>2];c[p+28>>2]=c[t+28>>2];p=b+64|0;y=v;A=p;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=s;A=o;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));q=d+64|0;y=r;A=q;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(u,s,r);c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[s+16>>2]=c[v+16>>2];c[s+20>>2]=c[v+20>>2];c[s+24>>2]=c[v+24>>2];c[s+28>>2]=c[v+28>>2];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[r+16>>2]=c[u+16>>2];c[r+20>>2]=c[u+20>>2];c[r+24>>2]=c[u+24>>2];c[r+28>>2]=c[u+28>>2];Lc(s,r,136);c[m>>2]=c[s>>2];c[m+4>>2]=c[s+4>>2];c[m+8>>2]=c[s+8>>2];c[m+12>>2]=c[s+12>>2];c[m+16>>2]=c[s+16>>2];c[m+20>>2]=c[s+20>>2];c[m+24>>2]=c[s+24>>2];c[m+28>>2]=c[s+28>>2];y=v+32|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[s+16>>2]=c[y+16>>2];c[s+20>>2]=c[y+20>>2];c[s+24>>2]=c[y+24>>2];c[s+28>>2]=c[y+28>>2];y=u+32|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Lc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];y=m+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];dd(f,n);dd(e,m);y=s;A=n;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=f;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(k,s,r);y=s;A=b;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=f;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(j,s,r);y=s;A=o;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=e;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(v,s,r);y=u;A=k;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[s+16>>2]=c[v+16>>2];c[s+20>>2]=c[v+20>>2];c[s+24>>2]=c[v+24>>2];c[s+28>>2]=c[v+28>>2];c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];c[r+16>>2]=c[k+16>>2];c[r+20>>2]=c[k+20>>2];c[r+24>>2]=c[k+24>>2];c[r+28>>2]=c[k+28>>2];Kc(s,r,136);c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];c[x+16>>2]=c[s+16>>2];c[x+20>>2]=c[s+20>>2];c[x+24>>2]=c[s+24>>2];c[x+28>>2]=c[s+28>>2];e=v+32|0;c[s>>2]=c[e>>2];c[s+4>>2]=c[e+4>>2];c[s+8>>2]=c[e+8>>2];c[s+12>>2]=c[e+12>>2];c[s+16>>2]=c[e+16>>2];c[s+20>>2]=c[e+20>>2];c[s+24>>2]=c[e+24>>2];c[s+28>>2]=c[e+28>>2];e=u+32|0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];c[r+16>>2]=c[e+16>>2];c[r+20>>2]=c[e+20>>2];c[r+24>>2]=c[e+24>>2];c[r+28>>2]=c[e+28>>2];Kc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];e=x+32|0;c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[e+16>>2]=c[t+16>>2];c[e+20>>2]=c[t+20>>2];c[e+24>>2]=c[t+24>>2];c[e+28>>2]=c[t+28>>2];y=v;A=j;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=u;A=j;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[s+16>>2]=c[v+16>>2];c[s+20>>2]=c[v+20>>2];c[s+24>>2]=c[v+24>>2];c[s+28>>2]=c[v+28>>2];c[r>>2]=c[j>>2];c[r+4>>2]=c[j+4>>2];c[r+8>>2]=c[j+8>>2];c[r+12>>2]=c[j+12>>2];c[r+16>>2]=c[j+16>>2];c[r+20>>2]=c[j+20>>2];c[r+24>>2]=c[j+24>>2];c[r+28>>2]=c[j+28>>2];Kc(s,r,136);c[w>>2]=c[s>>2];c[w+4>>2]=c[s+4>>2];c[w+8>>2]=c[s+8>>2];c[w+12>>2]=c[s+12>>2];c[w+16>>2]=c[s+16>>2];c[w+20>>2]=c[s+20>>2];c[w+24>>2]=c[s+24>>2];c[w+28>>2]=c[s+28>>2];y=v+32|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[s+16>>2]=c[y+16>>2];c[s+20>>2]=c[y+20>>2];c[s+24>>2]=c[y+24>>2];c[s+28>>2]=c[y+28>>2];y=u+32|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Kc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];y=w+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];c[s>>2]=c[x>>2];c[s+4>>2]=c[x+4>>2];c[s+8>>2]=c[x+8>>2];c[s+12>>2]=c[x+12>>2];c[s+16>>2]=c[x+16>>2];c[s+20>>2]=c[x+20>>2];c[s+24>>2]=c[x+24>>2];c[s+28>>2]=c[x+28>>2];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];c[r+16>>2]=c[w+16>>2];c[r+20>>2]=c[w+20>>2];c[r+24>>2]=c[w+24>>2];c[r+28>>2]=c[w+28>>2];Lc(s,r,136);c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[s>>2]=c[e>>2];c[s+4>>2]=c[e+4>>2];c[s+8>>2]=c[e+8>>2];c[s+12>>2]=c[e+12>>2];c[s+16>>2]=c[e+16>>2];c[s+20>>2]=c[e+20>>2];c[s+24>>2]=c[e+24>>2];c[s+28>>2]=c[e+28>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Lc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];y=i+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];y=s;A=n;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=i;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(t,s,r);y=b;A=t;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=x;A=m;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=v;A=j;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=u;A=i;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];c[s+16>>2]=c[j+16>>2];c[s+20>>2]=c[j+20>>2];c[s+24>>2]=c[j+24>>2];c[s+28>>2]=c[j+28>>2];c[r>>2]=c[i>>2];c[r+4>>2]=c[i+4>>2];c[r+8>>2]=c[i+8>>2];c[r+12>>2]=c[i+12>>2];c[r+16>>2]=c[i+16>>2];c[r+20>>2]=c[i+20>>2];c[r+24>>2]=c[i+24>>2];c[r+28>>2]=c[i+28>>2];Lc(s,r,136);c[w>>2]=c[s>>2];c[w+4>>2]=c[s+4>>2];c[w+8>>2]=c[s+8>>2];c[w+12>>2]=c[s+12>>2];c[w+16>>2]=c[s+16>>2];c[w+20>>2]=c[s+20>>2];c[w+24>>2]=c[s+24>>2];c[w+28>>2]=c[s+28>>2];y=v+32|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[s+16>>2]=c[y+16>>2];c[s+20>>2]=c[y+20>>2];c[s+24>>2]=c[y+24>>2];c[s+28>>2]=c[y+28>>2];y=u+32|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Lc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];y=w+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];cd(g,x,w);y=s;A=k;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=p;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(u,s,r);c[s>>2]=c[g>>2];c[s+4>>2]=c[g+4>>2];c[s+8>>2]=c[g+8>>2];c[s+12>>2]=c[g+12>>2];c[s+16>>2]=c[g+16>>2];c[s+20>>2]=c[g+20>>2];c[s+24>>2]=c[g+24>>2];c[s+28>>2]=c[g+28>>2];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[r+16>>2]=c[u+16>>2];c[r+20>>2]=c[u+20>>2];c[r+24>>2]=c[u+24>>2];c[r+28>>2]=c[u+28>>2];Lc(s,r,136);c[h>>2]=c[s>>2];c[h+4>>2]=c[s+4>>2];c[h+8>>2]=c[s+8>>2];c[h+12>>2]=c[s+12>>2];c[h+16>>2]=c[s+16>>2];c[h+20>>2]=c[s+20>>2];c[h+24>>2]=c[s+24>>2];c[h+28>>2]=c[s+28>>2];y=g+32|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[s+16>>2]=c[y+16>>2];c[s+20>>2]=c[y+20>>2];c[s+24>>2]=c[y+24>>2];c[s+28>>2]=c[y+28>>2];y=u+32|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Lc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];y=h+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];y=p;A=h;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=s;A=o;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=k;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(t,s,r);y=o;A=t;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=x;c[y>>2]=1091403767;c[y+4>>2]=-167360562;y=x+8|0;c[y>>2]=-753151983;c[y+4>>2]=792555341;y=x+16|0;c[y>>2]=960546513;c[y+4>>2]=692269950;y=x+24|0;c[y>>2]=-1478256553;c[y+4>>2]=496343272;y=x+32|0;c[y>>2]=-980480611;c[y+4>>2]=-748862579;y=x+40|0;c[y>>2]=-171504835;c[y+4>>2]=175696680;y=x+48|0;c[y>>2]=2021213740;c[y+4>>2]=1718526831;y=x+56|0;c[y>>2]=-1710760145;c[y+4>>2]=235567041;y=s;A=m;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=d;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(v,s,r);y=s;A=n;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=r;A=q;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));cd(u,s,r);c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[s+16>>2]=c[v+16>>2];c[s+20>>2]=c[v+20>>2];c[s+24>>2]=c[v+24>>2];c[s+28>>2]=c[v+28>>2];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[r+16>>2]=c[u+16>>2];c[r+20>>2]=c[u+20>>2];c[r+24>>2]=c[u+24>>2];c[r+28>>2]=c[u+28>>2];Lc(s,r,136);c[w>>2]=c[s>>2];c[w+4>>2]=c[s+4>>2];c[w+8>>2]=c[s+8>>2];c[w+12>>2]=c[s+12>>2];c[w+16>>2]=c[s+16>>2];c[w+20>>2]=c[s+20>>2];c[w+24>>2]=c[s+24>>2];c[w+28>>2]=c[s+28>>2];y=v+32|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[s+16>>2]=c[y+16>>2];c[s+20>>2]=c[y+20>>2];c[s+24>>2]=c[y+24>>2];c[s+28>>2]=c[y+28>>2];y=u+32|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Lc(s,r,136);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];c[t+20>>2]=c[s+20>>2];c[t+24>>2]=c[s+24>>2];c[t+28>>2]=c[s+28>>2];y=w+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];cd(g,x,w);y=s;A=m;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];c[r+16>>2]=c[m+16>>2];c[r+20>>2]=c[m+20>>2];c[r+24>>2]=c[m+24>>2];c[r+28>>2]=c[m+28>>2];Nc(r,136);c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[u+16>>2]=c[r+16>>2];c[u+20>>2]=c[r+20>>2];c[u+24>>2]=c[r+24>>2];c[u+28>>2]=c[r+28>>2];y=s+32|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[r+16>>2]=c[y+16>>2];c[r+20>>2]=c[y+20>>2];c[r+24>>2]=c[y+24>>2];c[r+28>>2]=c[y+28>>2];Nc(r,136);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[t+16>>2]=c[r+16>>2];c[t+20>>2]=c[r+20>>2];c[t+24>>2]=c[r+24>>2];c[t+28>>2]=c[r+28>>2];y=u+32|0;c[y>>2]=c[t>>2];c[y+4>>2]=c[t+4>>2];c[y+8>>2]=c[t+8>>2];c[y+12>>2]=c[t+12>>2];c[y+16>>2]=c[t+16>>2];c[y+20>>2]=c[t+20>>2];c[y+24>>2]=c[t+24>>2];c[y+28>>2]=c[t+28>>2];y=a;A=g;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=a+64|0;A=n;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));y=a+128|0;A=u;B=y+64|0;do{c[y>>2]=c[A>>2];y=y+4|0;A=A+4|0}while((y|0)<(B|0));l=z;return}function Gc(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b*192|0,8);return}function Hc(a){a=a|0;var b=0;b=c[a+132>>2]|0;if(!b)return;Zb(c[a+128>>2]|0,b*192|0,8);return}function Ic(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=4;while(1){if(!g){a=0;b=5;break}g=g+-1|0;d=a+(g<<3)|0;h=c[d>>2]|0;d=c[d+4>>2]|0;f=b+(g<<3)|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if(d>>>0>>0|(d|0)==(f|0)&h>>>0>>0){a=-1;b=5;break}if(d>>>0>f>>>0|(d|0)==(f|0)&h>>>0>e>>>0){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function Jc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((f|0)==32){g=d+24|0;g=ga(c[g>>2]|0,c[g+4>>2]|0)|0;f=y;h=e;i=h;a[i>>0]=g;a[i+1>>0]=g>>8;a[i+2>>0]=g>>16;a[i+3>>0]=g>>24;h=h+4|0;a[h>>0]=f;a[h+1>>0]=f>>8;a[h+2>>0]=f>>16;a[h+3>>0]=f>>24;h=d+16|0;h=ga(c[h>>2]|0,c[h+4>>2]|0)|0;f=y;i=e+8|0;g=i;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;i=i+4|0;a[i>>0]=f;a[i+1>>0]=f>>8;a[i+2>>0]=f>>16;a[i+3>>0]=f>>24;i=d+8|0;i=ga(c[i>>2]|0,c[i+4>>2]|0)|0;f=y;g=e+16|0;h=g;a[h>>0]=i;a[h+1>>0]=i>>8;a[h+2>>0]=i>>16;a[h+3>>0]=i>>24;g=g+4|0;a[g>>0]=f;a[g+1>>0]=f>>8;a[g+2>>0]=f>>16;a[g+3>>0]=f>>24;g=d;g=ga(c[g>>2]|0,c[g+4>>2]|0)|0;d=y;f=e+24|0;e=f;a[e>>0]=g;a[e+1>>0]=g>>8;a[e+2>>0]=g>>16;a[e+3>>0]=g>>24;f=f+4|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;c[b>>2]=0;return}else{c[b>>2]=1;c[b+4>>2]=32;c[b+8>>2]=f;return}}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;n=a;k=c[n>>2]|0;n=c[n+4>>2]|0;g=b;l=c[g>>2]|0;g=c[g+4>>2]|0;gk(l|0,0,k|0,0)|0;m=y;k=gk(l|0,g|0,k|0,n|0)|0;l=y;n=gk(g|0,0,n|0,0)|0;m=gk(n|0,y|0,m|0,0)|0;n=a;c[n>>2]=k;c[n+4>>2]=m;n=a+8|0;g=n;q=c[g+4>>2]|0;e=b+8|0;o=c[e>>2]|0;e=c[e+4>>2]|0;g=gk(y|0,0,c[g>>2]|0,0)|0;t=y;gk(g|0,t|0,o|0,0)|0;p=y;o=gk(g|0,t|0,o|0,e|0)|0;q=gk(e|0,0,q|0,0)|0;p=gk(q|0,y|0,p|0,0)|0;q=n;c[q>>2]=o;c[q+4>>2]=p;q=a+16|0;e=q;t=c[e+4>>2]|0;g=b+16|0;r=c[g>>2]|0;g=c[g+4>>2]|0;e=gk(y|0,0,c[e>>2]|0,0)|0;f=y;gk(e|0,f|0,r|0,0)|0;s=y;r=gk(e|0,f|0,r|0,g|0)|0;t=gk(g|0,0,t|0,0)|0;s=gk(t|0,y|0,s|0,0)|0;t=q;c[t>>2]=r;c[t+4>>2]=s;t=a+24|0;g=t;f=c[g>>2]|0;g=c[g+4>>2]|0;e=b+24|0;h=c[e>>2]|0;e=c[e+4>>2]|0;b=gk(y|0,0,f|0,0)|0;j=y;i=gk(b|0,j|0,h|0,e|0)|0;gk(0,e|0,f|0,g|0)|0;gk(h|0,y|0,b|0,j|0)|0;j=y;b=t;c[b>>2]=i;c[b+4>>2]=j;b=4;do{if(!b)break;b=b+-1|0;f=a+(b<<3)|0;e=c[f>>2]|0;f=c[f+4>>2]|0;h=d+(b<<3)|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if(f>>>0>>0|(f|0)==(h|0)&e>>>0>>0){u=6;break}}while(!(f>>>0>h>>>0|(f|0)==(h|0)&e>>>0>g>>>0));if((u|0)==6)return;f=d;u=c[f>>2]|0;f=c[f+4>>2]|0;h=fk(k|0,1,u|0,0)|0;g=y;u=fk(k|0,l|0,u|0,f|0)|0;m=fk(m|0,1,f|0,0)|0;l=(g>>>0<1|(g|0)==1&h>>>0<0)<<31>>31;m=gk(l|0,((l|0)<0)<<31>>31|0,m|0,y|0)|0;l=y;k=a;c[k>>2]=u;c[k+4>>2]=m;k=d+8|0;u=c[k+4>>2]|0;o=fk(o|0,1,c[k>>2]|0,0)|0;m=(l>>>0<1|(l|0)==1&m>>>0<0)<<31>>31;o=gk(m|0,((m|0)<0)<<31>>31|0,o|0,y|0)|0;m=y;p=fk(p|0,1,u|0,0)|0;m=(m>>>0<1|(m|0)==1&o>>>0<0)<<31>>31;p=gk(m|0,((m|0)<0)<<31>>31|0,p|0,y|0)|0;m=y;u=n;c[u>>2]=o;c[u+4>>2]=p;u=d+16|0;o=c[u+4>>2]|0;u=fk(r|0,1,c[u>>2]|0,0)|0;p=(m>>>0<1|(m|0)==1&p>>>0<0)<<31>>31;u=gk(p|0,((p|0)<0)<<31>>31|0,u|0,y|0)|0;p=y;s=fk(s|0,1,o|0,0)|0;p=(p>>>0<1|(p|0)==1&u>>>0<0)<<31>>31;s=gk(p|0,((p|0)<0)<<31>>31|0,s|0,y|0)|0;p=y;r=q;c[r>>2]=u;c[r+4>>2]=s;r=d+24|0;u=c[r+4>>2]|0;r=fk(i|0,1,c[r>>2]|0,0)|0;s=(p>>>0<1|(p|0)==1&s>>>0<0)<<31>>31;r=gk(s|0,((s|0)<0)<<31>>31|0,r|0,y|0)|0;s=y;u=fk(j|0,0,u|0,0)|0;s=(s>>>0<1|(s|0)==1&r>>>0<0)<<31>>31;s=gk(u|0,y|0,s|0,((s|0)<0)<<31>>31|0)|0;u=t;c[u>>2]=r;c[u+4>>2]=s;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=4;while(1){if(!i){i=6;break}i=i+-1|0;f=a+(i<<3)|0;e=c[f>>2]|0;f=c[f+4>>2]|0;h=b+(i<<3)|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if(f>>>0>>0|(f|0)==(h|0)&e>>>0>>0){i=5;break}if(f>>>0>h>>>0|(f|0)==(h|0)&e>>>0>g>>>0){i=6;break}}if((i|0)==5){g=a;h=c[g>>2]|0;g=c[g+4>>2]|0;m=d;e=c[m>>2]|0;m=c[m+4>>2]|0;gk(e|0,0,h|0,0)|0;j=y;h=gk(e|0,m|0,h|0,g|0)|0;g=gk(m|0,0,g|0,0)|0;j=gk(g|0,y|0,j|0,0)|0;g=a;c[g>>2]=h;c[g+4>>2]=j;g=a+8|0;j=g;h=c[j+4>>2]|0;m=d+8|0;e=c[m>>2]|0;m=c[m+4>>2]|0;j=gk(y|0,0,c[j>>2]|0,0)|0;l=y;gk(j|0,l|0,e|0,0)|0;i=y;e=gk(j|0,l|0,e|0,m|0)|0;h=gk(m|0,0,h|0,0)|0;i=gk(h|0,y|0,i|0,0)|0;h=g;c[h>>2]=e;c[h+4>>2]=i;h=a+16|0;i=h;e=c[i+4>>2]|0;m=d+16|0;l=c[m>>2]|0;m=c[m+4>>2]|0;i=gk(y|0,0,c[i>>2]|0,0)|0;j=y;gk(i|0,j|0,l|0,0)|0;k=y;l=gk(i|0,j|0,l|0,m|0)|0;e=gk(m|0,0,e|0,0)|0;k=gk(e|0,y|0,k|0,0)|0;e=h;c[e>>2]=l;c[e+4>>2]=k;e=a+24|0;k=e;l=c[k>>2]|0;k=c[k+4>>2]|0;m=d+24|0;j=c[m>>2]|0;m=c[m+4>>2]|0;i=gk(y|0,0,l|0,0)|0;f=y;d=gk(i|0,f|0,j|0,m|0)|0;gk(0,m|0,l|0,k|0)|0;gk(j|0,y|0,i|0,f|0)|0;f=e;c[f>>2]=d;c[f+4>>2]=y;f=a}else if((i|0)==6){f=a;g=a+8|0;h=a+16|0;e=a+24|0}d=f;a=c[d>>2]|0;d=c[d+4>>2]|0;k=b;m=c[k>>2]|0;k=c[k+4>>2]|0;j=fk(a|0,1,m|0,0)|0;l=y;m=fk(a|0,d|0,m|0,k|0)|0;k=fk(d|0,1,k|0,0)|0;j=(l>>>0<1|(l|0)==1&j>>>0<0)<<31>>31;k=gk(j|0,((j|0)<0)<<31>>31|0,k|0,y|0)|0;j=y;l=f;c[l>>2]=m;c[l+4>>2]=k;l=g;m=c[l+4>>2]|0;d=b+8|0;a=c[d+4>>2]|0;d=fk(c[l>>2]|0,1,c[d>>2]|0,0)|0;k=(j>>>0<1|(j|0)==1&k>>>0<0)<<31>>31;d=gk(k|0,((k|0)<0)<<31>>31|0,d|0,y|0)|0;k=y;a=fk(m|0,1,a|0,0)|0;k=(k>>>0<1|(k|0)==1&d>>>0<0)<<31>>31;a=gk(k|0,((k|0)<0)<<31>>31|0,a|0,y|0)|0;k=y;m=g;c[m>>2]=d;c[m+4>>2]=a;m=h;d=c[m+4>>2]|0;j=b+16|0;l=c[j+4>>2]|0;j=fk(c[m>>2]|0,1,c[j>>2]|0,0)|0;a=(k>>>0<1|(k|0)==1&a>>>0<0)<<31>>31;j=gk(a|0,((a|0)<0)<<31>>31|0,j|0,y|0)|0;a=y;l=fk(d|0,1,l|0,0)|0;a=(a>>>0<1|(a|0)==1&j>>>0<0)<<31>>31;l=gk(a|0,((a|0)<0)<<31>>31|0,l|0,y|0)|0;a=y;d=h;c[d>>2]=j;c[d+4>>2]=l;d=e;j=c[d+4>>2]|0;k=b+24|0;m=c[k+4>>2]|0;k=fk(c[d>>2]|0,1,c[k>>2]|0,0)|0;l=(a>>>0<1|(a|0)==1&l>>>0<0)<<31>>31;k=gk(l|0,((l|0)<0)<<31>>31|0,k|0,y|0)|0;l=y;m=fk(j|0,0,m|0,0)|0;l=(l>>>0<1|(l|0)==1&k>>>0<0)<<31>>31;l=gk(m|0,y|0,l|0,((l|0)<0)<<31>>31|0)|0;m=e;c[m>>2]=k;c[m+4>>2]=l;return}function Mc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0;x=l;l=l+64|0;v=x;g=v;h=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));t=a+32|0;u=b+32|0;o=a;p=0;do{r=o;o=o+8|0;g=v+(p<<3)|0;q=c[r>>2]|0;r=c[r+4>>2]|0;a:do if(!((q|0)==0&(r|0)==0)){s=g+(8-p<<3)|0;h=b;m=0;n=0;while(1){k=g;g=g+8|0;if((h|0)==(u|0))if((m|0)==0&(n|0)==0)break a;else{h=u;i=0;j=0}else{j=h;h=h+8|0;i=c[j>>2]|0;j=c[j+4>>2]|0}E=k;D=c[E>>2]|0;E=c[E+4>>2]|0;z=qk(i|0,0,q|0,0)|0;D=gk(z|0,y|0,D|0,0)|0;z=y;gk(D|0,z|0,m|0,0)|0;C=y;z=gk(D|0,z|0,m|0,n|0)|0;D=qk(i|0,0,r|0,0)|0;B=y;i=qk(j|0,0,q|0,0)|0;A=y;n=gk(E|0,0,n|0,0)|0;n=gk(n|0,y|0,D|0,0)|0;i=gk(n|0,y|0,i|0,0)|0;i=gk(i|0,y|0,C|0,0)|0;n=y;j=qk(j|0,0,r|0,0)|0;j=gk(B|0,0,j|0,y|0)|0;j=gk(j|0,y|0,A|0,0)|0;m=gk(j|0,y|0,n|0,0)|0;n=k;c[n>>2]=z;c[n+4>>2]=i;if((g|0)==(s|0))break;else n=y}}while(0);p=p+1|0}while((o|0)!=(t|0));o=d+32|0;p=0;do{g=v+(p<<3)|0;q=g;q=qk(c[q>>2]|0,c[q+4>>2]|0,e|0,f|0)|0;r=y;b:do if(!((q|0)==0&(r|0)==0)){s=g+(8-p<<3)|0;h=d;j=0;k=0;while(1){i=g;g=g+8|0;if((h|0)==(o|0))if((j|0)==0&(k|0)==0)break b;else{m=0;n=0;h=o}else{n=h;m=c[n>>2]|0;n=c[n+4>>2]|0;h=h+8|0}b=i;A=c[b>>2]|0;b=c[b+4>>2]|0;C=qk(m|0,0,q|0,0)|0;A=gk(C|0,y|0,A|0,0)|0;C=y;gk(A|0,C|0,j|0,0)|0;D=y;C=gk(A|0,C|0,j|0,k|0)|0;A=qk(m|0,0,r|0,0)|0;z=y;E=qk(n|0,0,q|0,0)|0;B=y;b=gk(b|0,0,k|0,0)|0;A=gk(b|0,y|0,A|0,0)|0;E=gk(A|0,y|0,E|0,0)|0;D=gk(E|0,y|0,D|0,0)|0;E=y;A=qk(n|0,0,r|0,0)|0;A=gk(z|0,0,A|0,y|0)|0;B=gk(A|0,y|0,B|0,0)|0;j=gk(B|0,y|0,E|0,0)|0;E=i;c[E>>2]=C;c[E+4>>2]=D;if((g|0)==(s|0))break;else k=y}}while(0);p=p+1|0}while(p>>>0<4);g=v+32|0;c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];c[a+16>>2]=c[g+16>>2];c[a+20>>2]=c[g+20>>2];c[a+24>>2]=c[g+24>>2];c[a+28>>2]=c[g+28>>2];g=4;do{if(!g)break;g=g+-1|0;i=a+(g<<3)|0;h=c[i>>2]|0;i=c[i+4>>2]|0;k=d+(g<<3)|0;j=c[k>>2]|0;k=c[k+4>>2]|0;if(i>>>0>>0|(i|0)==(k|0)&h>>>0>>0){w=22;break}}while(!(i>>>0>k>>>0|(i|0)==(k|0)&h>>>0>j>>>0));if((w|0)==22){l=x;return}A=a;B=c[A>>2]|0;A=c[A+4>>2]|0;C=d;D=c[C>>2]|0;C=c[C+4>>2]|0;w=fk(B|0,1,D|0,0)|0;E=y;D=fk(B|0,A|0,D|0,C|0)|0;C=fk(A|0,1,C|0,0)|0;w=(E>>>0<1|(E|0)==1&w>>>0<0)<<31>>31;C=gk(w|0,((w|0)<0)<<31>>31|0,C|0,y|0)|0;w=y;E=a;c[E>>2]=D;c[E+4>>2]=C;E=a+8|0;D=E;A=c[D+4>>2]|0;B=d+8|0;z=c[B+4>>2]|0;B=fk(c[D>>2]|0,1,c[B>>2]|0,0)|0;C=(w>>>0<1|(w|0)==1&C>>>0<0)<<31>>31;B=gk(C|0,((C|0)<0)<<31>>31|0,B|0,y|0)|0;C=y;z=fk(A|0,1,z|0,0)|0;C=(C>>>0<1|(C|0)==1&B>>>0<0)<<31>>31;z=gk(C|0,((C|0)<0)<<31>>31|0,z|0,y|0)|0;C=y;c[E>>2]=B;c[E+4>>2]=z;E=a+16|0;B=E;A=c[B+4>>2]|0;w=d+16|0;D=c[w+4>>2]|0;w=fk(c[B>>2]|0,1,c[w>>2]|0,0)|0;z=(C>>>0<1|(C|0)==1&z>>>0<0)<<31>>31;w=gk(z|0,((z|0)<0)<<31>>31|0,w|0,y|0)|0;z=y;D=fk(A|0,1,D|0,0)|0;z=(z>>>0<1|(z|0)==1&w>>>0<0)<<31>>31;D=gk(z|0,((z|0)<0)<<31>>31|0,D|0,y|0)|0;z=y;c[E>>2]=w;c[E+4>>2]=D;E=a+24|0;w=E;A=c[w+4>>2]|0;C=d+24|0;B=c[C+4>>2]|0;C=fk(c[w>>2]|0,1,c[C>>2]|0,0)|0;D=(z>>>0<1|(z|0)==1&D>>>0<0)<<31>>31;C=gk(D|0,((D|0)<0)<<31>>31|0,C|0,y|0)|0;D=y;B=fk(A|0,0,B|0,0)|0;D=(D>>>0<1|(D|0)==1&C>>>0<0)<<31>>31;D=gk(B|0,y|0,D|0,((D|0)<0)<<31>>31|0)|0;c[E>>2]=C;c[E+4>>2]=D;l=x;return}function Nc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;j=l;l=l+32|0;h=j;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;i=4;while(1){if(!i){d=5;break}i=i+-1|0;e=a+(i<<3)|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=h+(i<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if(e>>>0>>0|(e|0)==(g|0)&d>>>0>>0){d=5;break}if(e>>>0>g>>>0|(e|0)==(g|0)&d>>>0>f>>>0){d=6;break}}if((d|0)==5){l=j;return}else if((d|0)==6){k=b;d=c[k>>2]|0;k=c[k+4>>2]|0;e=b+8|0;f=c[e>>2]|0;e=c[e+4>>2]|0;h=b+16|0;p=c[h>>2]|0;h=c[h+4>>2]|0;q=b+24|0;r=c[q>>2]|0;q=c[q+4>>2]|0;n=a;o=c[n>>2]|0;n=c[n+4>>2]|0;i=fk(d|0,1,o|0,0)|0;m=y;o=fk(d|0,k|0,o|0,n|0)|0;n=fk(k|0,1,n|0,0)|0;i=(m>>>0<1|(m|0)==1&i>>>0<0)<<31>>31;n=gk(i|0,((i|0)<0)<<31>>31|0,n|0,y|0)|0;i=y;m=a+8|0;k=m;d=c[k+4>>2]|0;k=fk(f|0,1,c[k>>2]|0,0)|0;i=(i>>>0<1|(i|0)==1&n>>>0<0)<<31>>31;k=gk(i|0,((i|0)<0)<<31>>31|0,k|0,y|0)|0;i=y;d=fk(e|0,1,d|0,0)|0;i=(i>>>0<1|(i|0)==1&k>>>0<0)<<31>>31;d=gk(i|0,((i|0)<0)<<31>>31|0,d|0,y|0)|0;i=y;e=a+16|0;f=e;g=c[f+4>>2]|0;f=fk(p|0,1,c[f>>2]|0,0)|0;i=(i>>>0<1|(i|0)==1&d>>>0<0)<<31>>31;f=gk(i|0,((i|0)<0)<<31>>31|0,f|0,y|0)|0;i=y;g=fk(h|0,1,g|0,0)|0;i=(i>>>0<1|(i|0)==1&f>>>0<0)<<31>>31;g=gk(i|0,((i|0)<0)<<31>>31|0,g|0,y|0)|0;i=y;b=a+24|0;h=b;p=c[h+4>>2]|0;h=fk(r|0,1,c[h>>2]|0,0)|0;i=(i>>>0<1|(i|0)==1&g>>>0<0)<<31>>31;h=gk(i|0,((i|0)<0)<<31>>31|0,h|0,y|0)|0;i=y;p=fk(q|0,0,p|0,0)|0;i=(i>>>0<1|(i|0)==1&h>>>0<0)<<31>>31;i=gk(p|0,y|0,i|0,((i|0)<0)<<31>>31|0)|0;c[a>>2]=o;c[a+4>>2]=n;a=m;c[a>>2]=k;c[a+4>>2]=d;a=e;c[a>>2]=f;c[a+4>>2]=g;c[b>>2]=h;c[b+4>>2]=i;l=j;return}}\nfunction Oc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;Z=l;l=l+192|0;E=Z+160|0;N=Z+128|0;R=Z+96|0;W=Z+64|0;X=Z+32|0;Y=Z;c[Y>>2]=c[a>>2];c[Y+4>>2]=c[a+4>>2];c[Y+8>>2]=c[a+8>>2];c[Y+12>>2]=c[a+12>>2];c[Y+16>>2]=c[a+16>>2];c[Y+20>>2]=c[a+20>>2];c[Y+24>>2]=c[a+24>>2];c[Y+28>>2]=c[a+28>>2];c[X>>2]=c[b>>2];c[X+4>>2]=c[b+4>>2];c[X+8>>2]=c[b+8>>2];c[X+12>>2]=c[b+12>>2];c[X+16>>2]=c[b+16>>2];c[X+20>>2]=c[b+20>>2];c[X+24>>2]=c[b+24>>2];c[X+28>>2]=c[b+28>>2];C=W;c[C>>2]=1;c[C+4>>2]=0;C=W+8|0;c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;c[C+12>>2]=0;c[C+16>>2]=0;c[C+20>>2]=0;c[R>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;c[R+12>>2]=0;c[R+16>>2]=0;c[R+20>>2]=0;c[R+24>>2]=0;c[R+28>>2]=0;D=N;c[D>>2]=1;c[D+4>>2]=0;D=N+8|0;c[D>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;c[D+12>>2]=0;c[D+16>>2]=0;c[D+20>>2]=0;a:do if(Xj(Y,N,32)|0){F=E+8|0;G=X+24|0;H=X+16|0;I=X+8|0;J=Y+24|0;K=Y+16|0;L=Y+8|0;O=b;M=c[O>>2]|0;O=c[O+4>>2]|0;Q=b+8|0;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;S=W+16|0;U=b+16|0;T=c[U>>2]|0;U=c[U+4>>2]|0;V=W+24|0;x=b+24|0;w=c[x>>2]|0;x=c[x+4>>2]|0;z=R+8|0;A=R+16|0;B=R+24|0;do{v=E;c[v>>2]=1;c[v+4>>2]=0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;if(!(Xj(X,E,32)|0))break a;d=Y;b=c[d>>2]|0;d=c[d+4>>2]|0;if((b&1|0)==0&0==0){m=W;p=J;r=K;t=L;k=C;j=S;i=V;o=c[p>>2]|0;p=c[p+4>>2]|0;q=c[r>>2]|0;r=c[r+4>>2]|0;s=c[t>>2]|0;t=c[t+4>>2]|0;e=c[m>>2]|0;m=c[m+4>>2]|0;f=c[k>>2]|0;k=c[k+4>>2]|0;g=c[j>>2]|0;j=c[j+4>>2]|0;h=c[i>>2]|0;i=c[i+4>>2]|0;do{v=nk(o|0,p|0,63)|0;u=y;o=kk(o|0,p|0,1)|0;p=y;_=nk(q|0,r|0,63)|0;n=y;$=kk(q|0,r|0,1)|0;q=$|v;r=y|u;u=nk(s|0,t|0,63)|0;v=y;$=kk(s|0,t|0,1)|0;s=$|_;t=y|n;n=kk(b|0,d|0,1)|0;b=u|n;d=v|y;if(!((e&1|0)==0&0==0)){gk(M|0,0,e|0,0)|0;v=y;e=gk(M|0,O|0,e|0,m|0)|0;m=gk(O|0,0,m|0,0)|0;m=gk(m|0,y|0,v|0,0)|0;v=gk(y|0,0,f|0,0)|0;f=y;gk(v|0,f|0,P|0,0)|0;_=y;f=gk(v|0,f|0,P|0,Q|0)|0;k=gk(Q|0,0,k|0,0)|0;k=gk(k|0,y|0,_|0,0)|0;_=gk(y|0,0,g|0,0)|0;g=y;gk(_|0,g|0,T|0,0)|0;v=y;g=gk(_|0,g|0,T|0,U|0)|0;j=gk(U|0,0,j|0,0)|0;j=gk(j|0,y|0,v|0,0)|0;v=gk(y|0,0,h|0,0)|0;_=y;$=gk(v|0,_|0,w|0,x|0)|0;gk(0,x|0,h|0,i|0)|0;gk(w|0,y|0,v|0,_|0)|0;h=$;i=y}$=nk(h|0,i|0,63)|0;_=y;h=kk(h|0,i|0,1)|0;i=y;u=nk(g|0,j|0,63)|0;v=y;g=kk(g|0,j|0,1)|0;g=g|$;j=y|_;_=nk(f|0,k|0,63)|0;$=y;f=kk(f|0,k|0,1)|0;f=f|u;k=y|v;e=kk(e|0,m|0,1)|0;e=_|e;m=$|y}while((n&1|0)==0&0==0);v=J;c[v>>2]=o;c[v+4>>2]=p;v=K;c[v>>2]=q;c[v+4>>2]=r;v=L;c[v>>2]=s;c[v+4>>2]=t;v=Y;c[v>>2]=b;c[v+4>>2]=d;v=W;c[v>>2]=e;c[v+4>>2]=m;v=C;c[v>>2]=f;c[v+4>>2]=k;v=S;c[v>>2]=g;c[v+4>>2]=j;v=V;c[v>>2]=h;c[v+4>>2]=i;v=d}else v=d;i=X;d=c[i>>2]|0;i=c[i+4>>2]|0;if((d&1|0)==0&0==0){h=R;q=G;s=H;u=I;g=z;f=A;e=B;p=c[q>>2]|0;q=c[q+4>>2]|0;r=c[s>>2]|0;s=c[s+4>>2]|0;t=c[u>>2]|0;u=c[u+4>>2]|0;j=c[h>>2]|0;h=c[h+4>>2]|0;k=c[g>>2]|0;g=c[g+4>>2]|0;m=c[f>>2]|0;f=c[f+4>>2]|0;n=c[e>>2]|0;e=c[e+4>>2]|0;do{$=nk(p|0,q|0,63)|0;_=y;p=kk(p|0,q|0,1)|0;q=y;aa=nk(r|0,s|0,63)|0;o=y;ba=kk(r|0,s|0,1)|0;r=ba|$;s=y|_;_=nk(t|0,u|0,63)|0;$=y;ba=kk(t|0,u|0,1)|0;t=ba|aa;u=y|o;o=kk(d|0,i|0,1)|0;d=_|o;i=$|y;if(!((j&1|0)==0&0==0)){gk(M|0,0,j|0,0)|0;$=y;j=gk(M|0,O|0,j|0,h|0)|0;h=gk(O|0,0,h|0,0)|0;h=gk(h|0,y|0,$|0,0)|0;$=gk(y|0,0,k|0,0)|0;k=y;gk($|0,k|0,P|0,0)|0;aa=y;k=gk($|0,k|0,P|0,Q|0)|0;g=gk(Q|0,0,g|0,0)|0;g=gk(g|0,y|0,aa|0,0)|0;aa=gk(y|0,0,m|0,0)|0;m=y;gk(aa|0,m|0,T|0,0)|0;$=y;m=gk(aa|0,m|0,T|0,U|0)|0;f=gk(U|0,0,f|0,0)|0;f=gk(f|0,y|0,$|0,0)|0;$=gk(y|0,0,n|0,0)|0;aa=y;ba=gk($|0,aa|0,w|0,x|0)|0;gk(0,x|0,n|0,e|0)|0;gk(w|0,y|0,$|0,aa|0)|0;n=ba;e=y}ba=nk(n|0,e|0,63)|0;aa=y;n=kk(n|0,e|0,1)|0;e=y;_=nk(m|0,f|0,63)|0;$=y;m=kk(m|0,f|0,1)|0;m=m|ba;f=y|aa;aa=nk(k|0,g|0,63)|0;ba=y;k=kk(k|0,g|0,1)|0;k=k|_;g=y|$;j=kk(j|0,h|0,1)|0;j=aa|j;h=ba|y}while((o&1|0)==0&0==0);ba=G;c[ba>>2]=p;c[ba+4>>2]=q;ba=H;c[ba>>2]=r;c[ba+4>>2]=s;ba=I;c[ba>>2]=t;c[ba+4>>2]=u;ba=X;c[ba>>2]=d;c[ba+4>>2]=i;ba=R;c[ba>>2]=j;c[ba+4>>2]=h;j=z;c[j>>2]=k;c[j+4>>2]=g;j=A;c[j>>2]=m;c[j+4>>2]=f;j=B;c[j>>2]=n;c[j+4>>2]=e;j=d}else j=d;d=4;while(1){if(!d){k=21;break}d=d+-1|0;f=Y+(d<<3)|0;e=c[f>>2]|0;f=c[f+4>>2]|0;h=X+(d<<3)|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if(f>>>0>>0|(f|0)==(h|0)&e>>>0>>0){k=27;break}if(f>>>0>h>>>0|(f|0)==(h|0)&e>>>0>g>>>0){k=21;break}}if((k|0)==21){k=0;$=fk(b|0,1,j|0,0)|0;ba=y;b=fk(b|0,v|0,j|0,i|0)|0;aa=fk(v|0,1,i|0,0)|0;$=(ba>>>0<1|(ba|0)==1&$>>>0<0)<<31>>31;aa=gk($|0,(($|0)<0)<<31>>31|0,aa|0,y|0)|0;$=y;ba=Y;c[ba>>2]=b;c[ba+4>>2]=aa;ba=L;b=c[ba+4>>2]|0;v=I;_=c[v+4>>2]|0;v=fk(c[ba>>2]|0,1,c[v>>2]|0,0)|0;aa=($>>>0<1|($|0)==1&aa>>>0<0)<<31>>31;v=gk(aa|0,((aa|0)<0)<<31>>31|0,v|0,y|0)|0;aa=y;_=fk(b|0,1,_|0,0)|0;aa=(aa>>>0<1|(aa|0)==1&v>>>0<0)<<31>>31;_=gk(aa|0,((aa|0)<0)<<31>>31|0,_|0,y|0)|0;aa=y;b=L;c[b>>2]=v;c[b+4>>2]=_;b=K;v=c[b+4>>2]|0;$=H;ba=c[$+4>>2]|0;$=fk(c[b>>2]|0,1,c[$>>2]|0,0)|0;_=(aa>>>0<1|(aa|0)==1&_>>>0<0)<<31>>31;$=gk(_|0,((_|0)<0)<<31>>31|0,$|0,y|0)|0;_=y;ba=fk(v|0,1,ba|0,0)|0;_=(_>>>0<1|(_|0)==1&$>>>0<0)<<31>>31;ba=gk(_|0,((_|0)<0)<<31>>31|0,ba|0,y|0)|0;_=y;v=K;c[v>>2]=$;c[v+4>>2]=ba;v=J;$=c[v+4>>2]|0;aa=G;b=c[aa+4>>2]|0;aa=fk(c[v>>2]|0,1,c[aa>>2]|0,0)|0;ba=(_>>>0<1|(_|0)==1&ba>>>0<0)<<31>>31;aa=gk(ba|0,((ba|0)<0)<<31>>31|0,aa|0,y|0)|0;ba=y;b=fk($|0,0,b|0,0)|0;ba=(ba>>>0<1|(ba|0)==1&aa>>>0<0)<<31>>31;ba=gk(b|0,y|0,ba|0,((ba|0)<0)<<31>>31|0)|0;b=J;c[b>>2]=aa;c[b+4>>2]=ba;b=4;do{if(!b)break;b=b+-1|0;e=W+(b<<3)|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=R+(b<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if(e>>>0>>0|(e|0)==(g|0)&d>>>0>>0){k=25;break}}while(!(e>>>0>g>>>0|(e|0)==(g|0)&d>>>0>f>>>0));if((k|0)==25){v=W;$=c[v>>2]|0;v=c[v+4>>2]|0;gk(M|0,0,$|0,0)|0;ba=y;$=gk(M|0,O|0,$|0,v|0)|0;v=gk(O|0,0,v|0,0)|0;ba=gk(v|0,y|0,ba|0,0)|0;v=W;c[v>>2]=$;c[v+4>>2]=ba;v=C;ba=c[v+4>>2]|0;v=gk(y|0,0,c[v>>2]|0,0)|0;$=y;gk(v|0,$|0,P|0,0)|0;_=y;$=gk(v|0,$|0,P|0,Q|0)|0;ba=gk(Q|0,0,ba|0,0)|0;_=gk(ba|0,y|0,_|0,0)|0;ba=C;c[ba>>2]=$;c[ba+4>>2]=_;ba=S;_=c[ba+4>>2]|0;ba=gk(y|0,0,c[ba>>2]|0,0)|0;$=y;gk(ba|0,$|0,T|0,0)|0;v=y;$=gk(ba|0,$|0,T|0,U|0)|0;_=gk(U|0,0,_|0,0)|0;v=gk(_|0,y|0,v|0,0)|0;_=S;c[_>>2]=$;c[_+4>>2]=v;_=V;v=c[_>>2]|0;_=c[_+4>>2]|0;$=gk(y|0,0,v|0,0)|0;ba=y;aa=gk($|0,ba|0,w|0,x|0)|0;gk(0,x|0,v|0,_|0)|0;gk(w|0,y|0,$|0,ba|0)|0;ba=V;c[ba>>2]=aa;c[ba+4>>2]=y}g=W;b=c[g>>2]|0;g=c[g+4>>2]|0;h=R;d=c[h>>2]|0;h=c[h+4>>2]|0;j=fk(b|0,1,d|0,0)|0;i=y;d=fk(b|0,g|0,d|0,h|0)|0;b=W;e=W;f=R}else if((k|0)==27){k=0;$=fk(j|0,1,b|0,0)|0;ba=y;b=fk(j|0,i|0,b|0,v|0)|0;aa=fk(i|0,1,v|0,0)|0;$=(ba>>>0<1|(ba|0)==1&$>>>0<0)<<31>>31;aa=gk($|0,(($|0)<0)<<31>>31|0,aa|0,y|0)|0;$=y;ba=X;c[ba>>2]=b;c[ba+4>>2]=aa;ba=I;b=c[ba+4>>2]|0;v=L;_=c[v+4>>2]|0;v=fk(c[ba>>2]|0,1,c[v>>2]|0,0)|0;aa=($>>>0<1|($|0)==1&aa>>>0<0)<<31>>31;v=gk(aa|0,((aa|0)<0)<<31>>31|0,v|0,y|0)|0;aa=y;_=fk(b|0,1,_|0,0)|0;aa=(aa>>>0<1|(aa|0)==1&v>>>0<0)<<31>>31;_=gk(aa|0,((aa|0)<0)<<31>>31|0,_|0,y|0)|0;aa=y;b=I;c[b>>2]=v;c[b+4>>2]=_;b=H;v=c[b+4>>2]|0;$=K;ba=c[$+4>>2]|0;$=fk(c[b>>2]|0,1,c[$>>2]|0,0)|0;_=(aa>>>0<1|(aa|0)==1&_>>>0<0)<<31>>31;$=gk(_|0,((_|0)<0)<<31>>31|0,$|0,y|0)|0;_=y;ba=fk(v|0,1,ba|0,0)|0;_=(_>>>0<1|(_|0)==1&$>>>0<0)<<31>>31;ba=gk(_|0,((_|0)<0)<<31>>31|0,ba|0,y|0)|0;_=y;v=H;c[v>>2]=$;c[v+4>>2]=ba;v=G;$=c[v+4>>2]|0;aa=J;b=c[aa+4>>2]|0;aa=fk(c[v>>2]|0,1,c[aa>>2]|0,0)|0;ba=(_>>>0<1|(_|0)==1&ba>>>0<0)<<31>>31;aa=gk(ba|0,((ba|0)<0)<<31>>31|0,aa|0,y|0)|0;ba=y;b=fk($|0,0,b|0,0)|0;ba=(ba>>>0<1|(ba|0)==1&aa>>>0<0)<<31>>31;ba=gk(b|0,y|0,ba|0,((ba|0)<0)<<31>>31|0)|0;b=G;c[b>>2]=aa;c[b+4>>2]=ba;b=4;do{if(!b)break;b=b+-1|0;e=R+(b<<3)|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=W+(b<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if(e>>>0>>0|(e|0)==(g|0)&d>>>0>>0){k=31;break}}while(!(e>>>0>g>>>0|(e|0)==(g|0)&d>>>0>f>>>0));if((k|0)==31){v=R;$=c[v>>2]|0;v=c[v+4>>2]|0;gk(M|0,0,$|0,0)|0;ba=y;$=gk(M|0,O|0,$|0,v|0)|0;v=gk(O|0,0,v|0,0)|0;ba=gk(v|0,y|0,ba|0,0)|0;v=R;c[v>>2]=$;c[v+4>>2]=ba;v=z;ba=c[v+4>>2]|0;v=gk(y|0,0,c[v>>2]|0,0)|0;$=y;gk(v|0,$|0,P|0,0)|0;_=y;$=gk(v|0,$|0,P|0,Q|0)|0;ba=gk(Q|0,0,ba|0,0)|0;_=gk(ba|0,y|0,_|0,0)|0;ba=z;c[ba>>2]=$;c[ba+4>>2]=_;ba=A;_=c[ba+4>>2]|0;ba=gk(y|0,0,c[ba>>2]|0,0)|0;$=y;gk(ba|0,$|0,T|0,0)|0;v=y;$=gk(ba|0,$|0,T|0,U|0)|0;_=gk(U|0,0,_|0,0)|0;v=gk(_|0,y|0,v|0,0)|0;_=A;c[_>>2]=$;c[_+4>>2]=v;_=B;v=c[_>>2]|0;_=c[_+4>>2]|0;$=gk(y|0,0,v|0,0)|0;ba=y;aa=gk($|0,ba|0,w|0,x|0)|0;gk(0,x|0,v|0,_|0)|0;gk(w|0,y|0,$|0,ba|0)|0;ba=B;c[ba>>2]=aa;c[ba+4>>2]=y}g=R;b=c[g>>2]|0;g=c[g+4>>2]|0;h=W;d=c[h>>2]|0;h=c[h+4>>2]|0;j=fk(b|0,1,d|0,0)|0;i=y;d=fk(b|0,g|0,d|0,h|0)|0;b=R;e=R;f=W}_=fk(g|0,1,h|0,0)|0;t=(i>>>0<1|(i|0)==1&j>>>0<0)<<31>>31;_=gk(t|0,((t|0)<0)<<31>>31|0,_|0,y|0)|0;t=y;ba=b;c[ba>>2]=d;c[ba+4>>2]=_;ba=e+8|0;aa=ba;v=c[aa+4>>2]|0;$=f+8|0;u=c[$+4>>2]|0;$=fk(c[aa>>2]|0,1,c[$>>2]|0,0)|0;_=(t>>>0<1|(t|0)==1&_>>>0<0)<<31>>31;_=gk($|0,y|0,_|0,((_|0)<0)<<31>>31|0)|0;$=y;u=fk(v|0,1,u|0,0)|0;$=($>>>0<1|($|0)==1&_>>>0<0)<<31>>31;u=gk($|0,(($|0)<0)<<31>>31|0,u|0,y|0)|0;$=y;c[ba>>2]=_;c[ba+4>>2]=u;ba=e+16|0;_=ba;v=c[_+4>>2]|0;t=f+16|0;aa=c[t+4>>2]|0;t=fk(c[_>>2]|0,1,c[t>>2]|0,0)|0;u=($>>>0<1|($|0)==1&u>>>0<0)<<31>>31;t=gk(u|0,((u|0)<0)<<31>>31|0,t|0,y|0)|0;u=y;aa=fk(v|0,1,aa|0,0)|0;u=(u>>>0<1|(u|0)==1&t>>>0<0)<<31>>31;aa=gk(u|0,((u|0)<0)<<31>>31|0,aa|0,y|0)|0;u=y;c[ba>>2]=t;c[ba+4>>2]=aa;ba=e+24|0;t=ba;v=c[t+4>>2]|0;$=f+24|0;_=c[$+4>>2]|0;$=fk(c[t>>2]|0,1,c[$>>2]|0,0)|0;aa=(u>>>0<1|(u|0)==1&aa>>>0<0)<<31>>31;$=gk(aa|0,((aa|0)<0)<<31>>31|0,$|0,y|0)|0;aa=y;_=fk(v|0,0,_|0,0)|0;aa=(aa>>>0<1|(aa|0)==1&$>>>0<0)<<31>>31;aa=gk(_|0,y|0,aa|0,((aa|0)<0)<<31>>31|0)|0;c[ba>>2]=$;c[ba+4>>2]=aa;ba=N;c[ba>>2]=1;c[ba+4>>2]=0;c[D>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;c[D+12>>2]=0;c[D+16>>2]=0;c[D+20>>2]=0}while((Xj(Y,N,32)|0)!=0)}while(0);ba=E;c[ba>>2]=1;c[ba+4>>2]=0;ba=E+8|0;c[ba>>2]=0;c[ba+4>>2]=0;c[ba+8>>2]=0;c[ba+12>>2]=0;c[ba+16>>2]=0;c[ba+20>>2]=0;if(!(Xj(Y,E,32)|0)){c[a>>2]=c[W>>2];c[a+4>>2]=c[W+4>>2];c[a+8>>2]=c[W+8>>2];c[a+12>>2]=c[W+12>>2];c[a+16>>2]=c[W+16>>2];c[a+20>>2]=c[W+20>>2];c[a+24>>2]=c[W+24>>2];c[a+28>>2]=c[W+28>>2];l=Z;return}else{c[a>>2]=c[R>>2];c[a+4>>2]=c[R+4>>2];c[a+8>>2]=c[R+8>>2];c[a+12>>2]=c[R+12>>2];c[a+16>>2]=c[R+16>>2];c[a+20>>2]=c[R+20>>2];c[a+24>>2]=c[R+24>>2];c[a+28>>2]=c[R+28>>2];l=Z;return}}function Pc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a;i=c[f>>2]|0;f=c[f+4>>2]|0;j=b;d=c[j>>2]|0;j=c[j+4>>2]|0;g=fk(i|0,1,d|0,0)|0;e=y;d=fk(i|0,f|0,d|0,j|0)|0;j=fk(f|0,1,j|0,0)|0;g=(e>>>0<1|(e|0)==1&g>>>0<0)<<31>>31;j=gk(g|0,((g|0)<0)<<31>>31|0,j|0,y|0)|0;g=y;e=a;c[e>>2]=d;c[e+4>>2]=j;e=a+8|0;d=e;f=c[d+4>>2]|0;i=b+8|0;h=c[i+4>>2]|0;i=fk(c[d>>2]|0,1,c[i>>2]|0,0)|0;j=fk(i|0,y|0,(g>>>0<1|(g|0)==1&j>>>0<0)&1|0,0)|0;g=y;h=fk(f|0,1,h|0,0)|0;g=(g>>>0<1|(g|0)==1&j>>>0<0)<<31>>31;h=gk(g|0,((g|0)<0)<<31>>31|0,h|0,y|0)|0;g=y;c[e>>2]=j;c[e+4>>2]=h;e=a+16|0;j=e;f=c[j+4>>2]|0;i=b+16|0;d=c[i+4>>2]|0;i=fk(c[j>>2]|0,1,c[i>>2]|0,0)|0;h=fk(i|0,y|0,(g>>>0<1|(g|0)==1&h>>>0<0)&1|0,0)|0;g=y;d=fk(f|0,1,d|0,0)|0;g=(g>>>0<1|(g|0)==1&h>>>0<0)<<31>>31;d=gk(g|0,((g|0)<0)<<31>>31|0,d|0,y|0)|0;g=y;c[e>>2]=h;c[e+4>>2]=d;e=a+24|0;h=e;f=c[h+4>>2]|0;b=b+24|0;a=c[b+4>>2]|0;b=fk(c[h>>2]|0,1,c[b>>2]|0,0)|0;d=fk(b|0,y|0,(g>>>0<1|(g|0)==1&d>>>0<0)&1|0,0)|0;b=y;a=fk(f|0,0,a|0,0)|0;b=(b>>>0<1|(b|0)==1&d>>>0<0)<<31>>31;a=gk(b|0,((b|0)<0)<<31>>31|0,a|0,y|0)|0;b=e;c[b>>2]=d;c[b+4>>2]=a;return}function Qc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=4;while(1){if(!g){a=0;b=5;break}g=g+-1|0;d=a+(g<<3)|0;h=c[d>>2]|0;d=c[d+4>>2]|0;f=b+(g<<3)|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if(d>>>0>>0|(d|0)==(f|0)&h>>>0>>0){a=1;b=5;break}if(d>>>0>f>>>0|(d|0)==(f|0)&h>>>0>e>>>0){a=0;b=5;break}}if((b|0)==5)return a|0;return 0}function Rc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+10896|0;q=L+10504|0;B=L+10120|0;F=L+10056|0;G=L+9992|0;H=L+9800|0;I=L+9608|0;J=L+9224|0;K=L+8840|0;f=L+8456|0;g=L+8064|0;h=L+7680|0;i=L+7296|0;j=L+6912|0;k=L+6528|0;m=L+6144|0;n=L+5760|0;o=L+5376|0;p=L+4992|0;r=L+4608|0;s=L+4224|0;t=L+3840|0;u=L+3456|0;v=L+3072|0;w=L+2688|0;x=L+2304|0;y=L+1920|0;z=L+1536|0;A=L+1152|0;C=L+768|0;D=L+384|0;E=L;ok(q|0,b|0,384)|0;Sc(g,q);e=g;if((c[e>>2]|0)==1&(c[e+4>>2]|0)==0){ok(f|0,b|0,192)|0;ok(q|0,b+192|0,192)|0;bd(B,q);ok(f+192|0,B|0,192)|0;ok(B|0,f|0,384)|0;ok(q|0,g+8|0,384)|0;Tc(K,B,q);Zc(J,K,2);Zc(H,K+192|0,2);b=B;d=H;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=16391154;c[b+4>>2]=-896696315;b=q+8|0;c[b>>2]=1756600169;c[b+4>>2]=-255470060;b=q+16|0;c[b>>2]=-1391639528;c[b+4>>2]=236982897;b=q+24|0;c[b>>2]=-1160227098;c[b+4>>2]=69799781;b=q+32|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;cd(I,B,q);b=B;d=H+64|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=16391154;c[b+4>>2]=-896696315;b=q+8|0;c[b>>2]=1756600169;c[b+4>>2]=-255470060;b=q+16|0;c[b>>2]=-1391639528;c[b+4>>2]=236982897;b=q+24|0;c[b>>2]=-1160227098;c[b+4>>2]=69799781;b=q+32|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;cd(G,B,q);b=B;d=H+128|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=16391154;c[b+4>>2]=-896696315;b=q+8|0;c[b>>2]=1756600169;c[b+4>>2]=-255470060;b=q+16|0;c[b>>2]=-1391639528;c[b+4>>2]=236982897;b=q+24|0;c[b>>2]=-1160227098;c[b+4>>2]=69799781;b=q+32|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;cd(F,B,q);b=I+64|0;d=G;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=I+128|0;d=F;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));ok(J+192|0,I|0,192)|0;ok(B|0,J|0,384)|0;ok(q|0,K|0,384)|0;Tc(E,B,q);ok(D|0,E|0,384)|0;ok(A|0,E|0,384)|0;Uc(z,A);Vc(y,z);Vc(x,y);ok(B|0,x|0,384)|0;ok(q|0,y|0,384)|0;Tc(w,B,q);Uc(v,w);Vc(u,v);Uc(t,u);ok(s|0,w|0,192)|0;ok(q|0,w+192|0,192)|0;bd(B,q);ok(s+192|0,B|0,192)|0;ok(r|0,t|0,192)|0;ok(q|0,t+192|0,192)|0;bd(B,q);ok(r+192|0,B|0,192)|0;ok(B|0,r|0,384)|0;ok(q|0,v|0,384)|0;Tc(p,B,q);ok(B|0,p|0,384)|0;ok(q|0,s|0,384)|0;Tc(o,B,q);ok(B|0,o|0,384)|0;ok(q|0,y|0,384)|0;Tc(n,B,q);ok(B|0,o|0,384)|0;ok(q|0,v|0,384)|0;Tc(m,B,q);ok(B|0,A|0,384)|0;ok(q|0,m|0,384)|0;Tc(k,B,q);Zc(j,n,1);Zc(H,n+192|0,1);b=B;d=H;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=856967431;c[b+4>>2]=-1348753770;b=q+8|0;c[b>>2]=-2018527350;c[b+4>>2]=-898949773;b=q+16|0;c[b>>2]=-259383161;c[b+4>>2]=297659742;b=q+24|0;c[b>>2]=438254204;c[b+4>>2]=49499509;b=q+32|0;c[b>>2]=1279864178;c[b+4>>2]=-1574785501;b=q+40|0;c[b>>2]=1448993115;c[b+4>>2]=-804322652;b=q+48|0;c[b>>2]=1407174950;c[b+4>>2]=-600837214;b=q+56|0;c[b>>2]=-1282828975;c[b+4>>2]=279402262;cd(I,B,q);b=B;d=H+64|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=856967431;c[b+4>>2]=-1348753770;b=q+8|0;c[b>>2]=-2018527350;c[b+4>>2]=-898949773;b=q+16|0;c[b>>2]=-259383161;c[b+4>>2]=297659742;b=q+24|0;c[b>>2]=438254204;c[b+4>>2]=49499509;b=q+32|0;c[b>>2]=1279864178;c[b+4>>2]=-1574785501;b=q+40|0;c[b>>2]=1448993115;c[b+4>>2]=-804322652;b=q+48|0;c[b>>2]=1407174950;c[b+4>>2]=-600837214;b=q+56|0;c[b>>2]=-1282828975;c[b+4>>2]=279402262;cd(G,B,q);b=B;d=H+128|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=856967431;c[b+4>>2]=-1348753770;b=q+8|0;c[b>>2]=-2018527350;c[b+4>>2]=-898949773;b=q+16|0;c[b>>2]=-259383161;c[b+4>>2]=297659742;b=q+24|0;c[b>>2]=438254204;c[b+4>>2]=49499509;b=q+32|0;c[b>>2]=1279864178;c[b+4>>2]=-1574785501;b=q+40|0;c[b>>2]=1448993115;c[b+4>>2]=-804322652;b=q+48|0;c[b>>2]=1407174950;c[b+4>>2]=-600837214;b=q+56|0;c[b>>2]=-1282828975;c[b+4>>2]=279402262;cd(F,B,q);b=I+64|0;d=G;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=I+128|0;d=F;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));ok(j+192|0,I|0,192)|0;ok(B|0,j|0,384)|0;ok(q|0,k|0,384)|0;Tc(i,B,q);Zc(h,o,2);Zc(H,o+192|0,2);b=B;d=H;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=16391154;c[b+4>>2]=-896696315;b=q+8|0;c[b>>2]=1756600169;c[b+4>>2]=-255470060;b=q+16|0;c[b>>2]=-1391639528;c[b+4>>2]=236982897;b=q+24|0;c[b>>2]=-1160227098;c[b+4>>2]=69799781;b=q+32|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;cd(I,B,q);b=B;d=H+64|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=16391154;c[b+4>>2]=-896696315;b=q+8|0;c[b>>2]=1756600169;c[b+4>>2]=-255470060;b=q+16|0;c[b>>2]=-1391639528;c[b+4>>2]=236982897;b=q+24|0;c[b>>2]=-1160227098;c[b+4>>2]=69799781;b=q+32|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;cd(G,B,q);b=B;d=H+128|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=16391154;c[b+4>>2]=-896696315;b=q+8|0;c[b>>2]=1756600169;c[b+4>>2]=-255470060;b=q+16|0;c[b>>2]=-1391639528;c[b+4>>2]=236982897;b=q+24|0;c[b>>2]=-1160227098;c[b+4>>2]=69799781;b=q+32|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;cd(F,B,q);b=I+64|0;d=G;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=I+128|0;d=F;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));ok(h+192|0,I|0,192)|0;ok(B|0,h|0,384)|0;ok(q|0,i|0,384)|0;Tc(g,B,q);ok(f|0,A|0,192)|0;ok(q|0,A+192|0,192)|0;bd(B,q);ok(f+192|0,B|0,192)|0;ok(B|0,f|0,384)|0;ok(q|0,n|0,384)|0;Tc(K,B,q);Zc(J,K,3);Zc(H,K+192|0,3);b=B;d=H;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=1313266045;c[b+4>>2]=911414808;b=q+8|0;c[b>>2]=-724996705;c[b+4>>2]=183964318;b=q+16|0;c[b>>2]=-904918603;c[b+4>>2]=1704830767;b=q+24|0;c[b>>2]=-2086531805;c[b+4>>2]=135359881;b=q+32|0;c[b>>2]=-1013180103;c[b+4>>2]=-1310766345;b=q+40|0;c[b>>2]=-1972125825;c[b+4>>2]=1033831047;b=q+48|0;c[b>>2]=-1934685472;c[b+4>>2]=-1692262254;b=q+56|0;c[b>>2]=-269462362;c[b+4>>2]=644367637;cd(I,B,q);b=B;d=H+64|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=1313266045;c[b+4>>2]=911414808;b=q+8|0;c[b>>2]=-724996705;c[b+4>>2]=183964318;b=q+16|0;c[b>>2]=-904918603;c[b+4>>2]=1704830767;b=q+24|0;c[b>>2]=-2086531805;c[b+4>>2]=135359881;b=q+32|0;c[b>>2]=-1013180103;c[b+4>>2]=-1310766345;b=q+40|0;c[b>>2]=-1972125825;c[b+4>>2]=1033831047;b=q+48|0;c[b>>2]=-1934685472;c[b+4>>2]=-1692262254;b=q+56|0;c[b>>2]=-269462362;c[b+4>>2]=644367637;cd(G,B,q);b=B;d=H+128|0;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=q;c[b>>2]=1313266045;c[b+4>>2]=911414808;b=q+8|0;c[b>>2]=-724996705;c[b+4>>2]=183964318;b=q+16|0;c[b>>2]=-904918603;c[b+4>>2]=1704830767;b=q+24|0;c[b>>2]=-2086531805;c[b+4>>2]=135359881;b=q+32|0;c[b>>2]=-1013180103;c[b+4>>2]=-1310766345;b=q+40|0;c[b>>2]=-1972125825;c[b+4>>2]=1033831047;b=q+48|0;c[b>>2]=-1934685472;c[b+4>>2]=-1692262254;b=q+56|0;c[b>>2]=-269462362;c[b+4>>2]=644367637;cd(F,B,q);b=I+64|0;d=G;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=I+128|0;d=F;e=b+64|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));ok(J+192|0,I|0,192)|0;ok(B|0,J|0,384)|0;ok(q|0,g|0,384)|0;Tc(C,B,q);ok(a+8|0,C|0,384)|0;H=1;J=0;K=a;I=K;c[I>>2]=H;K=K+4|0;c[K>>2]=J;l=L;return}else{H=0;J=0;K=a;I=K;c[I>>2]=H;K=K+4|0;c[K>>2]=J;l=L;return}}function Sc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=l;l=l+2128|0;g=r+1928|0;h=r+1736|0;i=r+1544|0;j=r+1352|0;m=r+968|0;n=r+776|0;o=r+584|0;p=r+392|0;d=r+200|0;e=r;_c(p,b);f=b+192|0;_c(o,f);q=h;s=o+128|0;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));k=g;c[k>>2]=1091403767;c[k+4>>2]=-167360562;k=g+8|0;c[k>>2]=-753151983;c[k+4>>2]=792555341;k=g+16|0;c[k>>2]=960546513;c[k+4>>2]=692269950;k=g+24|0;c[k>>2]=-1478256553;c[k+4>>2]=496343272;k=g+32|0;c[k>>2]=-980480611;c[k+4>>2]=-748862579;k=g+40|0;c[k>>2]=-171504835;c[k+4>>2]=175696680;k=g+48|0;c[k>>2]=2021213740;c[k+4>>2]=1718526831;k=g+56|0;c[k>>2]=-1710760145;c[k+4>>2]=235567041;cd(m,h,g);k=o+64|0;q=m+64|0;s=o;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));q=m+128|0;s=k;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));q=h;s=p;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));q=g;s=m;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));fd(d,h,g);q=h;s=p+64|0;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));q=g;s=o;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));fd(j,h,g);q=h;s=p+128|0;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));q=g;s=k;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));fd(i,h,g);q=d+64|0;s=j;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));q=d+128|0;s=i;t=q+64|0;do{c[q>>2]=c[s>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));$c(e,d);t=e;if(!((c[t>>2]|0)==1&(c[t+4>>2]|0)==0)){p=0;s=0;t=a;q=t;c[q>>2]=p;t=t+4|0;c[t>>2]=s;l=r;return}p=e+8|0;ok(n|0,p|0,192)|0;ok(h|0,b|0,192)|0;ok(g|0,p|0,192)|0;ad(m,h,g);ok(h|0,f|0,192)|0;ok(g|0,n|0,192)|0;ad(i,h,g);bd(j,i);ok(m+192|0,j|0,192)|0;ok(a+8|0,m|0,384)|0;p=1;s=0;t=a;q=t;c[q>>2]=p;t=t+4|0;c[t>>2]=s;l=r;return}function Tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;x=l;l=l+2432|0;r=x+2240|0;s=x+2048|0;t=x+1984|0;u=x+1920|0;v=x+1728|0;k=x+1536|0;m=x+1344|0;e=x+1152|0;f=x+960|0;n=x+768|0;o=x+576|0;p=x+384|0;q=x+192|0;g=x;ok(s|0,b|0,192)|0;ok(r|0,d|0,192)|0;ad(g,s,r);h=b+192|0;ok(s|0,h|0,192)|0;i=d+192|0;ok(r|0,i|0,192)|0;ad(q,s,r);w=s;y=q+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));j=r;c[j>>2]=1091403767;c[j+4>>2]=-167360562;j=r+8|0;c[j>>2]=-753151983;c[j+4>>2]=792555341;j=r+16|0;c[j>>2]=960546513;c[j+4>>2]=692269950;j=r+24|0;c[j>>2]=-1478256553;c[j+4>>2]=496343272;j=r+32|0;c[j>>2]=-980480611;c[j+4>>2]=-748862579;j=r+40|0;c[j>>2]=-171504835;c[j+4>>2]=175696680;j=r+48|0;c[j>>2]=2021213740;c[j+4>>2]=1718526831;j=r+56|0;c[j>>2]=-1710760145;c[j+4>>2]=235567041;cd(k,s,r);j=q+64|0;w=k+64|0;y=q;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=k+128|0;y=j;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));ok(v|0,g|0,192)|0;w=s;y=k;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=g;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(p,s,r);w=s;y=q;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(u,s,r);w=s;y=j;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(t,s,r);w=p+64|0;y=u;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=p+128|0;y=t;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));ok(k|0,b|0,192)|0;ok(v|0,h|0,192)|0;w=s;y=b;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=h;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(e,s,r);w=s;y=k+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(u,s,r);w=s;y=k+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(t,s,r);w=e+64|0;y=u;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=e+128|0;y=t;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));ok(k|0,d|0,192)|0;ok(v|0,i|0,192)|0;w=s;y=d;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=i;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(m,s,r);w=s;y=k+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(u,s,r);w=s;y=k+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));gd(t,s,r);w=m+64|0;y=u;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=m+128|0;y=t;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));ad(f,e,m);ok(v|0,g|0,192)|0;w=s;y=f;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=g;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));fd(n,s,r);w=s;y=f+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));fd(u,s,r);w=s;y=f+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));fd(t,s,r);b=n+64|0;w=b;y=u;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));e=n+128|0;w=e;y=t;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));ok(v|0,q|0,192)|0;w=s;y=n;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=q;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));fd(o,s,r);w=s;y=b;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+64|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));fd(u,s,r);w=s;y=e;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=r;y=v+128|0;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));fd(t,s,r);w=o+64|0;y=u;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));w=o+128|0;y=t;z=w+64|0;do{c[w>>2]=c[y>>2];w=w+4|0;y=y+4|0}while((w|0)<(z|0));ok(a|0,p|0,192)|0;ok(a+192|0,o|0,192)|0;l=x;return}function Uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+1568|0;f=k+1184|0;g=k+800|0;h=k+768|0;i=k+384|0;j=k;d=i;c[d>>2]=-980480611;c[d+4>>2]=-748862579;d=i+8|0;c[d>>2]=-171504835;c[d+4>>2]=175696680;d=i+16|0;c[d>>2]=2021213740;c[d+4>>2]=1718526831;d=i+24|0;c[d>>2]=-1710760145;c[d+4>>2]=235567041;hk(i+32|0,0,160)|0;hk(i+192|0,0,192)|0;d=h;c[d>>2]=1248397809;c[d+4>>2]=1156158132;d=h+8|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;d=256;while(1){if(!d)break;d=d+-1|0;if(d>>>0>255)break;m=h+(d>>>6<<3)|0;o=c[m>>2]|0;m=c[m+4>>2]|0;n=nk(1,0,d&63|0)|0;if(!((o&n|0)==0&(m&y|0)==0)){e=8;break}}a:do if((e|0)==8)b:while(1){ok(g|0,b|0,384)|0;ok(f|0,i|0,384)|0;Tc(i,g,f);while(1){if(!d)break a;d=d+-1|0;if(d>>>0>255)break a;o=h+(d>>>6<<3)|0;m=c[o>>2]|0;o=c[o+4>>2]|0;n=nk(1,0,d&63|0)|0;o=(m&n|0)==0&(o&y|0)==0;Vc(f,i);ok(i|0,f|0,384)|0;if(!o){e=8;continue b}}}while(0);ok(j|0,i|0,384)|0;ok(a|0,j|0,192)|0;ok(f|0,j+192|0,192)|0;bd(g,f);ok(a+192|0,g|0,192)|0;l=k;return}function Vc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+2560|0;o=R+2368|0;z=R+2176|0;I=R+2112|0;L=R+2048|0;M=R+1984|0;N=R+1920|0;O=R+1856|0;P=R+1792|0;d=R+1728|0;e=R+1664|0;f=R+1600|0;g=R+1536|0;h=R+1472|0;i=R+1408|0;j=R+1344|0;k=R+1280|0;m=R+1216|0;n=R+1152|0;p=R+1088|0;q=R+1024|0;r=R+960|0;s=R+896|0;t=R+832|0;u=R+768|0;v=R+704|0;w=R+640|0;x=R+576|0;y=R+512|0;A=R+448|0;B=R+384|0;C=R+320|0;D=R+256|0;E=R+192|0;F=R+128|0;G=R+64|0;H=R;Q=H;S=b;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=G;S=b+64|0;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=F;S=b+128|0;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));J=b+192|0;Q=E;S=J;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));K=b+256|0;Q=D;S=K;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=C;S=b+320|0;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=z;S=b;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=K;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));cd(B,z,o);Q=z;S=H;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=D;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(M,z,o);Q=z;S=D;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(I,z,o);Q=o;S=H;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(L,I,o);cd(N,M,L);Q=o;S=B;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));fd(O,N,o);Q=z;S=B;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(I,z,o);fd(A,O,I);Q=z;S=B;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=B;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(y,z,o);Q=z;S=J;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=F;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));cd(x,z,o);Q=z;S=E;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=F;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(M,z,o);Q=z;S=F;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(I,z,o);Q=o;S=E;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(L,I,o);cd(N,M,L);Q=o;S=x;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));fd(O,N,o);Q=z;S=x;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(I,z,o);fd(w,O,I);Q=z;S=x;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=x;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(v,z,o);Q=z;S=G;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=C;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));cd(u,z,o);Q=z;S=G;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=C;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(M,z,o);Q=z;S=C;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(I,z,o);Q=o;S=G;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(L,I,o);cd(N,M,L);Q=o;S=u;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));fd(O,N,o);Q=z;S=u;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(I,z,o);fd(t,O,I);Q=z;S=u;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=u;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(s,z,o);Q=z;S=A;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=H;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));fd(r,z,o);Q=z;S=r;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=r;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(q,z,o);Q=z;S=q;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=A;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(p,z,o);Q=z;S=y;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=D;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(n,z,o);Q=z;S=n;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=n;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(m,z,o);Q=z;S=m;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=y;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(k,z,o);Q=z;S=s;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;c[Q>>2]=1091403767;c[Q+4>>2]=-167360562;Q=o+8|0;c[Q>>2]=-753151983;c[Q+4>>2]=792555341;Q=o+16|0;c[Q>>2]=960546513;c[Q+4>>2]=692269950;Q=o+24|0;c[Q>>2]=-1478256553;c[Q+4>>2]=496343272;Q=o+32|0;c[Q>>2]=-980480611;c[Q+4>>2]=-748862579;Q=o+40|0;c[Q>>2]=-171504835;c[Q+4>>2]=175696680;Q=o+48|0;c[Q>>2]=2021213740;c[Q+4>>2]=1718526831;Q=o+56|0;c[Q>>2]=-1710760145;c[Q+4>>2]=235567041;cd(j,z,o);Q=z;S=j;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=E;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(i,z,o);Q=z;S=i;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=i;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(h,z,o);Q=z;S=h;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=j;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(g,z,o);Q=z;S=t;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=F;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));fd(f,z,o);Q=z;S=f;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=f;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(e,z,o);Q=z;S=e;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=t;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(d,z,o);Q=z;S=w;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=G;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));fd(P,z,o);Q=z;S=P;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=P;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(O,z,o);Q=z;S=O;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=w;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(N,z,o);Q=z;S=v;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=C;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(M,z,o);Q=z;S=M;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=M;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(L,z,o);Q=z;S=L;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=v;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));gd(I,z,o);Q=z;S=p;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=z+64|0;S=N;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=z+128|0;S=d;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o;S=g;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o+64|0;S=k;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));Q=o+128|0;S=I;T=Q+64|0;do{c[Q>>2]=c[S>>2];Q=Q+4|0;S=S+4|0}while((Q|0)<(T|0));ok(a|0,z|0,192)|0;ok(a+192|0,o|0,192)|0;l=R;return}function Wc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;la=l;l=l+3584|0;V=la+3392|0;ea=la+3200|0;ha=la+3136|0;ia=la+3072|0;ja=la+3008|0;g=la+2944|0;h=la+2880|0;i=la+2816|0;j=la+2752|0;k=la+2688|0;m=la+2624|0;n=la+2560|0;o=la+2496|0;p=la+2432|0;q=la+2368|0;r=la+2304|0;s=la+2240|0;t=la+2176|0;u=la+2112|0;v=la+2048|0;w=la+1984|0;x=la+1920|0;y=la+1856|0;z=la+1792|0;A=la+1728|0;B=la+1664|0;C=la+1600|0;D=la+1536|0;E=la+1472|0;F=la+1408|0;G=la+1344|0;H=la+1280|0;I=la+1216|0;J=la+1152|0;K=la+1088|0;L=la+1024|0;M=la+960|0;N=la+896|0;O=la+832|0;P=la+768|0;Q=la+704|0;R=la+640|0;S=la+576|0;T=la+512|0;U=la+448|0;W=la+384|0;X=la+320|0;Y=la+256|0;Z=la+192|0;_=la+128|0;$=la+64|0;aa=la;ka=aa;ma=b;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ba=b+64|0;ka=$;ma=ba;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ca=b+128|0;ka=_;ma=ca;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));da=b+192|0;ka=Z;ma=da;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fa=b+256|0;ka=Y;ma=fa;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ga=b+320|0;ka=X;ma=ga;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=W;ma=d;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=U;ma=f;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=T;ma=e;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea;ma=b;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=d;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(S,ea,V);ka=ea;ma=ca;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=f;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(R,ea,V);ka=ea;ma=fa;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=e;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(Q,ea,V);ka=ea;ma=aa;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=Y;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(P,ea,V);ka=ea;ma=aa;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=_;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(O,ea,V);ka=ea;ma=ba;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=da;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(ha,ea,V);ka=V;ma=ga;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(N,ha,V);ka=ea;ma=$;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=U;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(M,ea,V);ka=ea;ma=M;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=Q;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(L,ea,V);ka=ea;ma=L;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;c[ka>>2]=1091403767;c[ka+4>>2]=-167360562;ka=V+8|0;c[ka>>2]=-753151983;c[ka+4>>2]=792555341;ka=V+16|0;c[ka>>2]=960546513;c[ka+4>>2]=692269950;ka=V+24|0;c[ka>>2]=-1478256553;c[ka+4>>2]=496343272;ka=V+32|0;c[ka>>2]=-980480611;c[ka+4>>2]=-748862579;ka=V+40|0;c[ka>>2]=-171504835;c[ka+4>>2]=175696680;ka=V+48|0;c[ka>>2]=2021213740;c[ka+4>>2]=1718526831;ka=V+56|0;c[ka>>2]=-1710760145;c[ka+4>>2]=235567041;cd(ha,ea,V);ka=V;ma=S;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(K,ha,V);ka=J;ma=K;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea;ma=X;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=T;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(I,ea,V);ka=ea;ma=M;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=I;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(H,ea,V);ka=ea;ma=I;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=R;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(G,ea,V);ka=ea;ma=G;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;c[ka>>2]=1091403767;c[ka+4>>2]=-167360562;ka=V+8|0;c[ka>>2]=-753151983;c[ka+4>>2]=792555341;ka=V+16|0;c[ka>>2]=960546513;c[ka+4>>2]=692269950;ka=V+24|0;c[ka>>2]=-1478256553;c[ka+4>>2]=496343272;ka=V+32|0;c[ka>>2]=-980480611;c[ka+4>>2]=-748862579;ka=V+40|0;c[ka>>2]=-171504835;c[ka+4>>2]=175696680;ka=V+48|0;c[ka>>2]=2021213740;c[ka+4>>2]=1718526831;ka=V+56|0;c[ka>>2]=-1710760145;c[ka+4>>2]=235567041;cd(F,ea,V);ka=ea;ma=$;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=W;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(E,ea,V);ka=ea;ma=H;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=E;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(D,ea,V);ka=ea;ma=F;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=E;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(C,ea,V);ka=B;ma=C;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea;ma=W;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=U;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(A,ea,V);ka=ea;ma=O;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=A;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(ha,ea,V);ka=V;ma=S;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(ia,ha,V);ka=V;ma=R;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(z,ia,V);ka=ea;ma=Z;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=T;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(y,ea,V);ka=ea;ma=D;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=y;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(x,ea,V);ka=ea;ma=z;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=y;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(w,ea,V);ka=ea;ma=_;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=Y;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(v,ea,V);ka=u;ma=w;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea;ma=U;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=T;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(t,ea,V);ka=ea;ma=v;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=t;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(ha,ea,V);ka=V;ma=R;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(ia,ha,V);ka=V;ma=Q;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(s,ia,V);ka=ea;ma=s;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;c[ka>>2]=1091403767;c[ka+4>>2]=-167360562;ka=V+8|0;c[ka>>2]=-753151983;c[ka+4>>2]=792555341;ka=V+16|0;c[ka>>2]=960546513;c[ka+4>>2]=692269950;ka=V+24|0;c[ka>>2]=-1478256553;c[ka+4>>2]=496343272;ka=V+32|0;c[ka>>2]=-980480611;c[ka+4>>2]=-748862579;ka=V+40|0;c[ka>>2]=-171504835;c[ka+4>>2]=175696680;ka=V+48|0;c[ka>>2]=2021213740;c[ka+4>>2]=1718526831;ka=V+56|0;c[ka>>2]=-1710760145;c[ka+4>>2]=235567041;cd(r,ea,V);ka=ea;ma=Z;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=W;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(q,ea,V);ka=ea;ma=x;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=q;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(p,ea,V);ka=ea;ma=r;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=q;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(o,ea,V);ka=n;ma=o;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea;ma=X;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=U;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(m,ea,V);ka=ea;ma=p;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=m;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(k,ea,V);ka=ea;ma=m;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;c[ka>>2]=1091403767;c[ka+4>>2]=-167360562;ka=V+8|0;c[ka>>2]=-753151983;c[ka+4>>2]=792555341;ka=V+16|0;c[ka>>2]=960546513;c[ka+4>>2]=692269950;ka=V+24|0;c[ka>>2]=-1478256553;c[ka+4>>2]=496343272;ka=V+32|0;c[ka>>2]=-980480611;c[ka+4>>2]=-748862579;ka=V+40|0;c[ka>>2]=-171504835;c[ka+4>>2]=175696680;ka=V+48|0;c[ka>>2]=2021213740;c[ka+4>>2]=1718526831;ka=V+56|0;c[ka>>2]=-1710760145;c[ka+4>>2]=235567041;cd(j,ea,V);ka=ea;ma=W;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=T;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(i,ea,V);ka=ea;ma=P;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=i;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(ha,ea,V);ka=V;ma=S;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(ia,ha,V);ka=V;ma=Q;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(h,ia,V);ka=ea;ma=j;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=h;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(g,ea,V);ka=ea;ma=W;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=U;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(ha,ea,V);ka=V;ma=T;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));gd(ja,ha,V);ka=ea;ma=N;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=ja;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));cd(ha,ea,V);ka=V;ma=k;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));fd(ia,ha,V);ka=ea;ma=J;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea+64|0;ma=B;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=ea+128|0;ma=u;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V;ma=n;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V+64|0;ma=g;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ka=V+128|0;ma=ia;na=ka+64|0;do{c[ka>>2]=c[ma>>2];ka=ka+4|0;ma=ma+4|0}while((ka|0)<(na|0));ok(a|0,ea|0,192)|0;ok(a+192|0,V|0,192)|0;l=la;return}function Xc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=l;l=l+2048|0;k=t+1856|0;m=t+1664|0;n=t+1600|0;o=t+1536|0;p=t+1344|0;q=t+1152|0;r=t+960|0;g=t+768|0;d=t+576|0;h=t+384|0;i=t+192|0;j=t;ok(m|0,b|0,192)|0;e=b+192|0;ok(k|0,e|0,192)|0;ad(j,m,k);s=m;u=b+320|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));f=k;c[f>>2]=1091403767;c[f+4>>2]=-167360562;f=k+8|0;c[f>>2]=-753151983;c[f+4>>2]=792555341;f=k+16|0;c[f>>2]=960546513;c[f+4>>2]=692269950;f=k+24|0;c[f>>2]=-1478256553;c[f+4>>2]=496343272;f=k+32|0;c[f>>2]=-980480611;c[f+4>>2]=-748862579;f=k+40|0;c[f>>2]=-171504835;c[f+4>>2]=175696680;f=k+48|0;c[f>>2]=2021213740;c[f+4>>2]=1718526831;f=k+56|0;c[f>>2]=-1710760145;c[f+4>>2]=235567041;cd(q,m,k);f=b+256|0;s=q+64|0;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=q+128|0;u=f;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));ok(p|0,b|0,192)|0;s=m;u=q;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(g,m,k);s=m;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(o,m,k);s=m;u=f;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(n,m,k);s=g+64|0;u=o;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=g+128|0;u=n;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));ok(q|0,b|0,192)|0;ok(p|0,e|0,192)|0;s=m;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(r,m,k);s=m;u=q+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(o,m,k);s=m;u=q+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(n,m,k);s=r+64|0;u=o;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=r+128|0;u=n;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));ad(d,g,r);ok(p|0,j|0,192)|0;s=m;u=d;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=j;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));fd(h,m,k);s=m;u=d+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));fd(o,m,k);s=m;u=d+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));fd(n,m,k);d=h+64|0;s=d;u=o;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));e=h+128|0;s=e;u=n;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=j+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));b=k;c[b>>2]=1091403767;c[b+4>>2]=-167360562;b=k+8|0;c[b>>2]=-753151983;c[b+4>>2]=792555341;b=k+16|0;c[b>>2]=960546513;c[b+4>>2]=692269950;b=k+24|0;c[b>>2]=-1478256553;c[b+4>>2]=496343272;b=k+32|0;c[b>>2]=-980480611;c[b+4>>2]=-748862579;b=k+40|0;c[b>>2]=-171504835;c[b+4>>2]=175696680;b=k+48|0;c[b>>2]=2021213740;c[b+4>>2]=1718526831;b=k+56|0;c[b>>2]=-1710760145;c[b+4>>2]=235567041;cd(p,m,k);b=j+64|0;s=p+64|0;u=j;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=p+128|0;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=h;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));fd(i,m,k);s=m;u=d;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=j;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));fd(o,m,k);s=m;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));fd(n,m,k);s=i+64|0;u=o;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=i+128|0;u=n;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));ok(q|0,j|0,192)|0;ok(p|0,j|0,192)|0;s=m;u=q;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=j;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(r,m,k);s=m;u=q+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+64|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(o,m,k);s=m;u=q+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=k;u=p+128|0;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));gd(n,m,k);s=r+64|0;u=o;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=r+128|0;u=n;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));ok(a|0,i|0,192)|0;ok(a+192|0,r|0,192)|0;l=t;return}function Yc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;g=i;h=a+4|0;f=c[h>>2]|0;e=f*192|0;if(f|0){b=f*384|0;if((b|0)<0)$i(2072);b=_b(c[a>>2]|0,e,8,b,8,g)|0;if(!b){d=g+4|0;j=c[d>>2]|0;d=c[d+4>>2]|0;c[g>>2]=c[g>>2];e=g+4|0;c[e>>2]=j;c[e+4>>2]=d;Yb(g)}e=b;g=a;j=f<<1;c[g>>2]=e;c[h>>2]=j;l=i;return}hd(g,192,8,4);if((c[g>>2]|0)==1){b=c[g+4>>2]|0;if(b|0?(d=Xb(b,c[g+8>>2]|0,g)|0,d|0):0){f=d;g=a;j=4;c[g>>2]=f;c[h>>2]=j;l=i;return}}c[g>>2]=1;c[g+4>>2]=6611;c[g+8>>2]=30;Yb(g)}function Zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+384|0;i=r+320|0;k=r+288|0;m=r+256|0;n=r+192|0;o=r+128|0;f=r+64|0;p=r;h=(d&1|0)==0;if(h){q=p;e=b;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=n;e=b+64|0;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));j=f}else{c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];c[p+16>>2]=c[b+16>>2];c[p+20>>2]=c[b+20>>2];c[p+24>>2]=c[b+24>>2];c[p+28>>2]=c[b+28>>2];j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];c[k+16>>2]=c[j+16>>2];c[k+20>>2]=c[j+20>>2];c[k+24>>2]=c[j+24>>2];c[k+28>>2]=c[j+28>>2];j=i;c[j>>2]=317583274;c[j+4>>2]=1757628553;j=i+8|0;c[j>>2]=1923792719;c[j+4>>2]=-1928822936;j=i+16|0;c[j>>2]=151523889;c[j+4>>2]=1373741639;j=i+24|0;c[j>>2]=1193918714;c[j+4>>2]=576313009;Mc(k,i,136,-460954743,-2016278654);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];c[m+16>>2]=c[k+16>>2];c[m+20>>2]=c[k+20>>2];c[m+24>>2]=c[k+24>>2];c[m+28>>2]=c[k+28>>2];j=p+32|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[j+16>>2]=c[m+16>>2];c[j+20>>2]=c[m+20>>2];c[j+24>>2]=c[m+24>>2];c[j+28>>2]=c[m+28>>2];j=b+64|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];j=b+96|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];c[k+16>>2]=c[j+16>>2];c[k+20>>2]=c[j+20>>2];c[k+24>>2]=c[j+24>>2];c[k+28>>2]=c[j+28>>2];j=i;c[j>>2]=317583274;c[j+4>>2]=1757628553;j=i+8|0;c[j>>2]=1923792719;c[j+4>>2]=-1928822936;j=i+16|0;c[j>>2]=151523889;c[j+4>>2]=1373741639;j=i+24|0;c[j>>2]=1193918714;c[j+4>>2]=576313009;Mc(k,i,136,-460954743,-2016278654);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];c[m+16>>2]=c[k+16>>2];c[m+20>>2]=c[k+20>>2];c[m+24>>2]=c[k+24>>2];c[m+28>>2]=c[k+28>>2];j=n+32|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[j+16>>2]=c[m+16>>2];c[j+20>>2]=c[m+20>>2];c[j+24>>2]=c[m+24>>2];c[j+28>>2]=c[m+28>>2];j=f}d=((d>>>0)%6|0)&255;switch(d&7){case 0:{q=i;c[q>>2]=-980480611;c[q+4>>2]=-748862579;q=i+8|0;c[q>>2]=-171504835;c[q+4>>2]=175696680;q=i+16|0;c[q>>2]=2021213740;c[q+4>>2]=1718526831;q=i+24|0;c[q>>2]=-1710760145;c[q+4>>2]=235567041;q=i+32|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;break}case 1:{q=i;c[q>>2]=1164159792;c[q+4>>2]=-1250477296;q=i+8|0;c[q>>2]=-1448450988;c[q+4>>2]=880775624;q=i+16|0;c[q>>2]=606996881;c[q+4>>2]=2046849319;q=i+24|0;c[q>>2]=293737708;c[q+4>>2]=425114840;q=i+32|0;c[q>>2]=-1599453353;c[q+4>>2]=1854185246;q=i+40|0;c[q>>2]=-1980198591;c[q+4>>2]=-1440973971;q=i+48|0;c[q>>2]=-85931462;c[q+4>>2]=-1226370099;q=i+56|0;c[q>>2]=1317202883;c[q+4>>2]=644435899;break}case 2:{q=i;c[q>>2]=333974428;c[q+4>>2]=860932238;q=i+8|0;c[q>>2]=-614574407;c[q+4>>2]=2110674300;q=i+16|0;c[q>>2]=-1240115638;c[q+4>>2]=1610724536;q=i+24|0;c[q>>2]=33691616;c[q+4>>2]=646112791;q=i+32|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;break}case 3:{q=i;c[q>>2]=380464045;c[q+4>>2]=-911269129;q=i+8|0;c[q>>2]=1252418226;c[q+4>>2]=-1290700758;q=i+16|0;c[q>>2]=-498546700;c[q+4>>2]=435072868;q=i+24|0;c[q>>2]=-482107518;c[q+4>>2]=539442807;q=i+32|0;c[q>>2]=-137456724;c[q+4>>2]=-1396692896;q=i+40|0;c[q>>2]=2074569548;c[q+4>>2]=959698305;q=i+48|0;c[q>>2]=1147962471;c[q+4>>2]=1776687243;q=i+56|0;c[q>>2]=1142410325;c[q+4>>2]=172360557;break}default:jd(6441,19,2096)}cd(f,n,i);e=b+128|0;if(h){q=n;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0))}else{c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[n+16>>2]=c[e+16>>2];c[n+20>>2]=c[e+20>>2];c[n+24>>2]=c[e+24>>2];c[n+28>>2]=c[e+28>>2];q=b+160|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];q=i;c[q>>2]=317583274;c[q+4>>2]=1757628553;q=i+8|0;c[q>>2]=1923792719;c[q+4>>2]=-1928822936;q=i+16|0;c[q>>2]=151523889;c[q+4>>2]=1373741639;q=i+24|0;c[q>>2]=1193918714;c[q+4>>2]=576313009;Mc(k,i,136,-460954743,-2016278654);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];c[m+16>>2]=c[k+16>>2];c[m+20>>2]=c[k+20>>2];c[m+24>>2]=c[k+24>>2];c[m+28>>2]=c[k+28>>2];q=n+32|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];c[q+16>>2]=c[m+16>>2];c[q+20>>2]=c[m+20>>2];c[q+24>>2]=c[m+24>>2];c[q+28>>2]=c[m+28>>2]}switch(d&7){case 0:{q=i;c[q>>2]=-980480611;c[q+4>>2]=-748862579;q=i+8|0;c[q>>2]=-171504835;c[q+4>>2]=175696680;q=i+16|0;c[q>>2]=2021213740;c[q+4>>2]=1718526831;q=i+24|0;c[q>>2]=-1710760145;c[q+4>>2]=235567041;q=i+32|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;cd(o,n,i);q=a;e=p;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+64|0;e=j;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+128|0;e=o;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));l=r;return}case 1:{q=i;c[q>>2]=-2076524910;c[q+4>>2]=1935791999;q=i+8|0;c[q>>2]=657723899;c[q+4>>2]=-1514460205;q=i+16|0;c[q>>2]=1262363545;c[q+4>>2]=-1668014287;q=i+24|0;c[q>>2]=-1147153428;c[q+4>>2]=366976221;q=i+32|0;c[q>>2]=1272498505;c[q+4>>2]=1574829333;q=i+40|0;c[q>>2]=-1539024032;c[q+4>>2]=1657481637;q=i+48|0;c[q>>2]=209572537;c[q+4>>2]=935102218;q=i+56|0;c[q>>2]=829550845;c[q+4>>2]=612567709;cd(o,n,i);q=a;e=p;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+64|0;e=j;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+128|0;e=o;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));l=r;return}case 2:{q=i;c[q>>2]=-679288491;c[q+4>>2]=1905462289;q=i+8|0;c[q>>2]=-4312285;c[q+4>>2]=-1497656196;q=i+16|0;c[q>>2]=-730590140;c[q+4>>2]=-1439681724;q=i+24|0;c[q>>2]=643385667;c[q+4>>2]=742080269;q=i+32|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;cd(o,n,i);q=a;e=p;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+64|0;e=j;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+128|0;e=o;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));l=r;return}case 3:{q=i;c[q>>2]=2070373087;c[q+4>>2]=1149932453;q=i+8|0;c[q>>2]=687729375;c[q+4>>2]=-1076482571;q=i+16|0;c[q>>2]=245093498;c[q+4>>2]=-665258544;q=i+24|0;c[q>>2]=880208984;c[q+4>>2]=112213325;q=i+32|0;c[q>>2]=-1127663919;c[q+4>>2]=723114740;q=i+40|0;c[q>>2]=1458842015;c[q+4>>2]=-1583001990;q=i+48|0;c[q>>2]=1524543217;c[q+4>>2]=-1254887712;q=i+56|0;c[q>>2]=-2065850190;c[q+4>>2]=386695467;cd(o,n,i);q=a;e=p;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+64|0;e=j;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));q=a+128|0;e=o;g=q+64|0;do{c[q>>2]=c[e>>2];q=q+4|0;e=e+4|0}while((q|0)<(g|0));l=r;return}default:jd(6441,19,2112)}}function _c(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=l;l=l+960|0;m=v+896|0;n=v+832|0;o=v+768|0;p=v+704|0;q=v+640|0;r=v+576|0;s=v+512|0;t=v+448|0;e=v+384|0;f=v+320|0;g=v+256|0;h=v+192|0;i=v+128|0;d=v+64|0;j=v;dd(j,b);u=n;w=b;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));k=b+64|0;u=m;w=k;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));cd(d,n,m);u=n;w=d;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;w=d;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));gd(i,n,m);u=n;w=b;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;w=k;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));fd(o,n,m);b=b+128|0;u=m;w=b;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));gd(p,o,m);dd(h,p);u=n;w=k;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;w=b;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));cd(g,n,m);u=n;w=g;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;w=g;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));gd(f,n,m);dd(e,b);u=p;w=j;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=n;w=f;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;c[u>>2]=1091403767;c[u+4>>2]=-167360562;u=m+8|0;c[u>>2]=-753151983;c[u+4>>2]=792555341;u=m+16|0;c[u>>2]=960546513;c[u+4>>2]=692269950;u=m+24|0;c[u>>2]=-1478256553;c[u+4>>2]=496343272;u=m+32|0;c[u>>2]=-980480611;c[u+4>>2]=-748862579;u=m+40|0;c[u>>2]=-171504835;c[u+4>>2]=175696680;u=m+48|0;c[u>>2]=2021213740;c[u+4>>2]=1718526831;u=m+56|0;c[u>>2]=-1710760145;c[u+4>>2]=235567041;cd(o,n,m);gd(t,p,o);u=p;w=i;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=n;w=e;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;c[u>>2]=1091403767;c[u+4>>2]=-167360562;u=m+8|0;c[u>>2]=-753151983;c[u+4>>2]=792555341;u=m+16|0;c[u>>2]=960546513;c[u+4>>2]=692269950;u=m+24|0;c[u>>2]=-1478256553;c[u+4>>2]=496343272;u=m+32|0;c[u>>2]=-980480611;c[u+4>>2]=-748862579;u=m+40|0;c[u>>2]=-171504835;c[u+4>>2]=175696680;u=m+48|0;c[u>>2]=2021213740;c[u+4>>2]=1718526831;u=m+56|0;c[u>>2]=-1710760145;c[u+4>>2]=235567041;cd(o,n,m);gd(s,p,o);u=n;w=i;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=m;w=h;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));gd(o,n,m);u=m;w=f;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));gd(p,o,m);u=m;w=j;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));fd(q,p,m);u=m;w=e;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));fd(r,q,m);u=a;w=t;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=a+64|0;w=s;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));u=a+128|0;w=r;x=u+64|0;do{c[u>>2]=c[w>>2];u=u+4|0;w=w+4|0}while((u|0)<(x|0));l=v;return}function $c(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=l;l=l+912|0;m=t+840|0;n=t+776|0;o=t+712|0;p=t+648|0;q=t+456|0;r=t+392|0;g=t+328|0;h=t+264|0;d=t+192|0;i=t+128|0;j=t+64|0;k=t;dd(g,b);e=b+64|0;s=p;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));f=b+128|0;s=n;u=f;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;c[s>>2]=1091403767;c[s+4>>2]=-167360562;s=m+8|0;c[s>>2]=-753151983;c[s+4>>2]=792555341;s=m+16|0;c[s>>2]=960546513;c[s+4>>2]=692269950;s=m+24|0;c[s>>2]=-1478256553;c[s+4>>2]=496343272;s=m+32|0;c[s>>2]=-980480611;c[s+4>>2]=-748862579;s=m+40|0;c[s>>2]=-171504835;c[s+4>>2]=175696680;s=m+48|0;c[s>>2]=2021213740;c[s+4>>2]=1718526831;s=m+56|0;c[s>>2]=-1710760145;c[s+4>>2]=235567041;cd(o,n,m);cd(q,p,o);fd(k,g,q);dd(p,f);s=n;u=p;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;c[s>>2]=1091403767;c[s+4>>2]=-167360562;s=m+8|0;c[s>>2]=-753151983;c[s+4>>2]=792555341;s=m+16|0;c[s>>2]=960546513;c[s+4>>2]=692269950;s=m+24|0;c[s>>2]=-1478256553;c[s+4>>2]=496343272;s=m+32|0;c[s>>2]=-980480611;c[s+4>>2]=-748862579;s=m+40|0;c[s>>2]=-171504835;c[s+4>>2]=175696680;s=m+48|0;c[s>>2]=2021213740;c[s+4>>2]=1718526831;s=m+56|0;c[s>>2]=-1710760145;c[s+4>>2]=235567041;cd(q,n,m);s=n;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(o,n,m);fd(j,q,o);dd(p,e);s=n;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=f;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(o,n,m);fd(i,p,o);s=n;u=f;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=j;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(p,n,m);s=n;u=e;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=i;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(o,n,m);gd(g,p,o);s=n;u=g;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;c[s>>2]=1091403767;c[s+4>>2]=-167360562;s=m+8|0;c[s>>2]=-753151983;c[s+4>>2]=792555341;s=m+16|0;c[s>>2]=960546513;c[s+4>>2]=692269950;s=m+24|0;c[s>>2]=-1478256553;c[s+4>>2]=496343272;s=m+32|0;c[s>>2]=-980480611;c[s+4>>2]=-748862579;s=m+40|0;c[s>>2]=-171504835;c[s+4>>2]=175696680;s=m+48|0;c[s>>2]=2021213740;c[s+4>>2]=1718526831;s=m+56|0;c[s>>2]=-1710760145;c[s+4>>2]=235567041;cd(q,n,m);s=n;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=k;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(o,n,m);gd(h,q,o);ed(d,h);v=d;if(!((c[v>>2]|0)==1&(c[v+4>>2]|0)==0)){r=0;u=0;v=a;s=v;c[s>>2]=r;v=v+4|0;c[v>>2]=u;l=t;return}b=d+8|0;s=r;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=n;u=b;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=k;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(q,n,m);s=n;u=r;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=j;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(p,n,m);s=n;u=r;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=m;u=i;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));cd(o,n,m);s=q+64|0;u=p;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));s=q+128|0;u=o;v=s+64|0;do{c[s>>2]=c[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(v|0));ok(a+8|0,q|0,192)|0;r=1;u=0;v=a;s=v;c[s>>2]=r;v=v+4|0;c[v>>2]=u;l=t;return}function ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=l;l=l+896|0;q=y+832|0;r=y+768|0;s=y+704|0;t=y+640|0;u=y+576|0;v=y+512|0;w=y+448|0;e=y+384|0;f=y+320|0;g=y+256|0;h=y+192|0;i=y+128|0;j=y+64|0;k=y;x=r;z=b;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=d;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));cd(k,r,q);m=b+64|0;x=r;z=m;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));n=d+64|0;x=q;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));cd(j,r,q);o=b+128|0;x=r;z=o;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));p=d+128|0;x=q;z=p;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));cd(i,r,q);x=r;z=m;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=o;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(t,r,q);x=r;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=p;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(s,r,q);cd(u,t,s);x=q;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));fd(v,u,q);x=q;z=i;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));fd(g,v,q);x=r;z=g;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;c[x>>2]=1091403767;c[x+4>>2]=-167360562;x=q+8|0;c[x>>2]=-753151983;c[x+4>>2]=792555341;x=q+16|0;c[x>>2]=960546513;c[x+4>>2]=692269950;x=q+24|0;c[x>>2]=-1478256553;c[x+4>>2]=496343272;x=q+32|0;c[x>>2]=-980480611;c[x+4>>2]=-748862579;x=q+40|0;c[x>>2]=-171504835;c[x+4>>2]=175696680;x=q+48|0;c[x>>2]=2021213740;c[x+4>>2]=1718526831;x=q+56|0;c[x>>2]=-1710760145;c[x+4>>2]=235567041;cd(w,r,q);x=q;z=k;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(h,w,q);x=r;z=b;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=m;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(t,r,q);x=r;z=d;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=n;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(s,r,q);cd(u,t,s);x=q;z=k;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));fd(v,u,q);x=q;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));fd(w,v,q);x=r;z=i;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;c[x>>2]=1091403767;c[x+4>>2]=-167360562;x=q+8|0;c[x>>2]=-753151983;c[x+4>>2]=792555341;x=q+16|0;c[x>>2]=960546513;c[x+4>>2]=692269950;x=q+24|0;c[x>>2]=-1478256553;c[x+4>>2]=496343272;x=q+32|0;c[x>>2]=-980480611;c[x+4>>2]=-748862579;x=q+40|0;c[x>>2]=-171504835;c[x+4>>2]=175696680;x=q+48|0;c[x>>2]=2021213740;c[x+4>>2]=1718526831;x=q+56|0;c[x>>2]=-1710760145;c[x+4>>2]=235567041;cd(s,r,q);gd(f,w,s);x=r;z=b;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=o;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(t,r,q);x=r;z=d;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=q;z=p;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(s,r,q);cd(u,t,s);x=q;z=k;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));fd(v,u,q);x=q;z=j;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));gd(w,v,q);x=q;z=i;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));fd(e,w,q);x=a;z=h;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=a+64|0;z=f;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));x=a+128|0;z=e;A=x+64|0;do{c[x>>2]=c[z>>2];x=x+4|0;z=z+4|0}while((x|0)<(A|0));l=y;return}function bd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+352|0;e=n+320|0;f=n+288|0;g=n+256|0;h=n+192|0;i=n+128|0;j=n+64|0;k=n;m=h;o=b;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;if((Ic(f,e)|0)<<24>>24==1){c[e>>2]=c[34];c[e+4>>2]=c[35];c[e+8>>2]=c[36];c[e+12>>2]=c[37];c[e+16>>2]=c[38];c[e+20>>2]=c[39];c[e+24>>2]=c[40];c[e+28>>2]=c[41];Pc(e,f);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2]};c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[k+24>>2]=c[f+24>>2];c[k+28>>2]=c[f+28>>2];p=h+32|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;if((Ic(f,e)|0)<<24>>24==1){c[e>>2]=c[34];c[e+4>>2]=c[35];c[e+8>>2]=c[36];c[e+12>>2]=c[37];c[e+16>>2]=c[38];c[e+20>>2]=c[39];c[e+24>>2]=c[40];c[e+28>>2]=c[41];Pc(e,f);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2]};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];d=k+32|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];d=b+64|0;m=h;o=d;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];c[f+20>>2]=c[d+20>>2];c[f+24>>2]=c[d+24>>2];c[f+28>>2]=c[d+28>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;if((Ic(f,e)|0)<<24>>24==1){c[e>>2]=c[34];c[e+4>>2]=c[35];c[e+8>>2]=c[36];c[e+12>>2]=c[37];c[e+16>>2]=c[38];c[e+20>>2]=c[39];c[e+24>>2]=c[40];c[e+28>>2]=c[41];Pc(e,f);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2]};c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];c[j+28>>2]=c[f+28>>2];p=h+32|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;if((Ic(f,e)|0)<<24>>24==1){c[e>>2]=c[34];c[e+4>>2]=c[35];c[e+8>>2]=c[36];c[e+12>>2]=c[37];c[e+16>>2]=c[38];c[e+20>>2]=c[39];c[e+24>>2]=c[40];c[e+28>>2]=c[41];Pc(e,f);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2]};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];m=j+32|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];c[m+16>>2]=c[g+16>>2];c[m+20>>2]=c[g+20>>2];c[m+24>>2]=c[g+24>>2];c[m+28>>2]=c[g+28>>2];b=b+128|0;m=h;o=b;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;if((Ic(f,e)|0)<<24>>24==1){c[e>>2]=c[34];c[e+4>>2]=c[35];c[e+8>>2]=c[36];c[e+12>>2]=c[37];c[e+16>>2]=c[38];c[e+20>>2]=c[39];c[e+24>>2]=c[40];c[e+28>>2]=c[41];Pc(e,f);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2]};c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];p=h+32|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;if((Ic(f,e)|0)<<24>>24!=1){c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];m=i+32|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];c[m+16>>2]=c[g+16>>2];c[m+20>>2]=c[g+20>>2];c[m+24>>2]=c[g+24>>2];c[m+28>>2]=c[g+28>>2];m=a;o=k;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=a+64|0;o=j;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=a+128|0;o=i;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));l=n;return};c[e>>2]=c[34];c[e+4>>2]=c[35];c[e+8>>2]=c[36];c[e+12>>2]=c[37];c[e+16>>2]=c[38];c[e+20>>2]=c[39];c[e+24>>2]=c[40];c[e+28>>2]=c[41];Pc(e,f);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2];c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];m=i+32|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];c[m+16>>2]=c[g+16>>2];c[m+20>>2]=c[g+20>>2];c[m+24>>2]=c[g+24>>2];c[m+28>>2]=c[g+28>>2];m=a;o=k;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=a+64|0;o=j;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));m=a+128|0;o=i;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));l=n;return}function cd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;e=l;l=l+288|0;h=e+256|0;o=e+224|0;n=e+192|0;m=e+160|0;j=e+128|0;g=e+96|0;f=e+64|0;i=e+32|0;k=e;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];c[o+16>>2]=c[b+16>>2];c[o+20>>2]=c[b+20>>2];c[o+24>>2]=c[b+24>>2];c[o+28>>2]=c[b+28>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];Mc(o,h,136,-460954743,-2016278654);c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];q=b+32|0;c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[o+16>>2]=c[q+16>>2];c[o+20>>2]=c[q+20>>2];c[o+24>>2]=c[q+24>>2];c[o+28>>2]=c[q+28>>2];p=d+32|0;c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];c[h+16>>2]=c[p+16>>2];c[h+20>>2]=c[p+20>>2];c[h+24>>2]=c[p+24>>2];c[h+28>>2]=c[p+28>>2];Mc(o,h,136,-460954743,-2016278654);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[i+16>>2]=c[o+16>>2];c[i+20>>2]=c[o+20>>2];c[i+24>>2]=c[o+24>>2];c[i+28>>2]=c[o+28>>2];c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[o+16>>2]=c[i+16>>2];c[o+20>>2]=c[i+20>>2];c[o+24>>2]=c[i+24>>2];c[o+28>>2]=c[i+28>>2];r=h;c[r>>2]=317583274;c[r+4>>2]=1757628553;r=h+8|0;c[r>>2]=1923792719;c[r+4>>2]=-1928822936;r=h+16|0;c[r>>2]=151523889;c[r+4>>2]=1373741639;r=h+24|0;c[r>>2]=1193918714;c[r+4>>2]=576313009;Mc(o,h,136,-460954743,-2016278654);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[n+16>>2]=c[o+16>>2];c[n+20>>2]=c[o+20>>2];c[n+24>>2]=c[o+24>>2];c[n+28>>2]=c[o+28>>2];c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];Kc(n,h,136);c[a>>2]=c[n>>2];c[a+4>>2]=c[n+4>>2];c[a+8>>2]=c[n+8>>2];c[a+12>>2]=c[n+12>>2];c[a+16>>2]=c[n+16>>2];c[a+20>>2]=c[n+20>>2];c[a+24>>2]=c[n+24>>2];c[a+28>>2]=c[n+28>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];c[o+16>>2]=c[b+16>>2];c[o+20>>2]=c[b+20>>2];c[o+24>>2]=c[b+24>>2];c[o+28>>2]=c[b+28>>2];c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];c[h+28>>2]=c[q+28>>2];Kc(o,h,136);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2];c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[o+20>>2]=c[d+20>>2];c[o+24>>2]=c[d+24>>2];c[o+28>>2]=c[d+28>>2];c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];c[h+16>>2]=c[p+16>>2];c[h+20>>2]=c[p+20>>2];c[h+24>>2]=c[p+24>>2];c[h+28>>2]=c[p+28>>2];Kc(o,h,136);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[n+16>>2]=c[o+16>>2];c[n+20>>2]=c[o+20>>2];c[n+24>>2]=c[o+24>>2];c[n+28>>2]=c[o+28>>2];Mc(m,n,136,-460954743,-2016278654);c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[j+16>>2]=c[m+16>>2];c[j+20>>2]=c[m+20>>2];c[j+24>>2]=c[m+24>>2];c[j+28>>2]=c[m+28>>2];c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];Lc(j,h,136);c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];c[g+16>>2]=c[j+16>>2];c[g+20>>2]=c[j+20>>2];c[g+24>>2]=c[j+24>>2];c[g+28>>2]=c[j+28>>2];c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[h+16>>2]=c[i+16>>2];c[h+20>>2]=c[i+20>>2];c[h+24>>2]=c[i+24>>2];c[h+28>>2]=c[i+28>>2];Lc(g,h,136);c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];c[f+24>>2]=c[g+24>>2];c[f+28>>2]=c[g+28>>2];d=a+32|0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];l=e;return}function dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+224|0;g=d+192|0;f=d+160|0;e=d+128|0;k=d+96|0;j=d+64|0;i=d+32|0;h=d;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];m=b+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];c[g+16>>2]=c[m+16>>2];c[g+20>>2]=c[m+20>>2];c[g+24>>2]=c[m+24>>2];c[g+28>>2]=c[m+28>>2];Mc(f,g,136,-460954743,-2016278654);c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];c[h+28>>2]=c[f+28>>2];c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[f+16>>2]=c[m+16>>2];c[f+20>>2]=c[m+20>>2];c[f+24>>2]=c[m+24>>2];c[f+28>>2]=c[m+28>>2];n=g;c[n>>2]=317583274;c[n+4>>2]=1757628553;n=g+8|0;c[n>>2]=1923792719;c[n+4>>2]=-1928822936;n=g+16|0;c[n>>2]=151523889;c[n+4>>2]=1373741639;n=g+24|0;c[n>>2]=1193918714;c[n+4>>2]=576313009;Mc(f,g,136,-460954743,-2016278654);c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];c[e+24>>2]=c[f+24>>2];c[e+28>>2]=c[f+28>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];Kc(e,g,136);c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];c[g+16>>2]=c[m+16>>2];c[g+20>>2]=c[m+20>>2];c[g+24>>2]=c[m+24>>2];c[g+28>>2]=c[m+28>>2];Kc(f,g,136);c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];c[e+24>>2]=c[f+24>>2];c[e+28>>2]=c[f+28>>2];Mc(k,e,136,-460954743,-2016278654);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];c[g+24>>2]=c[h+24>>2];c[g+28>>2]=c[h+28>>2];Lc(j,g,136);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];c[i+20>>2]=c[j+20>>2];c[i+24>>2]=c[j+24>>2];c[i+28>>2]=c[j+28>>2];c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[f+28>>2]=c[h+28>>2];b=g;c[b>>2]=317583274;c[b+4>>2]=1757628553;b=g+8|0;c[b>>2]=1923792719;c[b+4>>2]=-1928822936;b=g+16|0;c[b>>2]=151523889;c[b+4>>2]=1373741639;b=g+24|0;c[b>>2]=1193918714;c[b+4>>2]=576313009;Mc(f,g,136,-460954743,-2016278654);c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];c[e+24>>2]=c[f+24>>2];c[e+28>>2]=c[f+28>>2];Lc(i,e,136);c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[f+24>>2]=c[h+24>>2];c[f+28>>2]=c[h+28>>2];c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];c[g+24>>2]=c[h+24>>2];c[g+28>>2]=c[h+28>>2];Kc(f,g,136);c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];c[e+24>>2]=c[f+24>>2];c[e+28>>2]=c[f+28>>2];b=a+32|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[b+16>>2]=c[e+16>>2];c[b+20>>2]=c[e+20>>2];c[b+24>>2]=c[e+24>>2];c[b+28>>2]=c[e+28>>2];l=d;return}function ed(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+288|0;f=n+256|0;g=n+224|0;h=n+192|0;i=n+160|0;d=n+96|0;m=n+64|0;j=n+32|0;k=n;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];Mc(g,f,136,-460954743,-2016278654);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];e=b+32|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];c[f+20>>2]=c[e+20>>2];c[f+24>>2]=c[e+24>>2];c[f+28>>2]=c[e+28>>2];Mc(g,f,136,-460954743,-2016278654);c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];o=f;c[o>>2]=317583274;c[o+4>>2]=1757628553;o=f+8|0;c[o>>2]=1923792719;c[o+4>>2]=-1928822936;o=f+16|0;c[o>>2]=151523889;c[o+4>>2]=1373741639;o=f+24|0;c[o>>2]=1193918714;c[o+4>>2]=576313009;Mc(h,f,136,-460954743,-2016278654);c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[i+20>>2]=c[h+20>>2];c[i+24>>2]=c[h+24>>2];c[i+28>>2]=c[h+28>>2];Lc(d,i,136);c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];o=j;if((((c[o>>2]|0)==0&(c[o+4>>2]|0)==0?(o=j+8|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)?(o=j+16|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0)?(o=j+24|0,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0){k=0;m=0;o=a;a=o;c[a>>2]=k;o=o+4|0;c[o>>2]=m;l=n;return}Oc(j,136);Mc(j,104,136,-460954743,-2016278654);c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];c[k+16>>2]=c[j+16>>2];c[k+20>>2]=c[j+20>>2];c[k+24>>2]=c[j+24>>2];c[k+28>>2]=c[j+28>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];c[m+16>>2]=c[k+16>>2];c[m+20>>2]=c[k+20>>2];c[m+24>>2]=c[k+24>>2];c[m+28>>2]=c[k+28>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];c[f>>2]=c[k>>2];c[f+4>>2]=c[k+4>>2];c[f+8>>2]=c[k+8>>2];c[f+12>>2]=c[k+12>>2];c[f+16>>2]=c[k+16>>2];c[f+20>>2]=c[k+20>>2];c[f+24>>2]=c[k+24>>2];c[f+28>>2]=c[k+28>>2];Mc(g,f,136,-460954743,-2016278654);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[f+16>>2]=c[m+16>>2];c[f+20>>2]=c[m+20>>2];c[f+24>>2]=c[m+24>>2];c[f+28>>2]=c[m+28>>2];Mc(g,f,136,-460954743,-2016278654);c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];Nc(h,136);c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[i+20>>2]=c[h+20>>2];c[i+24>>2]=c[h+24>>2];c[i+28>>2]=c[h+28>>2];e=d+32|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[e+16>>2]=c[i+16>>2];c[e+20>>2]=c[i+20>>2];c[e+24>>2]=c[i+24>>2];c[e+28>>2]=c[i+28>>2];e=a+8|0;b=e+64|0;do{c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}while((e|0)<(b|0));k=1;m=0;o=a;a=o;c[a>>2]=k;o=o+4|0;c[o>>2]=m;l=n;return}function fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+96|0;h=e+64|0;g=e+32|0;f=e;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];Lc(g,h,136);c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];c[a+16>>2]=c[g+16>>2];c[a+20>>2]=c[g+20>>2];c[a+24>>2]=c[g+24>>2];c[a+28>>2]=c[g+28>>2];b=b+32|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];d=d+32|0;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];Lc(g,h,136);c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];c[f+24>>2]=c[g+24>>2];c[f+28>>2]=c[g+28>>2];d=a+32|0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];l=e;return}function gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+96|0;h=e+64|0;g=e+32|0;f=e;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];Kc(g,h,136);c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];c[a+16>>2]=c[g+16>>2];c[a+20>>2]=c[g+20>>2];c[a+24>>2]=c[g+24>>2];c[a+28>>2]=c[g+28>>2];b=b+32|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[g+16>>2]=c[b+16>>2];c[g+20>>2]=c[b+20>>2];c[g+24>>2]=c[b+24>>2];c[g+28>>2]=c[b+28>>2];d=d+32|0;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];Kc(g,h,136);c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];c[f+24>>2]=c[g+24>>2];c[f+28>>2]=c[g+28>>2];d=a+32|0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];l=e;return}function hd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=0-d|0;f=b+((b+-1+d&g)-b)|0;if(f>>>0>>0){c[a>>2]=0;return}b=N(f,e)|0;h=(e|0)==0;if(h?0:((b>>>0)/((h?1:e)>>>0)|0|0)!=(f|0)){c[a>>2]=0;return}if((d+-1&(d|-2147483648)|0)!=0|b>>>0>g>>>0)$i(2128);c[a>>2]=1;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=f;return}function id(a){a=a|0;return}function jd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=Xb(8,4,e)|0;if(!f)Yb(e);else{c[f>>2]=a;c[f+4>>2]=b;ye(f,2152,d)}}function kd(a){a=a|0;y=286299353;return 1890621284}function ld(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0;p=l;l=l+32|0;g=p+12|0;o=p;i=e<<1;if((i|0)<0)$i(2256);if(i){h=Xb(i,1,g)|0;if(!h){c[g>>2]=0;Yb(g)}else f=h}else f=1;c[o>>2]=f;j=o+4|0;c[j>>2]=i;k=o+8|0;c[k>>2]=0;m=d+e|0;if(!e){c[b>>2]=c[o>>2];c[b+4>>2]=c[o+4>>2];c[b+8>>2]=c[o+8>>2];l=p;return}f=0;h=i;while(1){e=d+1|0;d=a[d>>0]|0;g=a[2168+((d&255)>>>4&255)>>0]|0;if((f|0)==(h|0)){n=0;Z(43,o|0);i=n;n=0;if(i&1){f=7;break}f=c[k>>2]|0}a[(c[o>>2]|0)+f>>0]=g;f=(c[k>>2]|0)+1|0;c[k>>2]=f;g=a[2168+(d&15)>>0]|0;if((f|0)==(c[j>>2]|0)){n=0;Z(43,o|0);i=n;n=0;if(i&1){f=7;break}f=c[k>>2]|0}a[(c[o>>2]|0)+f>>0]=g;f=(c[k>>2]|0)+1|0;c[k>>2]=f;if((e|0)==(m|0)){f=17;break}d=e;h=c[j>>2]|0}if((f|0)==7){p=na()|0;md(o);za(p|0)}else if((f|0)==17){c[b>>2]=c[o>>2];c[b+4>>2]=c[o+4>>2];c[b+8>>2]=c[o+8>>2];l=p;return}}function md(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+64|0;d=i+32|0;e=i+8|0;f=i+4|0;g=i;h=c[a>>2]|0;if((h|0)==1114112){c[d>>2]=2184;c[d+4>>2]=1;c[d+8>>2]=0;c[d+16>>2]=15892;c[d+20>>2]=0;h=si(b,d)|0;l=i;return h|0}else{c[g>>2]=h;c[f>>2]=c[a+4>>2];c[d>>2]=g;c[d+4>>2]=38;c[d+8>>2]=f;c[d+12>>2]=39;c[e>>2]=2192;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=d;c[e+20>>2]=2;h=si(b,e)|0;l=i;return h|0}return 0}function od(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+48|0;q=u+24|0;r=u+12|0;t=u;i=e>>>1;if(i){h=Xb(i,1,q)|0;if(!h){c[q>>2]=0;Yb(q)}else g=h}else g=1;c[t>>2]=g;s=t+4|0;c[s>>2]=i;o=t+8|0;c[o>>2]=0;p=d+e|0;g=0;j=0;i=0;h=d;a:while(1){if((h|0)==(p|0)){f=0;g=7;break}else m=j;while(1){k=h;h=h+1|0;k=a[k>>0]|0;j=m;m=m+1|0;if((k+-65&255)<6){j=-55;break}if((k+-97&255)<6){j=-87;break}if((k+-48&255)<10){j=-48;break}switch(k<<24>>24){case 9:case 10:case 13:case 32:break;default:{i=j;g=10;break a}}if((h|0)==(p|0)){f=0;g=7;break a}else i=i&15}if((h|0)==(p|0)){f=1;g=7;break}k=j+k<<24>>24|i<<4&255;while(1){j=h;h=h+1|0;j=a[j>>0]|0;i=m;m=m+1|0;if((j+-65&255)<6){i=-55;break}if((j+-97&255)<6){i=-87;break}if((j+-48&255)<10){i=-48;break}switch(j<<24>>24){case 9:case 10:case 13:case 32:break;default:{g=10;break a}}if((h|0)==(p|0)){f=1;g=7;break a}else k=k&15}i=i+j<<24>>24|k<<4&255;if((g|0)==(c[s>>2]|0)){n=0;Z(43,t|0);k=n;n=0;if(k&1){g=6;break}g=c[o>>2]|0}a[(c[t>>2]|0)+g>>0]=i;g=(c[o>>2]|0)+1|0;c[o>>2]=g;j=m}if((g|0)==6){u=na()|0;md(t);za(u|0)}else if((g|0)==7){if(f){c[b>>2]=1;c[b+4>>2]=1114112;f=c[s>>2]|0;if(f|0)Zb(c[t>>2]|0,f,1)}else{c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];s=c[q>>2]|0;t=s+(c[q+8>>2]|0)|0;d=c[q+4>>2]|0;c[q>>2]=s;c[q+4>>2]=d;c[q+8>>2]=s;c[q+12>>2]=t;pd(r,q);c[b>>2]=0;t=b+4|0;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2]}l=u;return}else if((g|0)==10){do if((i|0)==0|(i|0)==(e|0))f=d+i|0;else{if(i>>>0>>0?(f=d+i|0,(a[f>>0]|0)>-65):0)break;n=0;ea(5,d|0,e|0,i|0,e|0);n=0;u=na()|0;md(t);za(u|0)}while(0);m=d+i+(e-i)|0;e=(f|0)==(m|0);g=e?f:d+i+1|0;do if(!e){j=a[f>>0]|0;if(j<<24>>24<=-1){k=j&31;if((g|0)==(m|0)){f=0;h=m}else{f=a[g>>0]&63;h=g+1|0}g=f&255;f=g|k<<6;if((j&255)>223){if((h|0)==(m|0)){f=0;h=m}else{f=a[h>>0]&63;h=h+1|0}g=f&255|g<<6;f=g|k<<12;if((j&255)>239){if((h|0)==(m|0))f=0;else f=a[h>>0]&63;f=g<<6|k<<18&1835008|f&255;if((f|0)==1114112)break}}}else f=j&255;c[b>>2]=1;c[b+4>>2]=f;c[b+8>>2]=i;f=c[s>>2]|0;if(f|0)Zb(c[t>>2]|0,f,1);l=u;return}while(0);n=0;Z(44,2208);n=0;u=na()|0;md(t);za(u|0)}}function pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;i=h+16|0;j=h;d=c[b>>2]|0;if((d|0)==(c[b+8>>2]|0)){i=c[b+4>>2]|0;j=(c[b+12>>2]|0)-d|0;c[a>>2]=d;c[a+4>>2]=i;c[a+8>>2]=j;l=h;return}c[j>>2]=1;c[j+4>>2]=0;g=j+8|0;c[g>>2]=0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];d=i+8|0;b=c[d>>2]|0;e=c[i+12>>2]|0;f=e-b|0;n=0;aa(20,j|0,0,f|0);k=n;n=0;if(k&1){d=na()|0;n=0;Z(45,i|0);k=n;n=0;if(!(k&1)){k=d;qd(j);za(k|0)}k=na()|0;qd(j);za(k|0)}else{k=c[g>>2]|0;ok((c[j>>2]|0)+k|0,b|0,f|0)|0;c[g>>2]=k+f;c[d>>2]=e;d=c[i+4>>2]|0;if(d|0)Zb(c[i>>2]|0,d,1);c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=h;return}}function qd(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function rd(a){a=a|0;var b=0,d=0;b=a+8|0;d=c[a+12>>2]|0;if((c[b>>2]|0)!=(d|0))c[b>>2]=d;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function sd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;e=g;f=a+4|0;b=c[f>>2]|0;if(b|0){d=b<<1;if((d|0)<0)$i(2256);b=_b(c[a>>2]|0,b,1,d,1,e)|0;if(!b){i=e+4|0;j=c[i>>2]|0;i=c[i+4>>2]|0;c[e>>2]=c[e>>2];h=e+4|0;c[h>>2]=j;c[h+4>>2]=i;Yb(e)}h=b;i=a;j=d;c[i>>2]=h;c[f>>2]=j;l=g;return}ud(e,1,1,4);if((c[e>>2]|0)==1){b=c[e+4>>2]|0;if(b|0?(d=Xb(b,c[e+8>>2]|0,e)|0,d|0):0){h=d;i=a;j=4;c[i>>2]=h;c[f>>2]=j;l=g;return}}c[e>>2]=1;c[e+4>>2]=6818;c[e+8>>2]=30;Yb(e)}function td(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=a+4|0;e=c[i>>2]|0;if((e-b|0)>>>0>=d>>>0){l=j;return}d=b+d|0;if(d>>>0>>0)cj(6768,17);g=e<<1;g=d>>>0>=g>>>0?d:g;ud(h,1,1,g);if((c[h>>2]|0)!=1)$i(2232);d=c[h+4>>2]|0;b=c[h+8>>2]|0;if((d|0)<0)$i(2256);e=c[i>>2]|0;if(!e){b=Xb(d,b,h)|0;d=(b|0)==0&1;e=0;f=0}else{b=_b(c[a>>2]|0,e,1,d,b,h)|0;e=(b|0)==0;f=h+4|0;d=e&1;b=e?c[h>>2]|0:b;e=c[f>>2]|0;f=c[f+4>>2]|0}if((d|0)==1){c[h>>2]=b;d=h+4|0;c[d>>2]=e;c[d+4>>2]=f;Yb(h)}c[a>>2]=b;c[i>>2]=g;l=j;return}function ud(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=0-d|0;f=b+((b+-1+d&g)-b)|0;if(f>>>0>>0){c[a>>2]=0;return}b=N(f,e)|0;h=(e|0)==0;if(h?0:((b>>>0)/((h?1:e)>>>0)|0|0)!=(f|0)){c[a>>2]=0;return}if((d+-1&(d|-2147483648)|0)!=0|b>>>0>g>>>0)$i(2280);c[a>>2]=1;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=f;return}function vd(a){a=a|0;y=286299353;return 1890621284}function wd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;f=j;g=b+8|0;i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=c[b>>2]|0;k=ti(b)|0;d=c[b>>2]|0;if(k){d=d|8;c[b>>2]=d;if(!(c[g>>2]|0)){c[g>>2]=1;c[b+12>>2]=10}}c[b>>2]=d|4;c[f>>2]=c[a>>2];k=_h(f,b)|0;c[g>>2]=h;c[g+4>>2]=i;c[b>>2]=e;l=j;return k|0}function xd(a,b){a=a|0;b=b|0;return $h(c[a>>2]|0,b)|0}function yd(a,b){a=a|0;b=b|0;return ci(c[a>>2]|0,b)|0}function zd(a,b){a=a|0;b=b|0;return di(c[a>>2]|0,b)|0}function Ad(a,b){a=a|0;b=b|0;return zi(c[a>>2]|0,c[a+4>>2]|0,b)|0}function Bd(a,b){a=a|0;b=b|0;return bi(c[a>>2]|0,b)|0}function Cd(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Dd(a){a=a|0;Zb(a,12,4);return}function Ed(a,b){a=a|0;b=b|0;return mf(c[a>>2]|0,b)|0}function Fd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;m=c[b>>2]|0;b=d>>>0<65536;if(d>>>0<128){e=m+8|0;b=c[e>>2]|0;if((b|0)==(c[m+4>>2]|0)){Bg(m);b=c[e>>2]|0}a[(c[m>>2]|0)+b>>0]=d;c[e>>2]=(c[e>>2]|0)+1;l=n;return 0}c[k>>2]=0;if(d>>>0<2048){i=31;f=0;g=-64;e=1;b=2}else{if(b){e=15;f=0;g=-32;h=1;j=2;b=3}else{a[k>>0]=d>>>18&255|-16;e=63;f=1;g=-128;h=2;j=3;b=4}a[k+f>>0]=e&d>>>12&255|g;i=63;f=h;g=-128;e=j}a[k+f>>0]=i&d>>>6&255|g;a[k+e>>0]=d&63|-128;j=m+8|0;Cg(m,c[j>>2]|0,b);d=c[j>>2]|0;c[j>>2]=d+b;ok((c[m>>2]|0)+d|0,k|0,b|0)|0;l=n;return 0}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=c[a>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,2672,e)|0;l=d;return b|0}function Hd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=c[a>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,3764,e)|0;l=d;return b|0}function Id(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;f=e+8|0;Cg(e,c[f>>2]|0,d);a=c[f>>2]|0;c[f>>2]=a+d;ok((c[e>>2]|0)+a|0,b|0,d|0)|0;return 0}function Jd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;i=h;b=c[b>>2]|0;qh(i,c[b>>2]|0,d,e);if((a[i>>0]|0)==3){i=0;l=h;return i|0}g=i;f=c[g>>2]|0;g=c[g+4>>2]|0;d=b+4|0;e=f&255;if((a[d>>0]|0)!=3?(n=0,Z(46,d|0),b=n,n=0,b&1):0){b=na()|0;h=d;c[h>>2]=f;c[h+4>>2]=g;if(e<<24>>24!=3)za(b|0);jf(i);za(b|0)}i=d;c[i>>2]=f;c[i+4>>2]=g;i=1;l=h;return i|0}function Kd(a,b){a=a|0;b=b|0;c[a>>2]=0;return}function Ld(a){a=a|0;y=1307671337;return -1091417412}function Md(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+32|0;e=f+8|0;d=f;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];c[e+16>>2]=c[a+16>>2];c[e+20>>2]=c[a+20>>2];rh(d,f+32|0,e);e=c[d+4>>2]|0;switch((c[d>>2]&255)<<24>>24){case 0:case 1:case 3:{l=f;return}default:{}}b=e;d=e;a=b+4|0;n=0;Z(c[c[a>>2]>>2]|0,c[d>>2]|0);g=n;n=0;if(g&1){g=na()|0;Cd(c[d>>2]|0,c[a>>2]|0);Dd(b);za(g|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(b|0)Zb(c[e>>2]|0,b,c[a+8>>2]|0);Zb(e,12,4);l=f;return}function Nd(a){a=a|0;var b=0,d=0;b=l;l=l+32|0;d=b+24|0;c[d>>2]=a;c[d+4>>2]=40;c[b>>2]=2304;c[b+4>>2]=2;c[b+8>>2]=5180;c[b+12>>2]=1;c[b+16>>2]=d;c[b+20>>2]=1;Md(b);Ha()}function Od(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=m+40|0;h=m+24|0;k=m+12|0;g=m+32|0;c[g>>2]=b;c[g+4>>2]=d;Oh(i,6943,4);c[j>>2]=pg(i)|0;n=0;Z(47,3804);d=n;n=0;if(d&1){m=na()|0;Vg(j);za(m|0)}d=c[j>>2]|0;b=i;c[b>>2]=0;c[b+4>>2]=0;c[i+8>>2]=d;lh(3804,i);zh(e,f);c[h>>2]=0;c[j>>2]=0;c[i>>2]=g;if(!(Hh(48,i,h,j)|0)){b=0;d=c[i>>2]|0}else{b=fb[c[600]&7]()|0;if(!b)Ue(10081,57);if((c[b>>2]|0)==1){b=b+4|0;d=c[b>>2]|0}else{d=fb[c[2404>>2]&7]()|0;g=b;c[g>>2]=1;c[g+4>>2]=d;b=b+4|0}d=d+-1|0;a[b>>0]=d;a[b+1>>0]=d>>8;a[b+2>>0]=d>>16;a[b+3>>0]=d>>24;d=c[j>>2]|0;c[k+4>>2]=c[h>>2];b=1}c[k>>2]=b;c[k+4+(b<<2)>>2]=d;do if((c[3956]|0)!=3){a[j>>0]=1;c[i>>2]=j;n=0;ea(6,15824,0,i|0,3084);j=n;n=0;if(!(j&1))break;m=na()|0;Pd(k);za(m|0)}while(0);j=c[k>>2]|0;f=c[k+4>>2]|0;d=c[k+8>>2]|0;e=(j|0)==1?101:f;b=f;if(!j){l=m;return e|0}n=0;Z(c[d>>2]|0,b|0);k=n;n=0;if(k&1){m=na()|0;Qd(b,d);za(m|0)}b=c[d+4>>2]|0;if(!b){l=m;return e|0}Zb(f,b,c[d+8>>2]|0);l=m;return e|0}function Pd(a){a=a|0;var b=0,d=0;if(!(c[a>>2]|0))return;d=a+4|0;a=a+8|0;n=0;Z(c[c[a>>2]>>2]|0,c[d>>2]|0);b=n;n=0;if(b&1){b=na()|0;Qd(c[d>>2]|0,c[a>>2]|0);za(b|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(!b)return;Zb(c[d>>2]|0,b,c[a+8>>2]|0);return}function Qd(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Rd(){return 0}function Sd(a,b){a=a|0;b=b|0;c[a>>2]=6947;c[a+4>>2]=39;return}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+48|0;g=d+40|0;f=d+24|0;e=d;c[g>>2]=6947;c[g+4>>2]=39;c[f>>2]=g;c[f+4>>2]=41;c[f+8>>2]=a;c[f+12>>2]=42;c[e>>2]=2320;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;b=si(b,e)|0;l=d;return b|0}function Ud(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+12|0;h=i+24|0;f=i;c[f>>2]=0;c[f+4>>2]=d;c[f+8>>2]=e;d=$a(43,f|0)|0;switch(d|0){case 9:case 5:case 3:{g=c[f>>2]|0;c[b>>2]=0;h=0;h=b+4+(h<<2)|0;c[h>>2]=g;l=i;return}default:{}}e=Xb(4,4,g)|0;if(!e)Yb(g);c[e>>2]=d;d=Xb(12,4,g)|0;if(!d)Yb(g);c[d>>2]=e;c[d+4>>2]=2696;a[d+8>>0]=16;g=d+9|0;a[g>>0]=a[h>>0]|0;a[g+1>>0]=a[h+1>>0]|0;a[g+2>>0]=a[h+2>>0]|0;c[b>>2]=1;c[b+4>>2]=2;h=1;g=d;h=b+4+(h<<2)|0;c[h>>2]=g;l=i;return}function Vd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;c[d>>2]=0;a=ra(a|0,d|0)|0;a=(((a|0)!=0&(c[d>>2]|0)==0)<<31>>31)+a|0;d=ha(a|0)|0;e=c[b>>2]|0;if(e>>>0>=(c[b+8>>2]|0)>>>0){l=f;return 0}g=c[b+4>>2]|0;c[g+(e<<3)>>2]=a;c[g+(e<<3)+4>>2]=d;c[b>>2]=(c[b>>2]|0)+1;l=f;return 0}function Wd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;g=h;e=h+16|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;do if((Ta(d|0,e|0)|0)!=0?(n=c[e+8>>2]|0,(n|0)!=0):0){e=Hj(n)|0;if((e|0)==-1)kj(-1,0);else{Fi(g,n,e);k=(c[g>>2]|0)==1;i=k?0:c[g+4>>2]|0;j=0;k=k?0:0;m=c[g+8>>2]|0;break}}else{i=0;j=0;k=0;m=0}while(0);o=c[f>>2]|0;n=c[f+12>>2]|0;p=c[o>>2]|0;o=c[o+4>>2]|0;e=c[c[f+4>>2]>>2]|0;f=c[c[f+8>>2]>>2]|0;d=c[f>>2]|0;f=c[f+4>>2]|0;q=g;c[q>>2]=i|j;c[q+4>>2]=k|m;xg(b,p,o,e,d,f,g,a[n>>0]|0);l=h;return}function Xd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=l;l=l+96|0;j=P;O=P+80|0;e=P+64|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;if(!(Ta(d|0,e|0)|0)){a[b>>0]=3;l=P;return}e=c[e+8>>2]|0;if(!e){a[b>>0]=3;l=P;return}g=Hj(e)|0;if((g|0)==-1)kj(-1,0);Fi(j,e,g);e=c[j+4>>2]|0;g=c[j+8>>2]|0;if((c[j>>2]|0)==1|(e|0)==0){a[b>>0]=3;l=P;return}Ni(j,e,g,6988,28);D=c[j>>2]|0;do if((D|0)==1){e=j+8|0;g=c[j+48>>2]|0;d=c[j+52>>2]|0;h=c[j+56>>2]|0;i=c[j+60>>2]|0;if((c[j+36>>2]|0)==-1){Yd(O,e,g,d,h,i,1);break}else{Yd(O,e,g,d,h,i,0);break}}else{M=j+28|0;E=j+48|0;F=j+52|0;N=j+36|0;G=j+56|0;H=j+60|0;I=j+8|0;J=j+16|0;K=j+24|0;L=j+12|0;C=j+4|0;e=0;a:while(1){if((e|0)==1){B=c[F>>2]|0;h=c[E>>2]|0;q=c[G>>2]|0;z=c[H>>2]|0;r=z+-1|0;t=I;s=c[t>>2]|0;t=c[t+4>>2]|0;u=c[J>>2]|0;d=c[K>>2]|0;v=z-d|0;g=c[M>>2]|0;i=c[N>>2]|0;if((g|0)==(B|0)){d=61;break}A=(i|0)==-1;j=r+g|0;b:do if(j>>>0>>0){e=z+g|0;w=e+r|0;x=w>>>0>>0;m=d+g|0;n=m+r|0;o=n>>>0>>0;p=g+1-u|0;d=g;while(1){c:while(1){while(1){if((g|0)!=(d|0)){g=i;break b}k=nk(1,0,a[h+j>>0]&63|0)|0;if(!((k&s|0)==0&(y&t|0)==0))break;i=A?i:0;if(x){d=e;j=w}else{d=B;g=i;break b}}d=A?u:i>>>0>=u>>>0?i:u;while(1){if(d>>>0>=z>>>0)break c;if(d>>>0>4294967294)break c;j=d+g|0;if(j>>>0>=B>>>0){d=45;break a}if((a[q+d>>0]|0)==(a[h+j>>0]|0))d=d+1|0;else break}d=p+d|0;i=A?i:0;j=d+r|0;if(j>>>0>=B>>>0){d=B;g=i;break b}}d=A?0:i;j=u;do{k=j;j=j+-1|0;if(d>>>0>=k>>>0){d=49;break a}if(j>>>0>=z>>>0){d=56;break a}k=j+g|0;if(k>>>0>=B>>>0){d=52;break a}}while((a[q+j>>0]|0)==(a[h+k>>0]|0));i=A?i:v;if(o){d=m;j=n}else{d=B;g=i;break}}}else{d=B;g=i}while(0);d:do if((d|0)==0|(B|0)==(d|0))e=d;else{e=d;do{if(B>>>0>e>>>0?(a[h+e>>0]|0)>-65:0)break d;e=e+1|0}while(!((e|0)==0|(B|0)==(e|0)))}while(0);c[M>>2]=d>>>0>=e>>>0?d:e;c[N>>2]=g;g=B}else{g=c[F>>2]|0;h=c[E>>2]|0}k=(a[L>>0]|0)!=0;a[L>>0]=(k^1)&1;m=c[C>>2]|0;if(!((m|0)==0|(g|0)==(m|0))){if(g>>>0<=m>>>0){d=13;break}e=h+m|0;if((a[e>>0]|0)<=-65){d=13;break}}else e=h+m|0;j=h+m+(g-m)|0;B=(e|0)==(j|0);g=B?e:h+m+1|0;do if(!B){h=a[e>>0]|0;if(h<<24>>24>-1){e=h&255;break}i=h&31;if((g|0)==(j|0)){e=0;d=j}else{e=a[g>>0]&63;d=g+1|0}g=e&255;e=g|i<<6;if((h&255)>223){if((d|0)==(j|0)){e=0;d=j}else{e=a[d>>0]&63;d=d+1|0}g=e&255|g<<6;e=g|i<<12;if((h&255)>239){if((d|0)==(j|0))e=0;else e=a[d>>0]&63;e=g<<6|i<<18&1835008|e&255}}}else e=1114112;while(0);if(k){g=m;e=m;d=63;break}if((e|0)==1114112){d=62;break}c[C>>2]=(e>>>0<128?1:e>>>0<2048?2:e>>>0<65536?3:4)+m;e=D}if((d|0)==13)Ii(h,g,m,g);else if((d|0)==45)bj(2336,j,B);else if((d|0)==49){c[N>>2]=i;c[M>>2]=e;if(A)d=63;else{c[N>>2]=0;d=63}}else if((d|0)==52)bj(2336,k,B);else if((d|0)==56)bj(2352,j,z);else if((d|0)==61){c[M>>2]=B;d=62}if((d|0)==62){c[O>>2]=0;break}else if((d|0)==63){c[O>>2]=1;c[O+4>>2]=g;c[O+8>>2]=e;break}}while(0);if((c[O>>2]|0)!=1){a[b>>0]=3;l=P;return}a[f>>0]=1;a[b>>0]=3;l=P;return}function Yd(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=d+20|0;r=h+-1|0;k=c[t>>2]|0;j=k+r|0;a:do if(j>>>0>>0){s=d+28|0;p=d;o=c[p>>2]|0;p=c[p+4>>2]|0;q=c[d+8>>2]|0;m=c[d+16>>2]|0;n=h-m|0;d=k;b:while(1){c:while(1){l=d;while(1){k=nk(1,0,a[e+j>>0]&63|0)|0;if(!((k&o|0)==0&(y&p|0)==0))break;d=l+h|0;c[t>>2]=d;if(!i)c[s>>2]=0;j=d+r|0;if(j>>>0>=f>>>0)break a;else l=d}if(i)d=q;else{d=c[s>>2]|0;d=d>>>0>=q>>>0?d:q}do{if(d>>>0>=h>>>0)break c;j=d;d=d+1|0;if(j>>>0>4294967294)break c;k=l+j|0;if(k>>>0>=f>>>0){d=17;break b}}while((a[g+j>>0]|0)==(a[e+k>>0]|0));d=d+l-q|0;c[t>>2]=d;if(!i)c[s>>2]=0;j=d+r|0;if(j>>>0>=f>>>0)break a}d=i?0:c[s>>2]|0;j=q;do{k=j;j=j+-1|0;if(d>>>0>=k>>>0){d=23;break b}if(j>>>0>=h>>>0){d=33;break b}k=j+l|0;if(k>>>0>=f>>>0){d=26;break b}}while((a[g+j>>0]|0)==(a[e+k>>0]|0));d=m+l|0;c[t>>2]=d;if(!i)c[s>>2]=n;j=d+r|0;if(j>>>0>=f>>>0)break a}if((d|0)==17)bj(2336,k,f);else if((d|0)==23){d=l+h|0;c[t>>2]=d;if(!i)c[s>>2]=0;c[b>>2]=1;c[b+4>>2]=l;c[b+8>>2]=d;return}else if((d|0)==26)bj(2336,k,f);else if((d|0)==33)bj(2352,j,h)}while(0);c[t>>2]=f;c[b>>2]=0;return}function Zd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+12|0;e=d;vi(e,b,7086,11);c[f>>2]=a;Si(e,f,2368)|0;b=Ti(e)|0;l=d;return b|0}function _d(a){a=a|0;return}function $d(a,b){a=a|0;b=b|0;return Mh(c[a>>2]|0,b)|0}function ae(a,b){a=a|0;b=b|0;return Lf(c[a>>2]|0,c[a+4>>2]|0,b)|0}function be(a){a=a|0;return}function ce(){var a=0,b=0,d=0,e=0;e=l;l=l+16|0;b=e;a=c[602]|0;if(!a)a=_g(2408)|0;a=Ca(a|0)|0;switch(a|0){case 0:{d=Xb(12,4,b)|0;if(!d)Yb(b);c[d>>2]=2408;b=d+4|0;a=b;c[a>>2]=0;c[a+4>>2]=0;a=c[602]|0;if(!a)a=_g(2408)|0;Sa(a|0,d|0)|0;d=b;l=e;return d|0}case 1:{d=0;l=e;return d|0}default:{d=a+4|0;l=e;return d|0}}return 0}function de(){return 0}function ee(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;d=g;c[d>>2]=a;f=c[a>>2]|0;b=c[f>>2]|0;if(!b){n=0;b=$(11,f|0)|0;h=n;n=0;if(h&1){na()|0;fe(d);Za()}else e=b}else e=b;Sa(e|0,1)|0;Zb(a,12,4);b=c[f>>2]|0;if(b|0){h=b;Sa(h|0,0)|0;l=g;return}n=0;b=$(11,f|0)|0;h=n;n=0;if(!(h&1)){h=b;Sa(h|0,0)|0;l=g;return}na()|0;Za()}function fe(a){a=a|0;Zb(c[a>>2]|0,12,4);return}function ge(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function he(a){a=a|0;return}function ie(a){a=a|0;var b=0,d=0;b=a+4|0;n=0;Z(c[c[b>>2]>>2]|0,c[a>>2]|0);d=n;n=0;if(d&1){d=na()|0;je(c[a>>2]|0,c[b>>2]|0);za(d|0)}b=c[b>>2]|0;d=c[b+4>>2]|0;if(!d)return;Zb(c[a>>2]|0,d,c[b+8>>2]|0);return}function je(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function ke(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function le(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;b=c[a>>2]|0;if(!b)b=_g(a)|0;b=Ca(b|0)|0;switch(b|0){case 0:{d=Xb(20,4,e)|0;if(!d)Yb(e);c[d>>2]=a;c[d+8>>2]=3;b=c[a>>2]|0;if(!b)b=_g(a)|0;Sa(b|0,d|0)|0;a=d+4|0;l=f;return a|0}case 1:{a=0;l=f;return a|0}default:{a=b+4|0;l=f;return a|0}}return 0}function me(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;d=f;b=c[a>>2]|0;if(!b)b=_g(a)|0;b=Ca(b|0)|0;switch(b|0){case 0:{e=Xb(20,4,d)|0;if(!e)Yb(d);c[e>>2]=a;d=e+4|0;c[d>>2]=0;b=c[a>>2]|0;if(!b)b=_g(a)|0;Sa(b|0,e|0)|0;a=d;l=f;return a|0}case 1:{a=0;l=f;return a|0}default:{a=b+4|0;l=f;return a|0}}return 0}function ne(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;d=h+4|0;f=h;c[f>>2]=a;g=c[a>>2]|0;b=c[g>>2]|0;if(!b){n=0;b=$(11,g|0)|0;i=n;n=0;if(i&1){na()|0;oe(f);Za()}else e=b}else e=b;Sa(e|0,1)|0;c[d>>2]=a;n=0;Z(49,d|0);i=n;n=0;if(!(i&1)){a=c[g>>2]|0;if(a|0){i=a;Sa(i|0,0)|0;l=h;return}n=0;a=$(11,g|0)|0;i=n;n=0;if(!(i&1)){i=a;Sa(i|0,0)|0;l=h;return}}na()|0;Za()}function oe(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(c[b+4>>2]|0?(e=b+12|0,d=c[e>>2]|0,d|0):0){b=b+16|0;n=0;Z(c[c[b>>2]>>2]|0,d|0);d=n;n=0;if(d&1){d=na()|0;pe(c[e>>2]|0,c[b>>2]|0);qe(c[a>>2]|0);za(d|0)}b=c[b>>2]|0;d=c[b+4>>2]|0;if(d|0)Zb(c[e>>2]|0,d,c[b+8>>2]|0)}Zb(c[a>>2]|0,20,4);return}function pe(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function qe(a){a=a|0;Zb(a,20,4);return}function re(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;d=h;c[d>>2]=a;g=c[a>>2]|0;b=c[g>>2]|0;if(!b){n=0;b=$(11,g|0)|0;i=n;n=0;if(i&1){na()|0;te(d);Za()}else f=b}else f=b;Sa(f|0,1)|0;if(((c[a+8>>2]&2|0)==0?(e=a+16|0,f=c[e>>2]|0,i=c[f>>2]|0,c[f>>2]=i-1,(i|0)==1):0)?(n=0,Z(50,e|0),i=n,n=0,i&1):0){na()|0;se(a);Za()}Zb(a,20,4);b=c[g>>2]|0;if(b|0){i=b;Sa(i|0,0)|0;l=h;return}n=0;b=$(11,g|0)|0;i=n;n=0;if(!(i&1)){i=b;Sa(i|0,0)|0;l=h;return}na()|0;Za()}function se(a){a=a|0;Zb(a,20,4);return}function te(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(((c[b+8>>2]&2|0)==0?(d=b+16|0,e=c[d>>2]|0,b=c[e>>2]|0,c[e>>2]=b-1,(b|0)==1):0)?(n=0,Z(50,d|0),e=n,n=0,e&1):0){e=na()|0;se(c[a>>2]|0);za(e|0)}Zb(c[a>>2]|0,20,4);return}function ue(a){a=a|0;return a|0}function ve(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=Xb(8,4,e)|0;if(!f)Yb(e);else{c[f>>2]=a;c[f+4>>2]=b;ye(f,2432,d)}}function we(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e+16|0;c[e>>2]=1;c[e+4>>2]=0;c[e+8>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[d+16>>2]=c[a+16>>2];c[d+20>>2]=c[a+20>>2];n=0;ca(44,e|0,d|0)|0;a=n;n=0;if(a&1){d=na()|0;ge(e);za(d|0)}else{c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];xe(d,b)}}function xe(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+32|0;d=e+12|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];a=Xb(12,4,d)|0;if(!a)Yb(d);else{c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];ye(a,2416,b)}}function ye(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0;r=l;l=l+80|0;p=r+56|0;q=r+32|0;k=r+8|0;c[r>>2]=b;c[r+4>>2]=d;m=c[e>>2]|0;i=c[e+4>>2]|0;j=c[e+8>>2]|0;f=c[e+12>>2]|0;g=b;h=d;n=0;e=Y(1)|0;t=n;n=0;a:do if(!(t&1)){if(!e){n=0;_(22,10081,57);n=0;break}if((c[e>>2]|0)==1){t=e+4|0;e=(c[t>>2]|0)+1|0;c[t>>2]=e;if(e>>>0>2){c[k>>2]=2504;c[k+4>>2]=1;c[k+8>>2]=0;c[k+16>>2]=15892;c[k+20>>2]=0;n=0;Z(51,k|0);t=n;n=0;if(t&1)break;Za()}else s=e}else{s=e;c[s>>2]=1;c[s+4>>2]=0;c[e+4>>2]=1;s=1}c[q>>2]=g;c[q+4>>2]=h;c[q+8>>2]=m;c[q+12>>2]=i;c[q+16>>2]=j;c[q+20>>2]=f;e=ya(15608)|0;switch(e|0){case 11:{n=0;aa(21,7225,36,2472);n=0;break a}case 35:break;default:o=9}do if((o|0)==9){if(a[15644]|0){if(e|0)break;ma(15608)|0;break}c[3910]=(c[3910]|0)+1;e=c[3913]|0;if(!e){n=0;Z(52,q|0);t=n;n=0;if(t&1)break a}else{n=0;_(c[e+12>>2]|0,c[3912]|0,q|0);t=n;n=0;if(t&1)break a}c[3910]=(c[3910]|0)-1;ma(15608)|0;if(s>>>0<=1)Ae(b,d);c[p>>2]=2512;c[p+4>>2]=1;c[p+8>>2]=0;c[p+16>>2]=15892;c[p+20>>2]=0;n=0;Z(51,p|0);t=n;n=0;if(t&1)break a;Za()}while(0);n=0;aa(21,7261,41,2488);n=0}while(0);t=na()|0;ie(r);za(t|0)}function ze(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;z=l;l=l+112|0;w=z+88|0;u=z+80|0;A=z;v=z+56|0;m=z+48|0;x=z+40|0;t=z+97|0;p=z+32|0;q=z+28|0;i=z+24|0;j=z+16|0;k=z+96|0;e=ce()|0;if(!e)Ue(10081,57);if((c[e>>2]|0)==1)if((c[e+4>>2]|0)>>>0>1)e=2;else s=7;else{s=e;c[s>>2]=1;c[s+4>>2]=0;c[e+4>>2]=0;s=7}if((s|0)==7)e=wg()|0;a[k>>0]=e;f=c[b+12>>2]|0;c[j>>2]=c[b+8>>2];c[j+4>>2]=f;c[i>>2]=c[b+16>>2];c[q>>2]=c[b+20>>2];f=c[b>>2]|0;e=c[(c[b+4>>2]|0)+12>>2]|0;b=ib[e&15](f)|0;if((b|0)==1890621284&(y|0)==286299353){e=c[f+4>>2]|0;c[p>>2]=c[f>>2]}else{b=ib[e&15](f)|0;if((b|0)==2033335871&(y|0)==160875347){e=c[f+8>>2]|0;b=c[f>>2]|0}else{e=8;b=7345}c[p>>2]=b}c[p+4>>2]=e;a[t>>0]=1;e=ph(3804)|0;c[x>>2]=e;a:do if(!e){o=0;h=0;g=0;s=20}else{e=e+16|0;f=(c[e>>2]|0)==0;e=f?0:e;do if(!f){f=c[e+4>>2]|0;b=f+-1|0;if(!f){n=0;_(14,b|0,0);n=0;break a}else{e=c[e>>2]|0;break}}else{b=0;e=0}while(0);o=e;h=e;g=b;s=20}while(0);do if((s|0)==20?(r=(o|0)==0,c[m>>2]=r?7353:h,c[m+4>>2]=r?9:g,c[v>>2]=m,c[v+4>>2]=p,c[v+8>>2]=j,c[v+12>>2]=i,c[v+16>>2]=q,c[v+20>>2]=k,n=0,r=$(12,2520)|0,s=n,n=0,!(s&1)):0){if(!r){n=0;_(22,10081,57);n=0;break}if((c[r>>2]|0)!=1){n=0;e=ca(45,2528,r|0)|0;s=n;n=0;if(s&1)break}else e=r+4|0;if(c[e>>2]|0){n=0;_(23,9967,16);n=0;break}b=e+4|0;h=b;g=h;g=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24;h=h+4|0;h=d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;e=(a[t>>0]|0)==1?t+1|0:0;b=A;c[b>>2]=g;c[b+4>>2]=h;b=A+8|0;c[b>>2]=e;f=h;do if(!g)if((e|0)!=0?(n=0,aa(22,v|0,b|0,2536),w=n,n=0,w&1):0){e=na()|0;b=1;s=30}else{f=1;s=41}else{c[u>>2]=g;c[u+4>>2]=f;n=0;aa(22,v|0,g|0,f|0);v=n;n=0;if(v&1){e=na()|0;De(u);b=0;s=30;break}c[w>>2]=g;c[w+4>>2]=h;n=0;_(24,2528,w|0);v=n;n=0;if(v&1){e=na()|0;Ee(w);b=0;s=30;break}f=c[w>>2]|0;if(f|0){e=c[w+4>>2]|0;n=0;Z(c[e>>2]|0,f|0);w=n;n=0;if(w&1){s=na()|0;pe(f,e);b=0;e=s;s=30;break}b=c[e+4>>2]|0;if(b|0)Zb(f,b,c[e+8>>2]|0)}f=0;s=41}while(0);do if((s|0)==30)Be(x);else if((s|0)==41){e=c[x>>2]|0;if((e|0?(w=c[e>>2]|0,c[e>>2]=w-1,(w|0)==1):0)?(n=0,Z(50,x|0),x=n,n=0,x&1):0){e=na()|0;b=f<<24>>24!=0;break}b=c[A>>2]|0;if(f<<24>>24==0|(b|0)==0){l=z;return}e=A+4|0;n=0;Z(c[c[e>>2]>>2]|0,b|0);x=n;n=0;if(x&1){z=na()|0;pe(c[A>>2]|0,c[e>>2]|0);za(z|0)}e=c[e>>2]|0;b=c[e+4>>2]|0;if(!b){l=z;return}Zb(c[A>>2]|0,b,c[e+8>>2]|0);l=z;return}while(0);if(!(c[A>>2]|0)){Ee(A);A=e;za(A|0)}if(!b){A=e;za(A|0)}De(A);A=e;za(A|0)}while(0);A=na()|0;Be(x);za(A|0)}function Ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+48|0;e=f+32|0;d=f+8|0;c[f>>2]=Ih(a,b)|0;c[e>>2]=f;c[e+4>>2]=46;c[d>>2]=2448;c[d+4>>2]=1;c[d+8>>2]=5180;c[d+12>>2]=1;c[d+16>>2]=e;c[d+20>>2]=1;Nd(d)}function Be(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)return;d=c[b>>2]|0;c[b>>2]=d-1;if((d|0)!=1)return;Te(a);return}function Ce(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0;m=l;l=l+80|0;i=m+32|0;k=m+8|0;f=m;o=c[b+4>>2]|0;g=c[b+8>>2]|0;h=c[b+12>>2]|0;j=c[b+16>>2]|0;c[i>>2]=c[b>>2];c[i+4>>2]=41;c[i+8>>2]=o;c[i+12>>2]=41;c[i+16>>2]=g;c[i+20>>2]=41;c[i+24>>2]=h;c[i+28>>2]=46;c[i+32>>2]=j;c[i+36>>2]=46;c[k>>2]=2568;c[k+4>>2]=6;c[k+8>>2]=4840;c[k+12>>2]=5;c[k+16>>2]=i;c[k+20>>2]=5;j=c[e+24>>2]|0;jb[j&31](f,d,k);switch(a[f>>0]&3){case 0:case 1:case 3:break;default:{h=c[f+4>>2]|0;f=h+4|0;n=0;Z(c[c[f>>2]>>2]|0,c[h>>2]|0);o=n;n=0;if(o&1){o=na()|0;Fe(c[h>>2]|0,c[f>>2]|0);Ge(h);za(o|0)}f=c[f>>2]|0;g=c[f+4>>2]|0;if(g|0)Zb(c[h>>2]|0,g,c[f+8>>2]|0);Zb(h,12,4)}}f=a[c[b+20>>2]>>0]|0;if(f<<24>>24!=4){tg(i,d,e,f);switch(a[i>>0]&3){case 0:case 1:case 3:break;default:{h=c[i+4>>2]|0;f=h+4|0;n=0;Z(c[c[f>>2]>>2]|0,c[h>>2]|0);o=n;n=0;if(o&1){o=na()|0;Fe(c[h>>2]|0,c[f>>2]|0);Ge(h);za(o|0)}f=c[f>>2]|0;g=c[f+4>>2]|0;if(g|0)Zb(c[h>>2]|0,g,c[f+8>>2]|0);Zb(h,12,4)}}l=m;return}f=a[7362]|0;if(f<<24>>24==1)a[7362]=0;if(!(f<<24>>24)){l=m;return}c[i>>2]=2616;c[i+4>>2]=1;c[i+8>>2]=0;c[i+16>>2]=15892;c[i+20>>2]=0;jb[j&31](k,d,i);switch(a[k>>0]&3){case 0:case 1:case 3:break;default:{h=c[k+4>>2]|0;f=h+4|0;n=0;Z(c[c[f>>2]>>2]|0,c[h>>2]|0);o=n;n=0;if(o&1){o=na()|0;Fe(c[h>>2]|0,c[f>>2]|0);Ge(h);za(o|0)}f=c[f>>2]|0;g=c[f+4>>2]|0;if(g|0)Zb(c[h>>2]|0,g,c[f+8>>2]|0);Zb(h,12,4)}}l=m;return}function De(a){a=a|0;var b=0,d=0;b=a+4|0;n=0;Z(c[c[b>>2]>>2]|0,c[a>>2]|0);d=n;n=0;if(d&1){d=na()|0;pe(c[a>>2]|0,c[b>>2]|0);za(d|0)}b=c[b>>2]|0;d=c[b+4>>2]|0;if(!d)return;Zb(c[a>>2]|0,d,c[b+8>>2]|0);return}function Ee(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)return;d=a+4|0;n=0;Z(c[c[d>>2]>>2]|0,b|0);b=n;n=0;if(b&1){b=na()|0;pe(c[a>>2]|0,c[d>>2]|0);za(b|0)}d=c[d>>2]|0;b=c[d+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,c[d+8>>2]|0);return}function Fe(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Ge(a){a=a|0;Zb(a,12,4);return}function He(a){a=a|0;return}function Ie(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=dk(2,d,(e|0)>-1?e:2147483647)|0;if((b|0)==-1){e=1;b=0;d=c[(Bj()|0)>>2]|0}else{e=0;d=0}c[a>>2]=e;a=a+4|0;c[a>>2]=b;c[a+4>>2]=d;return}function Je(b,c){b=b|0;c=c|0;a[b>>0]=3;return}function Ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;qh(a,c[b>>2]|0,d,e);return}function Le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+32|0;f=e;b=c[b>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];c[f+20>>2]=c[d+20>>2];rh(a,b,f);l=e;return}function Me(){return me(2520)|0}function Ne(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function Oe(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=vg(c[b>>2]|0,c[b+4>>2]|0)|0;return}function Pe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+16|0;g=c[b+4>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=g;c[f+8>>2]=d;c[f+12>>2]=e;we(a,f)}function Qe(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+160|0;g=j;h=j+8|0;i=j+24|0;e=i;f=e+128|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));if((ck(d,i,128)|0)<0)ve(7207,18,2456);d=Hj(i)|0;if((d|0)==-1)kj(-1,0);Fi(h,i,d);if((c[h>>2]|0)==1){h=h+4|0;i=c[h+4>>2]|0;j=g;c[j>>2]=c[h>>2];c[j+4>>2]=i;bf(7097,43,g)}else{Oh(b,c[h+4>>2]|0,c[h+8>>2]|0);l=j;return}}function Re(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0;r=l;l=l+80|0;f=r;m=r+56|0;p=r+44|0;i=r+8|0;j=r+24|0;s=r+16|0;Kg(p,d,e);e=c[p>>2]|0;d=Lj(e,0,c[p+8>>2]|0)|0;if(!d){c[m>>2]=c[p>>2];c[m+4>>2]=c[p+4>>2];c[m+8>>2]=c[p+8>>2];Df(f,m);g=0;h=c[f>>2]|0;e=c[f+4>>2]|0;d=0;f=0}else{f=p+4|0;g=1;h=d-e|0;d=c[f>>2]|0;f=c[f+4>>2]|0}c[j>>2]=g;c[j+4>>2]=h;c[j+8>>2]=e;k=j+12|0;c[k>>2]=d;c[k+4>>2]=f;k=h;if((g|0)==1){s=j+4|0;c[m>>2]=c[s>>2];c[m+4>>2]=c[s+4>>2];c[m+8>>2]=c[s+8>>2];c[m+12>>2]=c[s+12>>2];n=0;_(25,i|0,m|0);s=n;n=0;if(s&1){s=na()|0;za(s|0)}else{q=i;p=c[q>>2]|0;q=c[q+4>>2]|0;c[b>>2]=1;s=b+4|0;c[s>>2]=p;c[s+4>>2]=q;l=r;return}}c[s>>2]=h;i=s+4|0;c[i>>2]=e;ik(15656)|0;f=Ka(h|0)|0;a:do if(!f){d=0;e=0;f=0}else{g=Hj(f)|0;do if((g|0)!=-1){if((g|0)<0){n=0;Z(44,3740);n=0;q=25;break}if(g){d=Xb(g,1,m)|0;if(!d){c[m>>2]=0;Yb(m)}else o=d}else o=1;c[p>>2]=o;d=p+4|0;c[d>>2]=g;e=p+8|0;c[e>>2]=0;n=0;aa(23,p|0,0,g|0);o=n;n=0;if(o&1){d=na()|0;n=0;Z(53,p|0);r=n;n=0;if(r&1){q=25;break}else break}else{q=c[e>>2]|0;c[e>>2]=q+g;ok((c[p>>2]|0)+q|0,f|0,g|0)|0;f=d;d=c[p>>2]|0;e=c[f>>2]|0;f=c[f+4>>2]|0;break a}}else{n=0;_(14,-1,0);n=0;q=25}while(0);if((q|0)==25)d=na()|0;Se(s);s=d;za(s|0)}while(0);mk(15656)|0;c[b>>2]=0;c[b+4>>2]=d;d=b+8|0;c[d>>2]=e;c[d+4>>2]=f;a[k>>0]=0;d=c[i>>2]|0;if(d|0)Zb(c[s>>2]|0,d,1);l=r;return}function Se(b){b=b|0;var d=0;a[c[b>>2]>>0]=0;d=c[b+4>>2]|0;if(!d)return;Zb(c[b>>2]|0,d,1);return}function Te(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b>>2]|0;e=d+16|0;f=c[e>>2]|0;if(f|0?(a[f>>0]=0,g=c[d+20>>2]|0,g|0):0)Zb(c[e>>2]|0,g,1);f=d+28|0;Ga(c[f>>2]|0)|0;Zb(c[f>>2]|0,28,4);f=d+36|0;Ya(c[f>>2]|0)|0;Zb(c[f>>2]|0,48,4);f=(c[b>>2]|0)+4|0;g=c[f>>2]|0;c[f>>2]=g-1;if((g|0)!=1)return;Zb(d,48,8);return}function Ue(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+48|0;e=f+32|0;d=f+8|0;g=f;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=g;c[e+4>>2]=41;c[e+8>>2]=f+48;c[e+12>>2]=47;c[d>>2]=2624;c[d+4>>2]=2;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=e;c[d+20>>2]=2;aj(d,2640)}function Ve(b){b=b|0;var d=0,e=0,f=0,g=0;e=(c[b>>2]|0)+4|0;if(!(a[b+4>>0]|0)){d=fb[c[600]&7]()|0;if(!d)Ue(10081,57);if((c[d>>2]|0)==1){d=d+4|0;f=c[d>>2]|0}else{f=fb[c[2404>>2]&7]()|0;g=d;c[g>>2]=1;c[g+4>>2]=f;d=d+4|0}a[d>>0]=f;a[d+1>>0]=f>>8;a[d+2>>0]=f>>16;a[d+3>>0]=f>>24;if(f|0)a[e>>0]=1}mk(c[c[b>>2]>>2]|0)|0;return}function We(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(!b)return;Zb(c[a+4>>2]|0,b,1);return}function Xe(b){b=b|0;var d=0,e=0,f=0,g=0;e=(c[b>>2]|0)+4|0;if(!(a[b+4>>0]|0)){d=fb[c[600]&7]()|0;if(!d)Ue(10081,57);if((c[d>>2]|0)==1){d=d+4|0;f=c[d>>2]|0}else{f=fb[c[2404>>2]&7]()|0;g=d;c[g>>2]=1;c[g+4>>2]=f;d=d+4|0}a[d>>0]=f;a[d+1>>0]=f>>8;a[d+2>>0]=f>>16;a[d+3>>0]=f>>24;if(f|0)a[e>>0]=1}mk(c[c[b>>2]>>2]|0)|0;return}function Ye(a){a=a|0;Ya(c[a>>2]|0)|0;Zb(c[a>>2]|0,48,4);return}function Ze(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+64|0;g=i+32|0;f=i+8|0;h=i+48|0;c[i>>2]=b;c[i+4>>2]=d;a[h>>0]=e;c[g>>2]=i;c[g+4>>2]=41;c[g+8>>2]=h;c[g+12>>2]=48;c[f>>2]=2624;c[f+4>>2]=2;c[f+8>>2]=5264;c[f+12>>2]=2;c[f+16>>2]=g;c[f+20>>2]=2;aj(f,2640)}function _e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+48|0;e=f+32|0;d=f+8|0;g=f;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=g;c[e+4>>2]=41;c[e+8>>2]=f+48;c[e+12>>2]=49;c[d>>2]=2624;c[d+4>>2]=2;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=e;c[d+20>>2]=2;aj(d,2640)}function $e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+48|0;e=f+32|0;d=f+8|0;g=f;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=g;c[e+4>>2]=41;c[e+8>>2]=f+48;c[e+12>>2]=50;c[d>>2]=2624;c[d+4>>2]=2;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=e;c[d+20>>2]=2;aj(d,2640)}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+48|0;f=g+32|0;e=g+8|0;c[g>>2]=a;c[g+4>>2]=b;c[f>>2]=g;c[f+4>>2]=41;c[f+8>>2]=d;c[f+12>>2]=51;c[e>>2]=2624;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;n=0;_(9,e|0,2640);n=0;b=na()|0;We(d);za(b|0)}function bf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+48|0;f=g+32|0;e=g+8|0;c[g>>2]=a;c[g+4>>2]=b;c[f>>2]=g;c[f+4>>2]=41;c[f+8>>2]=d;c[f+12>>2]=37;c[e>>2]=2624;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;aj(e,2640)}function cf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+40|0;h=j+16|0;g=j+8|0;c[j>>2]=b;c[j+4>>2]=d;c[g>>2]=e;a[g+4>>0]=f&1;c[i>>2]=j;c[i+4>>2]=41;c[i+8>>2]=g;c[i+12>>2]=52;c[h>>2]=2624;c[h+4>>2]=2;c[h+8>>2]=5264;c[h+12>>2]=2;c[h+16>>2]=i;c[h+20>>2]=2;n=0;_(9,h|0,2640);n=0;f=na()|0;Xe(g);za(f|0)}function df(a){a=a|0;return}function ef(a){a=a|0;return}function ff(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function gf(a){a=a|0;return}function hf(a){a=a|0;var b=0,e=0,f=0;if((d[a>>0]|0)<2)return;e=a+4|0;f=c[e>>2]|0;a=f+4|0;n=0;Z(c[c[a>>2]>>2]|0,c[f>>2]|0);b=n;n=0;if(b&1){b=na()|0;kf(c[f>>2]|0,c[a>>2]|0);lf(c[e>>2]|0);za(b|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(b|0)Zb(c[f>>2]|0,b,c[a+8>>2]|0);Zb(c[e>>2]|0,12,4);return}function jf(b){b=b|0;if((a[b>>0]|0)==3)return;hf(b);return}function kf(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function lf(a){a=a|0;Zb(a,12,4);return}function mf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;m=k;j=k+8|0;c[j>>2]=0;if(d>>>0<128){a[j>>0]=d;e=1}else{do if(d>>>0>=2048)if(d>>>0<65536){a[j>>0]=d>>>12&15|-32;f=63;g=1;h=-128;i=2;e=3;break}else{a[j>>0]=d>>>18&255|-16;a[j+1>>0]=d>>>12&63|-128;f=63;g=2;h=-128;i=3;e=4;break}else{f=31;g=0;h=-64;i=1;e=2}while(0);a[j+g>>0]=f&d>>>6&255|h;a[j+i>>0]=d&63|-128}qh(m,c[b>>2]|0,j,e);if((a[m>>0]|0)==3){m=0;l=k;return m|0}h=m;g=c[h>>2]|0;h=c[h+4>>2]|0;d=b+4|0;f=g&255;if((a[d>>0]|0)!=3?(n=0,Z(46,d|0),b=n,n=0,b&1):0){e=na()|0;k=d;c[k>>2]=g;c[k+4>>2]=h;if(f<<24>>24!=3)za(e|0);jf(m);za(e|0)}m=d;c[m>>2]=g;c[m+4>>2]=h;m=1;l=k;return m|0}function nf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=a;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,2672,e)|0;l=d;return b|0}function of(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(!b)return;Zb(c[a+4>>2]|0,b,1);return}function pf(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function qf(a){a=a|0;return}function rf(a,b){a=a|0;b=b|0;return sf(c[a>>2]|0,b)|0}function sf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+32|0;g=h+8|0;e=h;f=h+20|0;switch(a[b>>0]&3){case 0:{f=b+4|0;ui(e,d,7824,2);b=Qi(e,7826,4,f,2760)|0;Qe(g,c[f>>2]|0);n=0;b=da(1,b|0,7830,7,g|0,2816)|0;f=n;n=0;if(f&1){h=na()|0;tf(g);za(h|0)}n=0;b=$(13,b|0)|0;f=n;n=0;if(f&1){h=na()|0;tf(g);za(h|0)}d=c[g+4>>2]|0;if(d|0)Zb(c[g>>2]|0,d,1);g=b;l=h;return g|0}case 1:{a[f>>0]=a[b+1>>0]|0;vi(g,d,7837,4);g=Ti(Si(g,f,2832)|0)|0;l=h;return g|0}case 2:{vi(g,d,7841,6);g=Ti(Si(g,b+4|0,2848)|0)|0;l=h;return g|0}default:{}}return 0}function tf(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function uf(a){a=a|0;var b=0,d=0,e=0;e=c[a>>2]|0;b=e+4|0;n=0;Z(c[c[b>>2]>>2]|0,c[e>>2]|0);d=n;n=0;if(d&1){d=na()|0;kf(c[e>>2]|0,c[b>>2]|0);lf(c[a>>2]|0);za(d|0)}d=c[b>>2]|0;b=c[d+4>>2]|0;if(!b){e=c[a>>2]|0;Zb(e,12,4);return}Zb(c[e>>2]|0,b,c[d+8>>2]|0);e=c[a>>2]|0;Zb(e,12,4);return}function vf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+8|0;e=d;a=c[a>>2]|0;ui(e,b,7841,6);c[f>>2]=a+8;Qi(e,7847,4,f,2864)|0;c[f>>2]=a;Qi(e,7851,5,f,2880)|0;b=Ri(e)|0;l=d;return b|0}function wf(a){a=a|0;return}function xf(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return lb[c[(c[a+4>>2]|0)+28>>2]&127](c[a>>2]|0,b)|0}function yf(a){a=a|0;return}function zf(a,b){a=a|0;b=b|0;return Af(c[a>>2]|0,b)|0}function Af(b,c){b=b|0;c=c|0;var d=0,e=0;e=l;l=l+16|0;d=e;do switch(a[b>>0]&31){case 0:{vi(d,c,7856,8);d=Ti(d)|0;l=e;return d|0}case 1:{vi(d,c,7864,16);d=Ti(d)|0;l=e;return d|0}case 2:{vi(d,c,7880,17);d=Ti(d)|0;l=e;return d|0}case 3:{vi(d,c,7897,15);d=Ti(d)|0;l=e;return d|0}case 4:{vi(d,c,7912,17);d=Ti(d)|0;l=e;return d|0}case 5:{vi(d,c,7929,12);d=Ti(d)|0;l=e;return d|0}case 6:{vi(d,c,7941,9);d=Ti(d)|0;l=e;return d|0}case 7:{vi(d,c,7950,16);d=Ti(d)|0;l=e;return d|0}case 8:{vi(d,c,7966,10);d=Ti(d)|0;l=e;return d|0}case 9:{vi(d,c,7976,13);d=Ti(d)|0;l=e;return d|0}case 10:{vi(d,c,7989,10);d=Ti(d)|0;l=e;return d|0}case 11:{vi(d,c,7999,12);d=Ti(d)|0;l=e;return d|0}case 12:{vi(d,c,8011,11);d=Ti(d)|0;l=e;return d|0}case 13:{vi(d,c,8022,8);d=Ti(d)|0;l=e;return d|0}case 14:{vi(d,c,8030,9);d=Ti(d)|0;l=e;return d|0}case 15:{vi(d,c,8039,11);d=Ti(d)|0;l=e;return d|0}case 16:{vi(d,c,8050,5);d=Ti(d)|0;l=e;return d|0}case 17:{vi(d,c,8055,13);d=Ti(d)|0;l=e;return d|0}case 18:{vi(d,c,8068,15);d=Ti(d)|0;l=e;return d|0}default:{}}while(0);return 0}function Bf(a){a=a|0;return}function Cf(a,b){a=a|0;b=b|0;return yi(c[a>>2]|0,c[a+8>>2]|0,b)|0}function Df(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+12|0;h=k;f=d+8|0;n=0;aa(24,d|0,c[f>>2]|0,1);e=n;n=0;if(e&1){k=na()|0;pf(d);za(k|0)}e=c[f>>2]|0;do if((e|0)==(c[d+4>>2]|0)){n=0;Z(54,d|0);e=n;n=0;if(e&1){k=na()|0;pf(d);za(k|0)}else{e=c[f>>2]|0;break}}while(0);a[(c[d>>2]|0)+e>>0]=0;c[f>>2]=(c[f>>2]|0)+1;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];d=c[h+8>>2]|0;f=h+4|0;e=c[f>>2]|0;if(e>>>0>>0){n=0;Z(44,3692);n=0;k=na()|0;Eg(h);za(k|0)}do if(d){if((e|0)==(d|0)){i=c[h>>2]|0;j=d;c[b>>2]=i;b=b+4|0;c[b>>2]=j;l=k;return}e=_b(c[h>>2]|0,e,1,d,1,g)|0;if(!e){d=g+4|0;e=c[d>>2]|0;d=c[d+4>>2]|0;c[g>>2]=c[g>>2];h=g+4|0;c[h>>2]=e;c[h+4>>2]=d;Yb(g)}else{c[h>>2]=e;i=d;j=e;break}}else{if(e|0)Zb(c[h>>2]|0,e,1);c[h>>2]=1;i=0;j=1}while(0);c[f>>2]=i;h=j;j=i;c[b>>2]=h;b=b+4|0;c[b>>2]=j;l=k;return}function Ef(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+48|0;e=j+24|0;f=j;g=j+12|0;n=0;aa(25,g|0,7684,33);i=n;n=0;if(i&1){j=na()|0;of(d);za(j|0)};c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];h=Xb(12,4,e)|0;if(!h)Yb(e);c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];i=Xb(12,4,e)|0;if(!i)Yb(e);c[i>>2]=h;c[i+4>>2]=2728;a[i+8>>0]=11;h=i+9|0;a[h>>0]=a[f>>0]|0;a[h+1>>0]=a[f+1>>0]|0;a[h+2>>0]=a[f+2>>0]|0;a[b>>0]=2;h=b+1|0;a[h>>0]=a[g>>0]|0;a[h+1>>0]=a[g+1>>0]|0;a[h+2>>0]=a[g+2>>0]|0;c[b+4>>2]=i;b=c[d+8>>2]|0;if(!b){l=j;return}Zb(c[d+4>>2]|0,b,1);l=j;return}function Ff(a,b){a=a|0;b=b|0;var d=0;d=(Hj(b)|0)+1|0;c[a>>2]=b;c[a+4>>2]=d;return}function Gf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c+-1|0;if(!c)kj(d,0);else{Fi(a,b,d);return}}function Hf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+48|0;g=j+24|0;h=j;i=j+12|0;Nh(i,e,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];e=Xb(12,4,g)|0;if(!e)Yb(g);c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];f=Xb(12,4,g)|0;if(!f)Yb(g);else{c[f>>2]=e;c[f+4>>2]=2728;a[f+8>>0]=d;g=f+9|0;a[g>>0]=a[h>>0]|0;a[g+1>>0]=a[h+1>>0]|0;a[g+2>>0]=a[h+2>>0]|0;a[b>>0]=2;h=b+1|0;a[h>>0]=a[i>>0]|0;a[h+1>>0]=a[i+1>>0]|0;a[h+2>>0]=a[i+2>>0]|0;c[b+4>>2]=f;l=j;return}}function If(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+80|0;e=k+56|0;h=k+32|0;j=k+8|0;i=k;switch(a[b>>0]&3){case 0:{b=c[b+4>>2]|0;c[i>>2]=b;Qe(j,b);c[e>>2]=j;c[e+4>>2]=53;c[e+8>>2]=i;c[e+12>>2]=54;c[h>>2]=2896;c[h+4>>2]=3;c[h+8>>2]=5264;c[h+12>>2]=2;c[h+16>>2]=e;c[h+20>>2]=2;n=0;b=ca(55,d|0,h|0)|0;i=n;n=0;if(i&1){k=na()|0;tf(j);za(k|0)}d=c[j+4>>2]|0;if(d|0)Zb(c[j>>2]|0,d,1);j=b;l=k;return j|0}case 1:{do switch(a[b+1>>0]&31){case 0:{f=8123;g=16;break}case 1:{f=8403;g=17;break}case 2:{f=8139;g=18;break}case 3:{f=8157;g=16;break}case 4:{f=8173;g=18;break}case 5:{f=8191;g=13;break}case 6:{f=8204;g=14;break}case 7:{f=8218;g=21;break}case 8:{f=8239;g=11;break}case 9:{f=8250;g=21;break}case 10:{f=8271;g=21;break}case 11:{f=8292;g=23;break}case 12:{f=8315;g=12;break}case 13:{f=8327;g=9;break}case 14:{f=8336;g=10;break}case 15:{f=8346;g=21;break}case 16:{f=8367;g=14;break}case 17:{f=8381;g=22;break}case 18:{ve(8083,40,2920);break}default:{}}while(0);c[e>>2]=f;c[e+4>>2]=g;c[h>>2]=e;c[h+4>>2]=41;c[j>>2]=2936;c[j+4>>2]=1;c[j+8>>2]=5180;c[j+12>>2]=1;c[j+16>>2]=h;c[j+20>>2]=1;j=si(d,j)|0;l=k;return j|0}case 2:{j=c[b+4>>2]|0;j=lb[c[(c[j+4>>2]|0)+24>>2]&127](c[j>>2]|0,d)|0;l=k;return j|0}default:{}}return 0}function Jf(a,b){a=a|0;b=b|0;return zi(c[a>>2]|0,c[a+8>>2]|0,b)|0}function Kf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;i=h;qh(i,c[b>>2]|0,d,e);if((a[i>>0]|0)==3){i=0;l=h;return i|0}g=i;f=c[g>>2]|0;g=c[g+4>>2]|0;e=b+4|0;b=f&255;if((a[e>>0]|0)!=3?(n=0,Z(46,e|0),d=n,n=0,d&1):0){d=na()|0;h=e;c[h>>2]=f;c[h+4>>2]=g;if(b<<24>>24!=3)za(d|0);jf(i);za(d|0)}i=e;c[i>>2]=f;c[i+4>>2]=g;i=1;l=h;return i|0}function Lf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+112|0;f=J+16|0;g=J;E=J+64|0;F=J+40|0;G=J+32|0;H=J+24|0;if(ri(e,3612,1)|0){I=1;l=J;return I|0}Wh(g,b,d);Xh(f,c[g>>2]|0,c[g+4>>2]|0);b=c[f+4>>2]|0;c[H>>2]=c[f>>2];c[H+4>>2]=b;Yh(E,H);b=c[E>>2]|0;a:do if(b|0){o=E+4|0;p=E+8|0;q=E+12|0;r=E+8|0;s=E+4|0;t=E+8|0;u=E+24|0;v=E+4|0;w=F+4|0;x=F+8|0;y=F+12|0;z=F+16|0;A=F+20|0;B=E+12|0;C=E+16|0;b:while(1){m=c[p>>2]|0;n=c[q>>2]|0;k=b+(c[o>>2]|0)|0;c[E>>2]=b;c[s>>2]=k;c[t>>2]=4;c[u>>2]=4;b=4;while(1){c:while(1){if((b|0)!=4?(D=jj(r)|0,(D|0)!=1114112):0){b=D;break}b=c[E>>2]|0;i=c[s>>2]|0;if((b|0)==(i|0)){I=29;break}d=b+1|0;c[E>>2]=d;j=a[b>>0]|0;if(j<<24>>24<=-1){k=j&31;if((d|0)==(i|0)){b=0;f=i}else{f=b+2|0;c[E>>2]=f;b=a[d>>0]&63}g=b&255;d=g|k<<6;if((j&255)>223){if((f|0)==(i|0)){b=0;h=i}else{h=f+1|0;c[E>>2]=h;b=a[f>>0]&63}f=b&255|g<<6;d=f|k<<12;if((j&255)>239){if((h|0)==(i|0))b=0;else{c[E>>2]=h+1;b=a[h>>0]&63}d=f<<6|k<<18&1835008|b&255}}}else d=j&255;d:do if((d|0)<34)switch(d|0){case 9:{f=0;b=2;g=116;d=0;break d}case 13:{f=0;b=2;g=114;d=0;break d}case 10:{f=0;b=2;g=110;d=0;break d}default:{I=28;break d}}else{e:do if((d|0)>=92)if((d|0)<1114112)switch(d|0){case 92:break e;default:{I=28;break d}}else switch(d|0){case 1114112:{I=29;break c}default:{I=28;break d}}else switch(d|0){case 34:case 39:break;default:{I=28;break d}}while(0);f=0;b=2;g=d;d=0}while(0);if((I|0)==28){I=0;if(pj(d)|0){f=0;b=1;g=d;d=0}else{f=5;b=3;g=d;d=(Q(d|1|0)|0)>>>2^7}}c[t>>2]=b;c[B>>2]=g;k=C;c[k>>2]=d;c[k+4>>2]=f}if((I|0)==29){I=0;if((c[u>>2]|0)==4)break;b=jj(u)|0;if((b|0)==1114112)break}if(xi(e,b)|0){I=36;break b}b=c[r>>2]|0}d=m+n|0;if(n|0){b=m;do{c[G>>2]=b;c[E>>2]=G;c[v>>2]=56;c[F>>2]=2944;c[w>>2]=1;c[x>>2]=2952;c[y>>2]=1;c[z>>2]=E;c[A>>2]=1;if(si(e,F)|0){I=40;break b}b=b+1|0}while((b|0)!=(d|0))}Yh(E,H);b=c[E>>2]|0;if(!b)break a}I=1;l=J;return I|0}while(0);I=ri(e,3612,1)|0;l=J;return I|0}function Mf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+12|0;e=d;vi(e,b,8465,8);c[f>>2]=a;Si(e,f,2988)|0;c[f>>2]=a+4;Si(e,f,3004)|0;b=Ti(e)|0;l=d;return b|0}function Nf(a){a=a|0;return}function Of(a){a=a|0;return}function Pf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+8|0;e=d;ui(e,b,7815,5);c[f>>2]=a;Qi(e,7820,4,f,2800)|0;b=Ri(e)|0;l=d;return b|0}function Qf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+80|0;b=k+56|0;d=k+32|0;e=k+24|0;f=k+20|0;g=k+16|0;h=k+12|0;i=k+8|0;n=k+4|0;j=k;m=Ia(j|0)|0;c[n>>2]=m;c[f>>2]=n;c[e>>2]=15856;if(m|0){c[b>>2]=f;c[b+4>>2]=57;c[b+8>>2]=e;c[b+12>>2]=57;c[d>>2]=2776;c[d+4>>2]=3;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=b;c[d+20>>2]=2;we(d,3020)}n=Ba(j|0,1)|0;c[i>>2]=n;c[f>>2]=i;c[e>>2]=15856;if(n|0){c[b>>2]=f;c[b+4>>2]=57;c[b+8>>2]=e;c[b+12>>2]=57;c[d>>2]=2776;c[d+4>>2]=3;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=b;c[d+20>>2]=2;we(d,3036)}n=qa(a|0,j|0)|0;c[h>>2]=n;c[f>>2]=h;c[e>>2]=15856;if(n|0){c[b>>2]=f;c[b+4>>2]=57;c[b+8>>2]=e;c[b+12>>2]=57;c[d>>2]=2776;c[d+4>>2]=3;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=b;c[d+20>>2]=2;we(d,3052)}n=La(j|0)|0;c[g>>2]=n;c[f>>2]=g;c[e>>2]=15856;if(!n){l=k;return}else{c[b>>2]=f;c[b+4>>2]=57;c[b+8>>2]=e;c[b+12>>2]=57;c[d>>2]=2776;c[d+4>>2]=3;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=b;c[d+20>>2]=2;we(d,3068)}}function Rf(a){a=a|0;return}function Sf(b,d){b=b|0;d=d|0;b=c[b>>2]|0;d=a[b>>0]|0;a[b>>0]=0;if(!(d<<24>>24))$i(3104);ik(15864)|0;n=0;Z(55,15860);d=n;n=0;if(d&1){d=na()|0;c[3965]=0;za(d|0)}else{c[3965]=0;mk(15864)|0;Zg();return}}function Tf(b,d){b=b|0;d=d|0;d=a[b>>0]|0;a[b>>0]=0;if(!(d<<24>>24))$i(3104);ik(15864)|0;n=0;Z(55,15860);d=n;n=0;if(d&1){d=na()|0;c[3965]=0;za(d|0)}else{c[3965]=0;mk(15864)|0;Zg();return}}function Uf(a){a=a|0;var b=0,e=0,f=0;if((d[a>>0]|0)<2)return;e=a+4|0;f=c[e>>2]|0;a=f+4|0;n=0;Z(c[c[a>>2]>>2]|0,c[f>>2]|0);b=n;n=0;if(b&1){b=na()|0;Vf(c[f>>2]|0,c[a>>2]|0);Wf(c[e>>2]|0);za(b|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(b|0)Zb(c[f>>2]|0,b,c[a+8>>2]|0);Zb(c[e>>2]|0,12,4);return}function Vf(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Wf(a){a=a|0;Zb(a,12,4);return}function Xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+80|0;e=i+56|0;f=i+32|0;g=i;j=i+16|0;h=i+8|0;c[h>>2]=b;c[h+4>>2]=d;Re(j,b,d);b=j+4|0;if((c[j>>2]|0)==1){a=b;i=c[a+4>>2]|0;j=g;c[j>>2]=c[a>>2];c[j+4>>2]=i;c[e>>2]=h;c[e+4>>2]=58;c[e+8>>2]=g;c[e+12>>2]=59;c[f>>2]=3152;c[f+4>>2]=2;c[f+8>>2]=5264;c[f+12>>2]=2;c[f+16>>2]=e;c[f+20>>2]=2;n=0;_(26,f|0,3168);n=0;j=na()|0;Uf(g);za(j|0)}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];l=i;return}}function Yf(a,b){a=a|0;b=b|0;c[a>>2]=0;return}function Zf(a){a=a|0;y=1536465966;return -1196322623}function _f(a,b){a=a|0;b=b|0;var d=0;d=c[b+8>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=d;return}function $f(a,b){a=a|0;b=b|0;return zi(c[a>>2]|0,c[a+8>>2]|0,b)|0}function ag(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0;q=l;l=l+32|0;p=q+16|0;j=q;k=j+8|0;m=j+4|0;i=j|2;h=c[b>>2]|0;a:while(1){switch(h|0){case 3:{o=8;break a}case 1:{if(!d){o=4;break a}break}case 0:break;default:{if((h&3|0)!=2){o=11;break a}g=ph(3804)|0;c[p>>2]=g;if(!g){o=13;break a}c[j>>2]=g;a[k>>0]=0;c[m>>2]=0;while(1){if((h&3|0)!=2){o=16;break}c[m>>2]=h&-4;g=c[b>>2]|0;if((g|0)==(h|0))c[b>>2]=i;if((g|0)==(h|0))break;else h=g}if((o|0)==16){o=0;g=c[j>>2]|0;if(g|0?(r=c[g>>2]|0,c[g>>2]=r-1,(r|0)==1):0)Te(j);continue a}while(1){if(a[k>>0]|0)break;n=0;ba(2);r=n;n=0;if(r&1){o=27;break a}}g=c[b>>2]|0;h=c[j>>2]|0;if(h|0?(r=c[h>>2]|0,c[h>>2]=r-1,(r|0)==1):0)Te(j);h=g;continue a}}g=c[b>>2]|0;if((g|0)==(h|0))c[b>>2]=2;if((g|0)==(h|0)){o=9;break}else h=g}if((o|0)==4)ve(8671,42,3184);else if((o|0)==8){l=q;return}else if((o|0)==9){g=p+4|0;a[g>>0]=1;c[p>>2]=b;n=0;_(c[f+12>>2]|0,e|0,(h|0)==1|0);r=n;n=0;if(r&1){r=na()|0;dg(p);za(r|0)}else{a[g>>0]=0;bg(p);l=q;return}}else if((o|0)==11)ve(8713,47,3200);else if((o|0)==13){n=0;_(21,8847,94);n=0;r=na()|0;lg(p);za(r|0)}else if((o|0)==27){r=na()|0;cg(j);za(r|0)}}function bg(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;j=l;l=l+64|0;h=j+40|0;i=j+16|0;f=j+8|0;g=j+4|0;k=j;m=c[b>>2]|0;e=c[m>>2]|0;c[m>>2]=(a[b+4>>0]|0)==0?3:1;b=e&3;c[k>>2]=b;c[g>>2]=k;c[f>>2]=3216;if((b|0)!=2){c[h>>2]=g;c[h+4>>2]=16;c[h+8>>2]=f;c[h+12>>2]=16;c[i>>2]=3128;c[i+4>>2]=3;c[i+8>>2]=5264;c[i+12>>2]=2;c[i+16>>2]=h;c[i+20>>2]=2;we(i,3220)}b=e&-4;if(!b){l=j;return}while(1){e=b;b=c[b+4>>2]|0;f=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;c[h>>2]=f;if(!f){b=7;break}c[i>>2]=f;a[e+8>>0]=1;n=0;Z(56,i|0);m=n;n=0;if(m&1){b=12;break}k=c[i>>2]|0;m=c[k>>2]|0;c[k>>2]=m-1;if((m|0)==1)Te(i);if(!b){b=5;break}}if((b|0)==5){l=j;return}else if((b|0)==7){n=0;Z(44,3104);n=0;m=na()|0;eg(h);za(m|0)}else if((b|0)==12){m=na()|0;fg(i);za(m|0)}}function cg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)return;d=c[b>>2]|0;c[b>>2]=d-1;if((d|0)!=1)return;Te(a);return}function dg(a){a=a|0;bg(a);return}function eg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)return;d=c[b>>2]|0;c[b>>2]=d-1;if((d|0)!=1)return;Te(a);return}function fg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;b=c[d>>2]|0;c[d>>2]=b-1;if((b|0)!=1)return;Te(a);return}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+12|0;e=d;vi(e,b,8793,11);c[f>>2]=a;Si(e,f,3236)|0;b=Ti(e)|0;l=d;return b|0}function hg(a){a=a|0;return}function ig(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function jg(a){a=a|0;Zb(a,12,4);return}function kg(b){b=b|0;var d=0,e=0,f=0,g=0;e=(c[b>>2]|0)+4|0;if(!(a[b+4>>0]|0)){d=fb[c[600]&7]()|0;if(!d)Ue(10081,57);if((c[d>>2]|0)==1){d=d+4|0;f=c[d>>2]|0}else{f=fb[c[2404>>2]&7]()|0;g=d;c[g>>2]=1;c[g+4>>2]=f;d=d+4|0}a[d>>0]=f;a[d+1>>0]=f>>8;a[d+2>>0]=f>>16;a[d+3>>0]=f>>24;if(f|0)a[e>>0]=1}mk(c[c[b>>2]>>2]|0)|0;return}function lg(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)return;d=c[b>>2]|0;c[b>>2]=d-1;if((d|0)!=1)return;Te(a);return}function mg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[b>>2]|0;f=c[b+4>>2]|0;g=0-f|0;b=e+((e+-1+f&g)-e)|0;if(b>>>0>>0){c[a>>2]=0;return}e=N(b,d)|0;h=(d|0)==0;if(h?0:((e>>>0)/((h?1:d)>>>0)|0|0)!=(b|0)){c[a>>2]=0;return}if((f+-1&(f|-2147483648)|0)!=0|e>>>0>g>>>0)$i(3300);c[a>>2]=1;c[a+4>>2]=e;c[a+8>>2]=f;c[a+12>>2]=b;return}function ng(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0;m=l;l=l+32|0;k=m+16|0;j=m+8|0;o=m;b=ph(3804)|0;c[k>>2]=b;if(!b){n=0;_(21,8847,94);n=0;o=na()|0;lg(k);za(o|0)}c[o>>2]=b;d=b+24|0;b=c[d>>2]|0;if((b|0)==2)c[d>>2]=0;a:do if((b|0)!=2){f=c[o>>2]|0;e=f+28|0;ik(c[e>>2]|0)|0;f=f+32|0;n=0;d=Y(c[600]|0)|0;i=n;n=0;do if(!(i&1)){if(!d){n=0;_(22,10081,57);n=0;break}if((c[d>>2]|0)==1){d=d+4|0;b=c[d>>2]|0}else{n=0;b=Y(c[601]|0)|0;i=n;n=0;if(i&1)break;i=d;c[i>>2]=1;c[i+4>>2]=b;d=d+4|0}a[d>>0]=b;a[d+1>>0]=b>>8;a[d+2>>0]=b>>16;a[d+3>>0]=b>>24;d=(b|0)!=0;if(a[f>>0]|0){n=0;ea(7,8804,43,e|0,d|0);n=0;break}c[j>>2]=e;b=j+4|0;a[b>>0]=d&1;d=(c[o>>2]|0)+24|0;e=c[d>>2]|0;if(!e)c[d>>2]=1;b:do if(!e){i=k+4|0;while(1){d=c[o>>2]|0;e=c[j>>2]|0;f=a[b>>0]|0;c[k>>2]=e;a[i>>0]=f;e=c[e>>2]|0;f=e;g=d+40|0;h=c[g>>2]|0;if(!h)c[g>>2]=f;if(!((h|0)==0|(h|0)==(f|0))){d=34;break}fa(c[d+36>>2]|0,e|0)|0;e=c[k>>2]|0;f=a[i>>0]|0;if(a[e+4>>0]|0){d=36;break}c[j>>2]=e;a[b>>0]=f;d=(c[o>>2]|0)+24|0;e=c[d>>2]|0;if((e|0)==2)c[d>>2]=0;if((e|0)==2)break b}if((d|0)==34){n=0;aa(21,7600,54,2656);n=0;b=na()|0;n=0;Z(57,k|0);m=n;n=0;if(m&1)d=39}else if((d|0)==36){n=0;ea(7,8804,43,e|0,f<<24>>24!=0|0);n=0;d=39}if((d|0)==39)b=na()|0;m=b;og(o);za(m|0)}else{if((e|0)==2)break;n=0;aa(21,9180,23,3324);n=0;m=na()|0;kg(j);og(o);za(m|0)}while(0);e=c[j>>2]|0;f=e+4|0;if(!(a[b>>0]|0)){n=0;d=Y(c[600]|0)|0;k=n;n=0;if(k&1)break;if(!d){n=0;_(22,10081,57);n=0;break}if((c[d>>2]|0)==1){d=d+4|0;b=c[d>>2]|0}else{n=0;b=Y(c[601]|0)|0;k=n;n=0;if(k&1)break;k=d;c[k>>2]=1;c[k+4>>2]=b;d=d+4|0}a[d>>0]=b;a[d+1>>0]=b>>8;a[d+2>>0]=b>>16;a[d+3>>0]=b>>24;if(b|0)a[f>>0]=1}mk(c[e>>2]|0)|0;break a}while(0);m=na()|0;og(o);za(m|0)}while(0);j=c[o>>2]|0;k=c[j>>2]|0;c[j>>2]=k-1;if((k|0)!=1){l=m;return};Te(o);l=m;return}function og(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;b=c[d>>2]|0;c[d>>2]=b-1;if((b|0)!=1)return;Te(a);return}function pg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0;k=l;l=l+64|0;d=k;j=k+40|0;m=k+28|0;o=k+16|0;p=k+8|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];do if(c[o>>2]|0){c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];Sh(m,j);b=c[m>>2]|0;a=Lj(b,0,c[m+8>>2]|0)|0;if(!a){c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];Df(d,j);e=c[d>>2]|0;f=c[d+4>>2]|0;break}else{h=m+4|0;g=c[h>>2]|0;h=c[h+4>>2]|0;c[j>>2]=a-b;c[j+4>>2]=b;i=j+8|0;c[i>>2]=g;c[i+4>>2]=h;af(9203,47,j)}}else{e=0;f=0}while(0);c[p>>2]=e;c[p+4>>2]=f;ik(15736)|0;h=15600;g=c[h>>2]|0;h=c[h+4>>2]|0;if(!((g|0)==-1&(h|0)==-1)){f=gk(g|0,h|0,1,0)|0;i=15600;c[i>>2]=f;c[i+4>>2]=y;mk(15736)|0;n=0;Z(58,o|0);i=n;n=0;if(!(i&1)){i=Xb(48,4,j)|0;if(!i)Yb(j);a=i;b=15684;d=a+48|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(d|0));c[m>>2]=i;c[m+4>>2]=0;n=0;Z(60,i|0);f=n;n=0;if(!(f&1)){b=p;a=c[b>>2]|0;b=c[b+4>>2]|0;e=o;d=c[e>>2]|0;e=c[e+4>>2]|0;f=Xb(48,8,j)|0;if(!f)Yb(j);else{c[f>>2]=1;c[f+4>>2]=1;p=f+8|0;c[p>>2]=g;c[p+4>>2]=h;p=f+16|0;c[p>>2]=a;c[p+4>>2]=b;c[f+24>>2]=0;p=f+28|0;c[p>>2]=d;c[p+4>>2]=e;c[f+36>>2]=i;c[f+40>>2]=0;l=k;return f|0}}a=na()|0;n=0;Z(59,m|0);m=n;n=0;if(m&1)a=na()|0;rg(o);o=a;qg(p);za(o|0)}}else{mk(15736)|0;n=0;aa(21,9250,55,3340);n=0}o=na()|0;qg(p);za(o|0);return 0}function qg(b){b=b|0;var d=0;d=c[b>>2]|0;if(!d)return;a[d>>0]=0;d=c[b+4>>2]|0;if(!d)return;Zb(c[b>>2]|0,d,1);return}function rg(a){a=a|0;Ga(c[a>>2]|0)|0;Zb(c[a>>2]|0,28,4);return}function sg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0;o=l;l=l+16|0;j=o;d=(c[b>>2]|0)+24|0;e=c[d>>2]|0;if(!e)c[d>>2]=2;if(!e){l=o;return}m=j+4|0;h=c[600]|0;i=c[601]|0;d=e;a:while(1){switch(d|0){case 2:{k=12;break a}case 1:break;default:{k=10;break a}}f=c[b>>2]|0;g=f+28|0;ik(c[g>>2]|0)|0;d=fb[h&7]()|0;if(!d){k=7;break}if((c[d>>2]|0)==1){d=d+4|0;e=c[d>>2]|0}else{e=fb[i&7]()|0;p=d;c[p>>2]=1;c[p+4>>2]=e;d=d+4|0}a[d>>0]=e;a[d+1>>0]=e>>8;a[d+2>>0]=e>>16;a[d+3>>0]=e>>24;d=(e|0)!=0;if(a[f+32>>0]|0){k=9;break}c[j>>2]=g;a[m>>0]=d&1;d=f+24|0;e=c[d>>2]|0;if((e|0)==1)c[d>>2]=2;if((e|0)==1){k=25;break}switch(e|0){case 2:break a;case 0:break;default:{k=23;break a}}e=c[j>>2]|0;f=e+4|0;if(!(a[m>>0]|0)){d=fb[h&7]()|0;if(!d){k=19;break}if((c[d>>2]|0)==1){d=d+4|0;g=c[d>>2]|0}else{g=fb[i&7]()|0;p=d;c[p>>2]=1;c[p+4>>2]=g;d=d+4|0}a[d>>0]=g;a[d+1>>0]=g>>8;a[d+2>>0]=g>>16;a[d+3>>0]=g>>24;if(g|0)a[f>>0]=1}mk(c[e>>2]|0)|0;e=(c[b>>2]|0)+24|0;d=c[e>>2]|0;if(!d)c[e>>2]=2;if(!d){k=12;break}}if((k|0)==7)Ue(10081,57);else if((k|0)==9)cf(8804,43,g,d);else if((k|0)==10)ve(8975,28,3252);else if((k|0)==12){l=o;return}else if((k|0)==19)Ue(10081,57);else if((k|0)==23){n=0;aa(21,8975,28,3268);n=0;p=na()|0;kg(j);za(p|0)}else if((k|0)==25)Fa(c[(c[b>>2]|0)+36>>2]|0)|0;f=c[j>>2]|0;g=f+4|0;if(!(a[m>>0]|0)){d=fb[c[600]&7]()|0;if(!d)Ue(10081,57);if((c[d>>2]|0)==1){d=d+4|0;e=c[d>>2]|0}else{e=fb[c[2404>>2]&7]()|0;p=d;c[p>>2]=1;c[p+4>>2]=e;d=d+4|0}a[d>>0]=e;a[d+1>>0]=e>>8;a[d+2>>0]=e>>16;a[d+3>>0]=e>>24;if(e|0)a[g>>0]=1}mk(c[f>>2]|0)|0;l=o;return}function tg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+864|0;s=x+849|0;t=x+824|0;u=x;v=x+820|0;w=x+816|0;p=x+16|0;q=x+848|0;r=x+8|0;ik(15764)|0;c[r>>2]=d;n=r+4|0;c[n>>2]=e;a[q>>0]=f;hk(p|0,0,800)|0;Ud(t,p,100);d=t+4|0;o=c[d>>2]|0;a:do if((c[t>>2]|0)==1){e=kk(o|0,c[d+4>>2]|0,8)|0;f=y;d=o&255}else{if(o>>>0>100)kj(o,100);c[v>>2]=s;if(f<<24>>24!=2){m=p+(o<<3)|0;h=m;c[u>>2]=v;i=t+4|0;j=t+4|0;k=t+4|0;g=t+4|0;f=p;d=0;while(1){e=f;if(((h-f|0)/8|0)>>>0<=3){h=21;break}ug(t,u,d,e);d=c[i>>2]|0;if((c[t>>2]|0)==1){h=29;break}ug(t,u,d,e+8|0);d=c[j>>2]|0;if((c[t>>2]|0)==1){h=29;break}ug(t,u,d,e+16|0);d=c[k>>2]|0;if((c[t>>2]|0)==1){h=29;break}ug(t,u,d,e+24|0);d=c[g>>2]|0;if((c[t>>2]|0)==1){h=29;break}else f=e+32|0}b:do if((h|0)==21){f=t+4|0;if((e|0)!=(m|0))do{ug(t,u,d,e);e=e+8|0;d=c[f>>2]|0;if((c[t>>2]|0)==1){h=29;break b}}while((e|0)!=(m|0));d=o}while(0);e=o-d|0;if(e>>>0>>0)if(e){f=c[r>>2]|0;g=c[n>>2]|0;c[t>>2]=3356;c[t+4>>2]=1;c[t+8>>2]=0;c[t+16>>2]=15892;c[t+20>>2]=0;jb[c[g+24>>2]&31](u,f,t);f=u;g=c[f>>2]|0;d=g&255;if(d<<24>>24==3)g=e;else{e=kk(g|0,c[f+4>>2]|0,8)|0;f=y;break}}else g=0;else h=31}else h=31;if((h|0)==31)g=0;e=c[r>>2]|0;f=c[n>>2]|0;c[t>>2]=3364;c[t+4>>2]=1;c[t+8>>2]=0;c[t+16>>2]=15892;c[t+20>>2]=0;jb[c[f+24>>2]&31](u,e,t);e=u;f=c[e>>2]|0;d=f&255;if(d<<24>>24!=3){e=kk(f|0,c[e+4>>2]|0,8)|0;f=y;break}d=o-g|0;if(d>>>0>100)kj(d,100);i=p+(d<<3)|0;j=t+4|0;k=t+8|0;m=t+12|0;c:do if(d|0){e=p;h=0;g=p;while(1){c[w>>2]=h;c[v>>2]=e;d=c[e>>2]|0;f=c[e+4>>2]|0;c[t>>2]=r;c[j>>2]=w;c[k>>2]=v;c[m>>2]=q;Wd(u,d,f,t,s);f=u;e=c[f>>2]|0;f=c[f+4>>2]|0;d=e&255;if(d<<24>>24!=3)break;d=g+8|0;if((d|0)==(i|0))break c;else{e=d;h=h+1|0;g=d}}e=kk(e|0,f|0,8)|0;f=y;break a}while(0);v=0;w=0;u=3;mk(15764)|0;v=v&16777215;v=nk(w|0,v|0,8)|0;w=y;u=u&255;u=v|u;v=b;c[v>>2]=u;b=b+4|0;c[b>>2]=w;l=x;return}while(0);v=f;w=e;u=d;mk(15764)|0;v=v&16777215;v=nk(w|0,v|0,8)|0;w=y;u=u&255;u=v|u;v=b;c[v>>2]=u;b=b+4|0;c[b>>2]=w;l=x;return}function ug(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=i+8|0;a[h>>0]=0;Xd(g,c[f>>2]|0,c[f+4>>2]|0,h,c[c[d>>2]>>2]|0);switch(a[g>>0]&3){case 0:case 1:case 3:{g=a[h>>0]|0;h=g&255;g=g^1;g=g&255;e=g+e|0;c[b>>2]=h;h=b+4|0;c[h>>2]=e;l=i;return}default:{}}g=c[g+4>>2]|0;d=g+4|0;n=0;Z(c[c[d>>2]>>2]|0,c[g>>2]|0);f=n;n=0;if(f&1){i=na()|0;ig(c[g>>2]|0,c[d>>2]|0);jg(g);za(i|0)}d=c[d>>2]|0;f=c[d+4>>2]|0;if(f|0)Zb(c[g>>2]|0,f,c[d+8>>2]|0);Zb(g,12,4);g=a[h>>0]|0;h=g&255;g=g^1;g=g&255;e=g+e|0;c[b>>2]=h;h=b+4|0;c[h>>2]=e;l=i;return}function vg(a,b){a=a|0;b=b|0;return ib[c[b+12>>2]&15](a)|0}function wg(){var b=0,d=0,e=0,f=0;f=l;l=l+32|0;d=f+12|0;b=f;switch(c[3933]|0){case 0:{Xf(b,9087,14);if(!(c[b>>2]|0)){d=1;b=4}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];e=c[d>>2]|0;a:do switch(c[d+8>>2]|0){case 1:{if((e|0)==9101)b=4;else b=(a[e>>0]|0)==48?4:3;break}case 4:{if((e|0)!=9102?Xj(e,9102,4)|0:0){b=3;break a}b=2;break}default:b=3}while(0);d=c[d+4>>2]|0;if(d|0)Zb(e,d,1);d=b<<24>>24==4?1:b&255}c[3933]=d;e=b;l=f;return e|0}case 2:{e=2;l=f;return e|0}case 3:{e=3;l=f;return e|0}case 1:{e=4;l=f;return e|0}default:ve(9047,40,3284)}return 0}\nfunction xg(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+160|0;o=H;F=H+96|0;A=H+120|0;z=H+8|0;m=H+152|0;n=H+144|0;c[n>>2]=f;c[m>>2]=g;c[m+4>>2]=h;w=j<<24>>24==3;do if(w){if(!g){a[b>>0]=3;l=H;return}c[F>>2]=n;c[F+4>>2]=39;c[A>>2]=3472;c[A+4>>2]=2;c[A+8>>2]=3488;c[A+12>>2]=1;c[A+16>>2]=F;c[A+20>>2]=1;jb[c[e+24>>2]&31](z,d,A);h=z;f=c[h>>2]|0;h=c[h+4>>2]|0;if((f&255)<<24>>24==3)break;c[b>>2]=f;c[b+4>>2]=h;l=H;return}else{mi(o,3372);f=c[o>>2]|0;h=c[o+4>>2]|0;c[F>>2]=n;c[F+4>>2]=39;c[F+8>>2]=m;c[F+12>>2]=60;c[F+16>>2]=f;c[F+20>>2]=h;c[A>>2]=3376;c[A+4>>2]=3;c[A+8>>2]=3400;c[A+12>>2]=2;c[A+16>>2]=F;c[A+20>>2]=3;jb[c[e+24>>2]&31](z,d,A);h=z;f=c[h>>2]|0;h=c[h+4>>2]|0;if((f&255)<<24>>24==3)break;c[b>>2]=f;c[b+4>>2]=h;l=H;return}while(0);u=c[i>>2]|0;do if(!u){k=c[e+20>>2]|0;nb[k&15](F,d,3524,9);h=F;f=c[h>>2]|0;h=c[h+4>>2]|0;if((f&255)<<24>>24!=3){c[b>>2]=f;c[b+4>>2]=h;l=H;return}}else{i=c[i+4>>2]|0;sh(F,u,i,9410,6);a:do if((c[F>>2]|0)==1){q=c[F+4>>2]|0;f=q+6|0;if(!((f|0)==0|(i|0)==(f|0))){if(i>>>0<=f>>>0)Ii(u,i,f,i);h=u+f|0;if((a[h>>0]|0)>-65)p=h;else Ii(u,i,f,i)}else p=u+f|0;o=u+f+(i-f)|0;f=p;while(1){t=(f|0)==(o|0);h=t?f:f+1|0;if(t|(f|0)==0)break;n=a[f>>0]|0;if(n<<24>>24<=-1){g=n&31;if((h|0)==(o|0)){f=0;h=o}else{f=a[h>>0]&63;h=h+1|0}j=f&255;f=j|g<<6;if((n&255)>223){if((h|0)==(o|0)){f=0;m=o}else{f=a[h>>0]&63;m=h+1|0}j=f&255|j<<6;f=j|g<<12;if((n&255)>239){if((m|0)==(o|0)){h=o;f=0}else{h=m+1|0;f=a[m>>0]&63}f=j<<6|g<<18&1835008|f&255;if((f|0)==1114112)break}else h=m}}else f=n&255;if((f+-48|0)>>>0>9&(f+-65|0)>>>0>5){x=i;break a}else f=h}if(!((q|0)==0|(q|0)==(i|0))){if(q>>>0>=i>>>0)Ii(u,i,0,q);if((a[u+q>>0]|0)<=-65)Ii(u,i,0,q);else x=q}else x=q}else x=i;while(0);do if(x>>>0>4)if((a[u+3>>0]|0)>-65){if((u|0)!=9417?Xj(9417,u,3)|0:0){B=57;break}h=x+-1|0;if(h){f=u+h|0;if((a[f>>0]|0)<=-65){B=57;break}}else f=u;if((f|0)!=9416?(a[f>>0]|0)!=69:0){if((x|0)==2){B=58;break}if(x>>>0>2){B=57;break}else{B=118;break}}if(h>>>0<3)Ii(u,x,3,h);if((a[u+h>>0]|0)>-65){f=3;B=64}else Ii(u,x,3,h)}else B=57;else if((x|0)==4)B=57;else B=118;while(0);if((B|0)==57)if((a[u+2>>0]|0)>-65)B=58;else B=118;do if((B|0)==58){if((u|0)!=9420?Xj(9420,u,2)|0:0){B=118;break}h=x+-1|0;if(h){f=u+h|0;if((a[f>>0]|0)<=-65){B=118;break}}else f=u;if((f|0)!=9416?(a[f>>0]|0)!=69:0){B=118;break}if(h>>>0<2)Ii(u,x,2,h);if((a[u+2>>0]|0)<=-65)Ii(u,x,2,h);if((a[u+h>>0]|0)>-65){f=2;h=x;B=64}else Ii(u,x,2,h)}while(0);b:do if((B|0)==64){f=u+f|0;h=h+-3|0;t=f+h|0;m=f;while(1){if((m|0)==(t|0))break;n=m+1|0;o=a[m>>0]|0;if(o<<24>>24<=-1){i=o&31;if((n|0)==(t|0)){j=0;g=t}else{j=a[n>>0]&63;g=m+2|0}m=j&255;j=m|i<<6;if((o&255)>223){if((g|0)==(t|0)){n=g;j=0;g=t}else{s=g+1|0;n=s;j=a[g>>0]&63;g=s}m=j&255|m<<6;j=m|i<<12;if((o&255)>239){if((g|0)==(t|0))j=0;else{n=g+1|0;j=a[g>>0]&63}j=m<<6|i<<18&1835008|j&255;if((j|0)==1114112){v=n;B=93;break}else o=0}else o=0}else{o=0;n=g}}else{j=o&255;o=0}while(1){m=j+-48|0;if(m>>>0>=10){if(j>>>0<=127){m=n;j=o;break}if(!(Vh(j)|0)){m=n;j=o;break}}q=(o*10|0)+m|0;if((n|0)==(t|0)){m=t;j=q;break}m=n+1|0;i=a[n>>0]|0;if(i<<24>>24>-1){j=i&255;o=q;n=m;continue}p=i&31;if((m|0)==(t|0)){j=0;n=t}else{j=a[m>>0]&63;n=n+2|0}g=j&255;if((i&255)<=223){j=g|p<<6;o=q;continue}if((n|0)==(t|0)){m=n;j=0;o=t}else{o=n+1|0;m=o;j=a[n>>0]&63}n=j&255|g<<6;if((i&255)<=239){j=n|p<<12;o=q;n=m;continue}if((o|0)==(t|0))j=0;else{m=o+1|0;j=a[o>>0]&63}j=n<<6|p<<18&1835008|j&255;if((j|0)==1114112){j=q;break}else{o=q;n=m}}if(!j){v=m;B=93;break}s=j+-1|0;c:do if(!s)j=0;else{r=s;j=0;do{if((m|0)==(t|0)){m=t;break c}n=m+1|0;p=a[m>>0]|0;if(p<<24>>24<=-1){q=p&255;if((n|0)==(t|0)){n=0;g=t}else{n=a[n>>0]&63;g=m+2|0}o=n&255;if((p&255)>223){if((g|0)==(t|0)){m=g;n=0;i=t}else{i=g+1|0;m=i;n=a[g>>0]&63}g=n&255|o<<6;if((p&255)>239){if((i|0)==(t|0))n=0;else{m=i+1|0;n=a[i>>0]&63}if((g<<6|q<<18&1835008|n&255|0)==1114112)break c}}else m=g}else m=n;r=r+-1|0;j=j+1|0}while((r|0)!=0)}while(0);if((j|0)!=(s|0)){B=118;break b}}if((B|0)==93?(v|0)!=(t|0):0){j=v+1|0;g=a[v>>0]|0;if(g<<24>>24>-1){B=118;break}if((j|0)==(t|0)){n=0;j=t}else{n=a[j>>0]&63;j=v+2|0}if((g&255)<=223){B=118;break}if((j|0)==(t|0)){m=0;j=t}else{m=a[j>>0]&63;j=j+1|0}if((g&255)<=239){B=118;break}if((j|0)==(t|0))j=0;else j=a[j>>0]&63;if(((m&255|(n&255)<<6)<<6|(g&255)<<18&1835008|j&255|0)!=1114112){B=118;break}}if(w){Ni(z,f,h,9422,3);g=z+64|0;c[g>>2]=0;o=z+68|0;c[o>>2]=h;j=z+72|0;a[j>>0]=1;i=z+73|0;a[i>>0]=0;m=z+80|0;c[m>>2]=1;yg(A,z);n=c[m>>2]|0;d:do switch(n|0){case 0:{c[F>>2]=0;break}case 1:{c[m>>2]=0;do if(!(a[i>>0]|0)){if(!(a[j>>0]|0)){m=c[o>>2]|0;j=c[g>>2]|0;if((m|0)==(j|0))break}else{j=c[g>>2]|0;m=c[o>>2]|0}a[i>>0]=1;c[F>>2]=(c[z+48>>2]|0)+j;c[F+4>>2]=m-j;break d}while(0);c[F>>2]=0;break}default:{c[m>>2]=n+-1;yg(F,z)}}while(0);j=c[A>>2]|0;q=F;r=c[q>>2]|0;q=c[q+4>>2]|0;e:do if((j|0)!=0?(c[A+4>>2]|0)==16:0){p=j+16|0;while(1){A=(j|0)==(p|0);m=A?j:j+1|0;if(A|(j|0)==0)break;o=a[j>>0]|0;if(o<<24>>24<=-1){i=o&31;if((m|0)==(p|0)){n=0;j=p}else{n=a[m>>0]&63;j=m+1|0}n=n&255;m=n|i<<6;if((o&255)>223){if((j|0)==(p|0)){m=0;g=p}else{m=a[j>>0]&63;g=j+1|0}n=m&255|n<<6;m=n|i<<12;if((o&255)>239){if((g|0)==(p|0)){j=p;m=0}else{j=g+1|0;m=a[g>>0]&63}m=n<<6|i<<18&1835008|m&255;if((m|0)==1114112)break}else j=g}}else{j=m;m=o&255}if((m+-48|0)>>>0>=10)if((m+-97|0)>>>0>=26)if((m+-65|0)>>>0<26)n=-55;else break e;else n=-87;else n=-48;if((n+m|0)>>>0>15)break e}f=(r|0)==0;h=f?0:q;f=f?16465:r}while(0)}if(!h)B=452;else{v=F+4|0;w=e+20|0;j=1;p=f;f:while(1){if(!j?(nb[c[w>>2]&15](F,d,3536,2),D=F,A=c[D>>2]|0,C=A&255,D=kk(A|0,c[D+4>>2]|0,8)|0,C<<24>>24!=3):0){G=y;k=D;E=C;break b}r=p;q=p+1|0;i=p+h|0;f=h;while(1){g=a[r>>0]|0;if(g<<24>>24<=-1){o=g&31;if((q|0)==(i|0)){j=0;n=q}else{j=a[q>>0]&63;n=q+1|0}m=j&255;j=m|o<<6;if((g&255)>223){if((n|0)==(i|0)){j=0;n=i}else{j=a[n>>0]&63;n=n+1|0}m=j&255|m<<6;j=m|o<<12;if((g&255)>239){if((n|0)==(i|0))j=0;else j=a[n>>0]&63;j=m<<6|o<<18&1835008|j&255;if((j|0)==1114112){B=166;break f}}}}else j=g&255;if((j+-48|0)>>>0>=10){if(j>>>0<=127)break;if(!(Vh(j)|0))break}switch(f|0){case 0:{f=0;B=188;break f}case 1:break;default:if((a[q>>0]|0)<=-65){B=188;break f}}f=f+-1|0;i=q+f|0;if(!f){B=166;break f}else{r=q;q=q+1|0}}j=h-f|0;if(j|0){if(h>>>0<=j>>>0){B=173;break}if((a[p+j>>0]|0)<=-65){B=173;break}}fj(F,p,j);if((a[F>>0]|0)==1){B=175;break}m=c[v>>2]|0;if(!((m|0)==0|(f|0)==(m|0))){if(f>>>0<=m>>>0){B=180;break}h=r+m|0;if((a[h>>0]|0)>-65)u=h;else{B=180;break}}else u=r+m|0;h=f-m|0;if((m|0)!=2)if(m>>>0>2)if((a[r+2>>0]|0)>-65)B=184;else B=193;else{j=r;f=m;B=194}else B=184;do if((B|0)==184){if((r|0)!=9425?Xj(9425,r,2)|0:0){B=193;break}if((a[q>>0]|0)<=-65){B=191;break f}j=q;f=m+-1|0;B=194}while(0);if((B|0)==193){f=m;B=195}else if((B|0)==194?(B=0,f|0):0){r=j;B=195}g:do if((B|0)==195){h:while(1){j=(f|0)==1;if(!j?(a[r+1>>0]|0)<=-65:0)B=232;else B=197;i:do if((B|0)==197){B=0;do if((r|0)!=3540){if((a[r>>0]|0)==46)break;if(!j?(a[r+1>>0]|0)<=-65:0){B=232;break i}if((r|0)!=9427?(a[r>>0]|0)!=36:0){B=232;break i}n=(f|0)==4;do if(!n)if(f>>>0>4)if((a[r+4>>0]|0)>-65){B=230;break}else{B=303;break}else if((f|0)==3){j=1;B=304;break}else break h;else B=230;while(0);j:do if((B|0)==230){B=0;do if((r|0)!=9428){if(!(Xj(9428,r,4)|0))break;if(!n?(a[r+4>>0]|0)<=-65:0){B=303;break j}do if((r|0)!=9432){if(!(Xj(9432,r,4)|0))break;if(!n?(a[r+4>>0]|0)<=-65:0){B=303;break j}do if((r|0)!=9436){if(!(Xj(9436,r,4)|0))break;if(!n?(a[r+4>>0]|0)<=-65:0){B=303;break j}do if((r|0)!=9440){if(!(Xj(9440,r,4)|0))break;if(!n?(a[r+4>>0]|0)<=-65:0){B=303;break j}do if((r|0)!=9444){if(!(Xj(9444,r,4)|0))break;if(!n?(a[r+4>>0]|0)<=-65:0){B=303;break j}do if((r|0)!=9448){if(!(Xj(9448,r,4)|0))break;if(!n?(a[r+4>>0]|0)<=-65:0){B=303;break j}if((r|0)!=9452?Xj(9452,r,4)|0:0){B=303;break j}nb[c[w>>2]&15](F,d,3568,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=308;break f}f=f+-4|0;break i}while(0);nb[c[w>>2]&15](F,d,3564,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=299;break f}f=f+-4|0;break i}while(0);nb[c[w>>2]&15](F,d,3560,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=290;break f}f=f+-4|0;break i}while(0);nb[c[w>>2]&15](F,d,3556,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=281;break f}f=f+-4|0;break i}while(0);nb[c[w>>2]&15](F,d,3552,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=272;break f}f=f+-4|0;break i}while(0);nb[c[w>>2]&15](F,d,3548,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=263;break f}f=f+-4|0;break i}while(0);nb[c[w>>2]&15](F,d,3544,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}j=r+4|0;if(!n?(a[j>>0]|0)<=-65:0){B=254;break f}f=f+-4|0;break i}while(0);if((B|0)==303?(B=0,(a[r+3>>0]|0)>-65):0){j=0;B=304}do if((B|0)==304){B=0;if((r|0)!=9456?Xj(9456,r,3)|0:0)break;nb[c[w>>2]&15](F,d,3572,1);n=F;A=c[n>>2]|0;m=A&255;n=kk(A|0,c[n+4>>2]|0,8)|0;if(m<<24>>24!=3){G=y;k=n;E=m;break b}if(!j){if(f>>>0<=3){B=320;break f}j=r+3|0;if((a[j>>0]|0)<=-65){B=320;break f}}else j=r+3|0;f=f+-3|0;break i}while(0);if((f|0)!=5){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)j=0;else break h}else j=1;do if((r|0)!=9459){if(!(Xj(9459,r,5)|0))break;if(!j){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)j=0;else break h}else j=1;do if((r|0)!=9464){if(!(Xj(9464,r,5)|0))break;if(!j){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)j=0;else break h}else j=1;do if((r|0)!=9469){if(!(Xj(9469,r,5)|0))break;if(!j){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)j=0;else break h}else j=1;do if((r|0)!=9474){if(!(Xj(9474,r,5)|0))break;if(!j){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)n=0;else break h}else n=1;do if((r|0)!=9479){if(!(Xj(9479,r,5)|0))break;if(!n){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)n=0;else break h}else n=1;do if((r|0)!=9484){if(!(Xj(9484,r,5)|0))break;if(!n){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)n=0;else break h}else n=1;do if((r|0)!=9489){if(!(Xj(9489,r,5)|0))break;if(!n){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)n=0;else break h}else n=1;do if((r|0)!=9494){if(!(Xj(9494,r,5)|0))break;if(!n){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)n=0;else break h}else n=1;do if((r|0)!=9499){if(!(Xj(9499,r,5)|0))break;if(!n){if(f>>>0<=5)break h;if((a[r+5>>0]|0)>-65)n=0;else break h}else n=1;if((r|0)!=9504?Xj(9504,r,5)|0:0)break h;nb[c[w>>2]&15](F,d,3612,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}if(!n){if(f>>>0<=5){B=436;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=436;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3608,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}if(!n){if(f>>>0<=5){B=428;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=428;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3604,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}if(!n){if(f>>>0<=5){B=416;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=416;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3600,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}if(!n){if(f>>>0<=5){B=404;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=404;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3596,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}if(!n){if(f>>>0<=5){B=392;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=392;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3592,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24!=3){G=y;k=m;E=j;break b}if(!n){if(f>>>0<=5){B=380;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=380;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3588,1);n=F;A=c[n>>2]|0;m=A&255;n=kk(A|0,c[n+4>>2]|0,8)|0;if(m<<24>>24!=3){G=y;k=n;E=m;break b}if(!j){if(f>>>0<=5){B=368;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=368;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3584,1);n=F;A=c[n>>2]|0;m=A&255;n=kk(A|0,c[n+4>>2]|0,8)|0;if(m<<24>>24!=3){G=y;k=n;E=m;break b}if(!j){if(f>>>0<=5){B=356;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=356;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3580,1);n=F;A=c[n>>2]|0;m=A&255;n=kk(A|0,c[n+4>>2]|0,8)|0;if(m<<24>>24!=3){G=y;k=n;E=m;break b}if(!j){if(f>>>0<=5){B=344;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=344;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);nb[c[w>>2]&15](F,d,3576,1);n=F;A=c[n>>2]|0;m=A&255;n=kk(A|0,c[n+4>>2]|0,8)|0;if(m<<24>>24!=3){G=y;k=n;E=m;break b}if(!j){if(f>>>0<=5){B=332;break f}j=r+5|0;if((a[j>>0]|0)<=-65){B=332;break f}}else j=r+5|0;f=f+-5|0;break i}while(0);m=r+1|0;do if(!j){g=a[m>>0]|0;if(g<<24>>24<=-65){B=201;break f}A=f+-1|0;o=m+A|0;A=(A|0)==0;j=A?m:r+2|0;if(A){B=219;break}do if(g<<24>>24>-1)j=g&255;else{i=g&31;if((j|0)==(o|0)){m=0;n=o}else{m=a[j>>0]&63;n=j+1|0}j=m&255;if((g&255)<=223){j=j|i<<6;break}if((n|0)==(o|0)){m=0;n=o}else{m=a[n>>0]&63;n=n+1|0}m=m&255|j<<6;if((g&255)<=239){j=m|i<<12;break}if((n|0)==(o|0))j=0;else j=a[n>>0]&63;j=m<<6|i<<18&1835008|j&255}while(0);if((j|0)!=46){B=219;break}nb[c[w>>2]&15](F,d,3536,2);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24==3)m=2;else{G=y;k=m;E=j;break b}}else B=219;while(0);if((B|0)==219){B=0;nb[c[w>>2]&15](F,d,3540,1);m=F;A=c[m>>2]|0;j=A&255;m=kk(A|0,c[m+4>>2]|0,8)|0;if(j<<24>>24==3)m=1;else{G=y;k=m;E=j;break b}}if((f|0)!=(m|0)){if(f>>>0<=m>>>0){B=225;break f}j=r+m|0;if((a[j>>0]|0)<=-65){B=225;break f}}else j=r+f|0;f=f-m|0}while(0);if((B|0)==232){B=0;q=r+f|0;s=r;t=0;k:while(1){j=s;A=(j|0)==(q|0);m=A?s:j+1|0;if((s|0)==0|A){g=f;break}i=a[j>>0]|0;do if(i<<24>>24<=-1){p=i&31;j=m;if((j|0)==(q|0)){j=0;n=q}else{n=j+1|0;m=n;j=a[j>>0]&63}o=j&255;if((i&255)<=223){g=m;j=o|p<<6;break}if((n|0)==(q|0)){j=0;g=q}else{g=n+1|0;m=g;j=a[n>>0]&63}n=j&255|o<<6;if((i&255)<=239){g=m;j=n|p<<12;break}if((g|0)==(q|0))j=0;else{m=g+1|0;j=a[g>>0]&63}j=n<<6|p<<18&1835008|j&255;if((j|0)==1114112){g=f;break k}else g=m}else{g=m;j=i&255}while(0);m=t-s+g|0;switch(j&2097151|0){case 46:case 36:{B=246;break k}default:{s=g;t=m}}}if((B|0)==246){B=0;g=(j|0)==1114112?f:t}j=(g|0)==0|(f|0)==(g|0);if(!j){if(f>>>0<=g>>>0){B=442;break f}if((a[r+g>>0]|0)<=-65){B=442;break f}}nb[c[w>>2]&15](F,d,r,g);n=F;A=c[n>>2]|0;m=A&255;n=kk(A|0,c[n+4>>2]|0,8)|0;if(m<<24>>24!=3){G=y;k=n;E=m;break b}if(!j){if(f>>>0<=g>>>0){B=448;break f}j=r+g|0;if((a[j>>0]|0)<=-65){B=448;break f}}else j=r+g|0;f=f-g|0}if(!f)break g;else{r=j;B=195}}nb[c[w>>2]&15](F,d,r,f);j=F;A=c[j>>2]|0;f=A&255;j=kk(A|0,c[j+4>>2]|0,8)|0;if(f<<24>>24!=3){G=y;k=j;E=f;break b}}while(0);if(!h){B=452;break b}else{j=0;p=u}}switch(B|0){case 166:{$i(3300);break}case 173:{Ii(p,h,0,j);break}case 175:{Ze(8804,43,a[F+1>>0]|0);break}case 180:{Ii(r,f,m,f);break}case 188:{Ii(r,f,1,f);break}case 191:{Ii(r,m,1,m);break}case 201:{Ii(r,f,1,f);break}case 225:{Ii(r,f,m,f);break}case 254:{Ii(r,f,4,f);break}case 263:{Ii(r,f,4,f);break}case 272:{Ii(r,f,4,f);break}case 281:{Ii(r,f,4,f);break}case 290:{Ii(r,f,4,f);break}case 299:{Ii(r,f,4,f);break}case 308:{Ii(r,f,4,f);break}case 320:{Ii(r,f,3,f);break}case 332:{Ii(r,f,5,f);break}case 344:{Ii(r,f,5,f);break}case 356:{Ii(r,f,5,f);break}case 368:{Ii(r,f,5,f);break}case 380:{Ii(r,f,5,f);break}case 392:{Ii(r,f,5,f);break}case 404:{Ii(r,f,5,f);break}case 416:{Ii(r,f,5,f);break}case 428:{Ii(r,f,5,f);break}case 436:{Ii(r,f,5,f);break}case 442:{Ii(r,f,0,g);break}case 448:{Ii(r,f,g,f);break}}}}while(0);if((B|0)==118){nb[c[e+20>>2]&15](F,d,u,x);k=F;G=c[k>>2]|0;f=G&255;k=kk(G|0,c[k+4>>2]|0,8)|0;if(f<<24>>24==3)B=452;else{G=y;E=f}}if((B|0)==452){k=c[e+20>>2]|0;break}d=nk(k|0,G&16777215|0,8)|0;c[b>>2]=d|E&255;c[b+4>>2]=y;l=H;return}while(0);nb[k&15](b,d,3616,1);l=H;return}function yg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;s=u;t=d+73|0;if(a[t>>0]|0){c[b>>2]=0;l=u;return}e=d+72|0;a:do if(!(a[e>>0]|0)){a[e>>0]=1;yg(s,d);r=c[s>>2]|0;e=r;if((r|0)!=0?(f=c[s+4>>2]|0,(f|0)!=0):0){c[b>>2]=e;c[b+4>>2]=f}else g=7;do if((g|0)==7)if(!(a[t>>0]|0))break a;else{c[b>>2]=0;break}while(0);l=u;return}while(0);r=c[d+48>>2]|0;do if((c[d>>2]|0)==1){e=d+8|0;f=c[d+52>>2]|0;g=c[d+56>>2]|0;h=c[d+60>>2]|0;if((c[d+36>>2]|0)==-1){zg(s,e,r,f,g,h,1);break}else{zg(s,e,r,f,g,h,0);break}}else{n=d+8|0;o=d+4+9|0;p=c[d+52>>2]|0;e=a[o>>0]|0;q=c[n>>2]|0;while(1){m=e<<24>>24!=0;e=(m^1)&1;a[o>>0]=e;f=(q|0)==0;if(!(f|(p|0)==(q|0))){if(p>>>0<=q>>>0){g=18;break}if((a[r+q>>0]|0)<=-65){g=18;break}}do if(f)f=1114112;else{i=r+q|0;f=i+-1|0;k=a[f>>0]|0;if(k<<24>>24>-1){f=k&255;break}if((f|0)!=(r|0)){g=i+-2|0;j=a[g>>0]|0;f=j&31;if((j&-64)<<24>>24==-128){if((g|0)!=(r|0)){g=i+-3|0;h=a[g>>0]|0;f=h&15;if((h&-64)<<24>>24==-128){if((g|0)==(r|0))f=0;else f=a[i+-4>>0]&7;f=(f&255)<<6|h&63}}else f=0;f=f<<6|j&63}}else f=0;f=f<<6|k&63}while(0);if(m){g=35;break}if((f|0)==1114112){g=34;break}m=q-(f>>>0<128?1:f>>>0<2048?2:f>>>0<65536?3:4)|0;c[n>>2]=m;q=m}if((g|0)==18)Ii(r,p,0,q);else if((g|0)==34){c[s>>2]=0;break}else if((g|0)==35){c[s>>2]=1;c[s+4>>2]=q;c[s+8>>2]=q;break}}while(0);if((c[s>>2]|0)==1){f=c[s+8>>2]|0;d=d+68|0;e=(c[d>>2]|0)-f|0;c[d>>2]=c[s+4>>2]}else{a[t>>0]=1;e=c[d+64>>2]|0;f=e;e=(c[d+68>>2]|0)-e|0}c[b>>2]=r+f;c[b+4>>2]=e;l=u;return}function zg(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=d+24|0;j=c[s>>2]|0;k=j-h|0;a:do if(k>>>0>>0){r=d+32|0;p=d;o=c[p>>2]|0;p=c[p+4>>2]|0;q=c[d+12>>2]|0;n=c[d+16>>2]|0;d=k;b:while(1){c:while(1){k=d;while(1){m=nk(1,0,a[e+k>>0]&63|0)|0;if(!((m&o|0)==0&(y&p|0)==0))break;c[s>>2]=k;if(!i)c[r>>2]=h;d=k-h|0;if(d>>>0>>0){j=k;k=d}else break a}if(i)d=q;else{d=c[r>>2]|0;d=q>>>0<=d>>>0?q:d}m=j-h|0;k=d;do{l=k;k=k+-1|0;if(!l)break c;if(k>>>0>=h>>>0){d=35;break b}l=k+m|0;if(l>>>0>=f>>>0){d=18;break b}}while((a[g+k>>0]|0)==(a[e+l>>0]|0));j=k+j-q|0;c[s>>2]=j;if(!i)c[r>>2]=h;d=j-h|0;if(d>>>0>=f>>>0)break a}d=i?h:c[r>>2]|0;k=q;while(1){if(k>>>0>=d>>>0){d=25;break b}if(k>>>0>4294967294){d=25;break b}if(k>>>0>=h>>>0){d=36;break b}l=m+k|0;if(l>>>0>=f>>>0){d=28;break b}if((a[g+k>>0]|0)==(a[e+l>>0]|0))k=k+1|0;else break}j=j-n|0;c[s>>2]=j;if(!i)c[r>>2]=n;d=j-h|0;if(d>>>0>=f>>>0)break a}if((d|0)==18)bj(3620,l,f);else if((d|0)==25){c[s>>2]=m;if(!i)c[r>>2]=h;c[b>>2]=1;c[b+4>>2]=m;c[b+8>>2]=j;return}else if((d|0)==28)bj(3620,l,f);else if((d|0)==35)bj(3636,k,h);else if((d|0)==36)bj(3652,k,h)}while(0);c[s>>2]=0;c[b>>2]=0;return}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;h=j+16|0;f=j;i=a+4|0;if(((c[i>>2]|0)-b|0)>>>0>=d>>>0){l=j;return}g=b+d|0;if(g>>>0>>0)cj(9586,17);c[h>>2]=1;c[h+4>>2]=1;mg(f,h,g);if((c[f>>2]|0)!=1)$i(3668);e=c[f+4>>2]|0;d=c[f+8>>2]|0;if((e|0)<0)$i(3740);b=c[i>>2]|0;if(!b){b=Xb(e,d,h)|0;d=(b|0)==0&1;e=0;f=0}else{b=_b(c[a>>2]|0,b,1,e,d,h)|0;e=(b|0)==0;f=h+4|0;d=e&1;b=e?c[h>>2]|0:b;e=c[f>>2]|0;f=c[f+4>>2]|0}if((d|0)==1){c[h>>2]=b;d=h+4|0;c[d>>2]=e;c[d+4>>2]=f;Yb(h)}c[a>>2]=b;c[i>>2]=g;l=j;return}function Bg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;f=h+16|0;d=h;g=a+4|0;b=c[g>>2]|0;if(b|0){d=b<<1;if((d|0)<0)$i(3740);b=_b(c[a>>2]|0,b,1,d,1,f)|0;if(!b){i=f+4|0;j=c[i>>2]|0;i=c[i+4>>2]|0;c[f>>2]=c[f>>2];e=f+4|0;c[e>>2]=j;c[e+4>>2]=i;Yb(f)}f=b;i=a;j=d;c[i>>2]=f;c[g>>2]=j;l=h;return}c[f>>2]=1;c[f+4>>2]=1;mg(d,f,4);if((c[d>>2]|0)==1){b=c[d+4>>2]|0;if(b|0?(e=Xb(b,c[d+8>>2]|0,f)|0,e|0):0){f=e;i=a;j=4;c[i>>2]=f;c[g>>2]=j;l=h;return}}c[f>>2]=1;c[f+4>>2]=7654;c[f+8>>2]=30;Yb(f)}function Cg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;h=j+16|0;f=j;i=a+4|0;e=c[i>>2]|0;if((e-b|0)>>>0>=d>>>0){l=j;return}d=b+d|0;if(d>>>0>>0)cj(9586,17);g=e<<1;g=d>>>0>=g>>>0?d:g;c[h>>2]=1;c[h+4>>2]=1;mg(f,h,g);if((c[f>>2]|0)!=1)$i(3716);e=c[f+4>>2]|0;d=c[f+8>>2]|0;if((e|0)<0)$i(3740);b=c[i>>2]|0;if(!b){b=Xb(e,d,h)|0;d=(b|0)==0&1;e=0;f=0}else{b=_b(c[a>>2]|0,b,1,e,d,h)|0;e=(b|0)==0;f=h+4|0;d=e&1;b=e?c[h>>2]|0:b;e=c[f>>2]|0;f=c[f+4>>2]|0}if((d|0)==1){c[h>>2]=b;d=h+4|0;c[d>>2]=e;c[d+4>>2]=f;Yb(h)}c[a>>2]=b;c[i>>2]=g;l=j;return}function Dg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;h=j+16|0;f=j;i=a+4|0;e=c[i>>2]|0;if((e-b|0)>>>0>=d>>>0){l=j;return}d=b+d|0;if(d>>>0>>0)cj(9586,17);g=e<<1;g=d>>>0>=g>>>0?d:g;c[h>>2]=12;c[h+4>>2]=4;mg(f,h,g);if((c[f>>2]|0)!=1)$i(3716);e=c[f+4>>2]|0;d=c[f+8>>2]|0;if((e|0)<0)$i(3740);b=c[i>>2]|0;if(!b){b=Xb(e,d,h)|0;d=(b|0)==0&1;e=0;f=0}else{b=_b(c[a>>2]|0,b*12|0,4,e,d,h)|0;e=(b|0)==0;f=h+4|0;d=e&1;b=e?c[h>>2]|0:b;e=c[f>>2]|0;f=c[f+4>>2]|0}if((d|0)==1){c[h>>2]=b;d=h+4|0;c[d>>2]=e;c[d+4>>2]=f;Yb(h)}c[a>>2]=b;c[i>>2]=g;l=j;return}function Eg(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function Fg(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Gg(a){a=a|0;c[c[a>>2]>>2]=c[a+4>>2];return}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f+8|0;e=f;g=c[a>>2]|0;a=c[g>>2]|0;g=c[g+8>>2]|0;wi(e,b);b=a+g|0;if(g|0)do{c[d>>2]=a;a=a+1|0;Vi(e,d,2384)|0}while((a|0)!=(b|0));g=Wi(e)|0;l=f;return g|0}function Ig(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;d=c[a+8>>2]|0;e=b+(d*12|0)|0;if(d|0)do{d=c[b+4>>2]|0;if(d|0)Zb(c[b>>2]|0,d,1);b=b+12|0}while((b|0)!=(e|0));b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b*12|0,4);return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+48|0;m=t+36|0;p=t+24|0;q=t+16|0;r=t;c[r>>2]=4;c[r+4>>2]=0;s=r+8|0;c[s>>2]=0;h=c[b>>2]|0;d=c[b+4>>2]|0;e=c[b+8>>2]|0;f=(d|0)>(h|0);n=0;aa(26,r|0,0,(f?d-h|0:0)|0);o=n;n=0;if(o&1){t=na()|0;Ig(r);za(t|0)}g=c[r>>2]|0;b=c[s>>2]|0;c[q>>2]=s;o=q+4|0;c[o>>2]=b;c[p>>2]=h;k=p+4|0;c[k>>2]=d;j=p+8|0;c[j>>2]=e;if(!f){q=b;c[s>>2]=q;c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];l=t;return}i=m+4|0;g=g+(b*12|0)|0;while(1){f=h;h=h+1|0;c[p>>2]=h;n=0;aa(27,m|0,j|0,f|0);f=n;n=0;if(f&1){d=9;break}d=c[m>>2]|0;f=i;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!d){d=10;break}c[g>>2]=d;d=g+4|0;c[d>>2]=e;c[d+4>>2]=f;b=b+1|0;if((h|0)>=(c[k>>2]|0)){d=10;break}else g=g+12|0}if((d|0)==9){t=na()|0;c[o>>2]=b;Gg(q);Ig(r);za(t|0)}else if((d|0)==10){c[s>>2]=b;c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];l=t;return}}function Kg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;e=i+12|0;h=i;if((d|0)<0)$i(3740);if(d){f=Xb(d,1,e)|0;if(!f){c[e>>2]=0;Yb(e)}else g=f}else g=1;c[h>>2]=g;c[h+4>>2]=d;e=h+8|0;c[e>>2]=0;n=0;aa(23,h|0,0,d|0);g=n;n=0;if(g&1){i=na()|0;Eg(h);za(i|0)}else{g=c[e>>2]|0;c[e>>2]=g+d;ok((c[h>>2]|0)+g|0,b|0,d|0)|0;c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];l=i;return}}function Lg(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;b=e;d=Xb(28,4,b)|0;if(!d)Yb(b);else{c[d>>2]=c[3948];c[d+4>>2]=c[3949];c[d+8>>2]=c[3950];c[d+12>>2]=c[3951];c[d+16>>2]=c[3952];c[d+20>>2]=c[3953];c[d+24>>2]=c[3954];Ra(b|0)|0;Ja(b|0,0)|0;_a(d|0,b|0)|0;sa(b|0)|0;b=a;c[b>>2]=d;c[b+4>>2]=0;l=e;return}}function Mg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;f=h;if(b>>>0>8|b>>>0>a>>>0){c[f>>2]=0;i=(wj(f,b,a)|0)==0;if(i){e=c[f>>2]|0;g=4}}else{e=qj(a)|0;g=4}if((g|0)==4?e|0:0){i=e;l=h;return i|0}c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=b;i=0;l=h;return i|0}function Ng(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;b=d;f=c[a+4>>2]|0;e=c[a+8>>2]|0;c[b>>2]=c[a>>2];c[b+4>>2]=f;c[b+8>>2]=e;n=0;_(27,d+12|0,b|0);n=0;na()|0;Za()}function Og(a,b,c){a=a|0;b=b|0;c=c|0;rj(a);return}function Pg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=l;l=l+16|0;h=i;do if((d|0)==(f|0)){if(!(d>>>0>8|d>>>0>e>>>0)){f=sj(a,e)|0;if(!f){h=0;f=d;break}l=i;return f|0}c[h>>2]=0;j=(wj(h,d,e)|0)!=0;f=c[h>>2]|0;if(j|(f|0)==0){h=0;f=d}else{ok(f|0,a|0,(b>>>0<=e>>>0?b:e)|0)|0;rj(a);j=f;l=i;return j|0}}else{h=1;e=9672;f=36}while(0);c[g>>2]=h;c[g+4>>2]=e;c[g+8>>2]=f;j=0;l=i;return j|0}function Qg(a){a=a|0;return}function Rg(){return le(3812)|0}function Sg(a){a=a|0;c[a>>2]=0;c[a+4>>2]=2;return}function Tg(a){a=a|0;y=160875347;return 2033335871}function Ug(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=a;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,3764,e)|0;l=d;return b|0}function Vg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;b=c[d>>2]|0;c[d>>2]=b-1;if((b|0)!=1)return;Te(a);return}function Wg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;g=a+12|0;b=c[f>>2]|0;a:do if((b|0)!=(c[g>>2]|0)){while(1){c[f>>2]=b+8;e=c[b>>2]|0;b=c[b+4>>2]|0;n=0;Z(c[b>>2]|0,e|0);d=n;n=0;if(d&1)break;d=c[b+4>>2]|0;if(d|0)Zb(e,d,c[b+8>>2]|0);b=c[f>>2]|0;if((b|0)==(c[g>>2]|0))break a}a=na()|0;Fg(e,b);za(a|0)}while(0);b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b<<3,4);return}function Xg(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return yi(c[a>>2]|0,c[a+8>>2]|0,b)|0}function Yg(a){a=a|0;Zb(a,12,4);return}function Zg(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0;p=l;l=l+16|0;m=p;g=m+8|0;h=m+4|0;i=m+4|0;o=m+8|0;j=m+12|0;a=0;a:while(1){b=a;b:while(1){if(b>>>0>=10){a=5;break a}a=b+1|0;if(b>>>0>4294967294){a=5;break a}ik(15828)|0;k=c[3955]|0;c[3955]=(b|0)==9?1:0;mk(15828)|0;switch(k|0){case 1:{a=7;break a}case 0:{b=a;break}default:break b}}c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];b=c[m>>2]|0;f=c[g>>2]|0;d=b+(f<<3)|0;e=c[h>>2]|0;c[m>>2]=b;c[i>>2]=e;c[o>>2]=b;c[j>>2]=d;if(f|0){f=b;do{q=f;f=f+8|0;n=0;Z(c[(c[q+4>>2]|0)+12>>2]|0,c[q>>2]|0);q=n;n=0;if(q&1){a=9;break a}}while((f|0)!=(d|0));c[o>>2]=d}if(e|0)Zb(b,e<<3,4);Zb(k,12,4)}if((a|0)==5){l=p;return}else if((a|0)==7)ve(9754,37,3788);else if((a|0)==9){q=na()|0;c[o>>2]=f;Wg(m);Yg(k);za(q|0)}}function _g(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;i=m;j=a+4|0;d=c[j>>2]|0;c[h>>2]=0;d=ja(h|0,d|0)|0;c[g>>2]=d;c[f>>2]=g;c[e>>2]=15856;if(d|0){c[i>>2]=f;c[i+4>>2]=57;c[i+8>>2]=e;c[i+12>>2]=57;c[b>>2]=3820;c[b+4>>2]=3;c[b+8>>2]=5264;c[b+12>>2]=2;c[b+16>>2]=i;c[b+20>>2]=2;we(b,3844)}d=c[h>>2]|0;if(!d){j=c[j>>2]|0;c[h>>2]=0;j=ja(h|0,j|0)|0;c[g>>2]=j;c[f>>2]=g;c[e>>2]=15856;if(j|0){c[i>>2]=f;c[i+4>>2]=57;c[i+8>>2]=e;c[i+12>>2]=57;c[b>>2]=3820;c[b+4>>2]=3;c[b+8>>2]=5264;c[b+12>>2]=2;c[b+16>>2]=i;c[b+20>>2]=2;we(b,3844)}b=c[h>>2]|0;wa(0)|0;if(!b)ve(9791,26,3860);else k=b}else k=d;b=c[a>>2]|0;if(!b)c[a>>2]=k;if(!b){l=m;return k|0}wa(k|0)|0;k=b;l=m;return k|0}function $g(b){b=b|0;b=b+4|0;if((a[b>>0]|0)==3)return;ah(b);return}function ah(a){a=a|0;var b=0,e=0,f=0;if((d[a>>0]|0)<2)return;e=a+4|0;f=c[e>>2]|0;a=f+4|0;n=0;Z(c[c[a>>2]>>2]|0,c[f>>2]|0);b=n;n=0;if(b&1){b=na()|0;bh(c[f>>2]|0,c[a>>2]|0);ch(c[e>>2]|0);za(b|0)}a=c[a>>2]|0;b=c[a+4>>2]|0;if(b|0)Zb(c[f>>2]|0,b,c[a+8>>2]|0);Zb(c[e>>2]|0,12,4);return}function bh(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function ch(a){a=a|0;Zb(a,12,4);return}function dh(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b)return;d=a+4|0;n=0;Z(c[c[d>>2]>>2]|0,b|0);b=n;n=0;if(b&1){b=na()|0;eh(c[a>>2]|0,c[d>>2]|0);za(b|0)}d=c[d>>2]|0;b=c[d+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,c[d+8>>2]|0);return}function eh(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function fh(a){a=a|0;if(!(c[a>>2]|0))return;ah(a+4|0);return}function gh(b){b=b|0;b=c[b+4>>2]|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;return}function hh(a,b){a=a|0;b=b|0;var c=0;a=l;l=l+16|0;c=a;ui(c,b,10237,11);b=Ri(c)|0;l=a;return b|0}function ih(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0;i=l;l=l+16|0;m=i;gb[c[b+4>>2]&63](m);q=c[m>>2]|0;p=c[m+4>>2]|0;m=c[m+8>>2]|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;g=e+4|0;o=e+8|0;h=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;k=e+12|0;b=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[e>>0]=1;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;a[g>>0]=q;a[g+1>>0]=q>>8;a[g+2>>0]=q>>16;a[g+3>>0]=q>>24;a[o>>0]=p;a[o+1>>0]=p>>8;a[o+2>>0]=p>>16;a[o+3>>0]=p>>24;a[k>>0]=m;a[k+1>>0]=m>>8;a[k+2>>0]=m>>16;a[k+3>>0]=m>>24;if(j|0?(f=h,h|0):0){n=0;Z(c[b>>2]|0,f|0);q=n;n=0;if(q&1){q=na()|0;eh(f,b);za(q|0)}f=c[b+4>>2]|0;if(f|0)Zb(h,f,c[b+8>>2]|0)}if((c[e>>2]|0)==1){l=i;return g|0}else $i(3876);return 0}function jh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+64|0;b=i;e=i+48|0;f=i+32|0;g=fb[c[a>>2]&7]()|0;if(!g)Ue(10081,57);h=g+4|0;do if((c[h>>2]|0)==3){gb[c[a+4>>2]&63](f);c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2];c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((c[e+4>>2]&2|0)==0?(d=e+12|0,e=c[d>>2]|0,f=c[e>>2]|0,c[e>>2]=f-1,(f|0)==1):0)Te(d);if((c[h>>2]|0)==3)$i(3876);else break}while(0);a=c[g>>2]|0;if((a|0)==-1)_e(9983,24);h=c[h>>2]|0;c[g>>2]=a;if((h|0)==2){l=i;return}else ve(10199,38,3924)}function kh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m+8|0;g=m;f=fb[c[b>>2]&7]()|0;if(!f)Ue(10081,57);if((c[f>>2]|0)==1)k=f+4|0;else k=ih(b,f)|0;i=e;h=i;h=d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24;i=i+4|0;i=d[i>>0]|d[i+1>>0]<<8|d[i+2>>0]<<16|d[i+3>>0]<<24;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;e=g;c[e>>2]=h;c[e+4>>2]=i;if(c[k>>2]|0){n=0;_(23,9967,16);n=0;m=na()|0;dh(g);za(m|0)}a[k>>0]=-1;a[k+1>>0]=-1>>8;a[k+2>>0]=-1>>16;a[k+3>>0]=-1>>24;e=k+4|0;c[j>>2]=e;c[j+4>>2]=k;b=c[e>>2]|0;if(!b){j=e;g=j;c[g>>2]=h;j=j+4|0;c[j>>2]=i;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;l=m;return}f=k+8|0;n=0;Z(c[c[f>>2]>>2]|0,b|0);g=n;n=0;if(g&1){m=na()|0;eh(c[e>>2]|0,c[f>>2]|0);k=e;c[k>>2]=h;c[k+4>>2]=i;gh(j);za(m|0)}b=c[f>>2]|0;f=c[b+4>>2]|0;if(!f){j=e;g=j;c[g>>2]=h;j=j+4|0;c[j>>2]=i;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;l=m;return}Zb(c[e>>2]|0,f,c[b+8>>2]|0);j=e;g=j;c[g>>2]=h;j=j+4|0;c[j>>2]=i;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;l=m;return}function lh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0;o=l;l=l+112|0;m=o+32|0;h=o+96|0;i=o+80|0;p=o+16|0;j=o;e=o+64|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];n=0;k=Y(c[b>>2]|0)|0;f=n;n=0;if(f&1){p=na()|0;oh(e);za(p|0)}if(!k){d=e+8|0;q=c[d>>2]|0;f=c[q>>2]|0;c[q>>2]=f-1;if((f|0)==1){Te(d);Ue(10081,57)}else Ue(10081,57)};c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];f=k+4|0;a:do if((c[f>>2]|0)==3){n=0;Z(c[b+4>>2]|0,i|0);q=n;n=0;do if(!(q&1)){c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];c[h+8>>2]=c[m+8>>2];c[h+12>>2]=c[m+12>>2];if(((c[h+4>>2]&2|0)==0?(g=h+12|0,i=c[g>>2]|0,q=c[i>>2]|0,c[i>>2]=q-1,(q|0)==1):0)?(n=0,Z(50,g|0),q=n,n=0,q&1):0)break;if((c[f>>2]|0)==3){n=0;Z(44,3876);n=0;break}else break a}while(0);q=na()|0;oh(j);za(q|0)}while(0);h=j;i=c[h+4>>2]|0;q=c[j+8>>2]|0;j=p;c[j>>2]=c[h>>2];c[j+4>>2]=i;c[p+8>>2]=q;if(c[k>>2]|0){n=0;_(23,9967,16);n=0;d=na()|0;n=0;Z(61,p|0);q=n;n=0;if(!(q&1)){q=d;za(q|0)}q=na()|0;za(q|0)}c[k>>2]=-1;c[m>>2]=f;e=m+4|0;c[e>>2]=k;if((c[f>>2]|0)==2){c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];q=c[e>>2]|0;a[q>>0]=0;a[q+1>>0]=0;a[q+2>>0]=0;a[q+3>>0]=0;l=o;return}d=k+12|0;k=c[d>>2]|0;q=c[k>>2]|0;c[k>>2]=q-1;if((q|0)!=1){c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];q=c[e>>2]|0;a[q>>0]=0;a[q+1>>0]=0;a[q+2>>0]=0;a[q+3>>0]=0;l=o;return};n=0;Z(50,d|0);q=n;n=0;if(!(q&1)){c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];q=c[e>>2]|0;a[q>>0]=0;a[q+1>>0]=0;a[q+2>>0]=0;a[q+3>>0]=0;l=o;return}q=na()|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];mh(m);za(q|0)}function mh(b){b=b|0;b=c[b+4>>2]|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;return}function nh(a){a=a|0;var b=0,d=0;if((c[a>>2]|0)==2)return;a=a+8|0;d=c[a>>2]|0;b=c[d>>2]|0;c[d>>2]=b-1;if((b|0)!=1)return;Te(a);return}function oh(a){a=a|0;var b=0,d=0;a=a+8|0;d=c[a>>2]|0;b=c[d>>2]|0;c[d>>2]=b-1;if((b|0)!=1)return;Te(a);return}function ph(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,o=0;m=l;l=l+80|0;i=m;f=m+64|0;e=m+48|0;g=m+32|0;k=fb[c[b>>2]&7]()|0;if(!k){k=0;l=m;return k|0}j=k+4|0;do if((c[j>>2]|0)==3){gb[c[b+4>>2]&63](e);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];if((c[f+4>>2]&2|0)==0?(d=f+12|0,o=c[d>>2]|0,b=c[o>>2]|0,c[o>>2]=b-1,(b|0)==1):0)Te(d);if((c[j>>2]|0)==3)$i(3876);else break}while(0);b=c[k>>2]|0;do if((b|0)==-1){n=0;_(28,9983,24);n=0}else{o=c[j>>2]|0;c[k>>2]=b;if((o|0)==2){c[e>>2]=0;n=0;b=$(14,e|0)|0;o=n;n=0;if(o&1)break;c[g>>2]=0;c[g+8>>2]=b;if(c[k>>2]|0){n=0;_(23,9967,16);n=0;o=na()|0;nh(g);za(o|0)}c[k>>2]=-1;c[f>>2]=j;b=f+4|0;c[b>>2]=k;if(((c[j>>2]|0)!=2?(h=k+12|0,e=c[h>>2]|0,o=c[e>>2]|0,c[e>>2]=o-1,(o|0)==1):0)?(n=0,Z(50,h|0),o=n,n=0,o&1):0){o=na()|0;c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];mh(f);za(o|0)};c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];b=c[b>>2]|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;b=c[k>>2]|0}if(b|0){n=0;_(23,9967,16);n=0;o=na()|0;za(o|0)}c[k>>2]=-1;c[i>>2]=j;c[i+4>>2]=k;if((c[j>>2]|0)==2){n=0;Z(44,3876);n=0;o=na()|0;mh(i);za(o|0)}b=k+12|0;j=c[b>>2]|0;o=c[j>>2]|0;c[j>>2]=o+1;if((o|0)<0)Za();o=c[b>>2]|0;c[k>>2]=0;l=m;return o|0}while(0);o=na()|0;za(o|0);return 0}function qh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=l;l=l+32|0;p=s;q=s+8|0;a:do if(f|0){r=q+4|0;d=0;b:while(1){o=(f|0)>-1?f:2147483647;g=d;while(1){d=dk(2,e,o)|0;if((d|0)==-1){i=1;d=0;m=c[(Bj()|0)>>2]|0}else{i=0;m=g}c[q>>2]=i;h=r;c[h>>2]=d;c[h+4>>2]=m;h=d&255;j=m;k=m;if((i|0)!=1)break;g=kk(d|0,m|0,8)|0;switch(d&3){case 0:{if((m|0)!=4){u=12;break b}break}case 1:{t=g&255;u=18;break}case 2:{t=a[j+8>>0]|0;u=18;break}default:{u=15;break b}}if((u|0)==18?(u=0,t<<24>>24!=15):0){u=12;break b}if((h&255)>=2){d=m;g=j+4|0;n=0;Z(c[c[g>>2]>>2]|0,c[d>>2]|0);i=n;n=0;if(i&1){u=25;break b}d=c[g>>2]|0;g=c[d+4>>2]|0;if(g|0)Zb(c[m>>2]|0,g,c[d+8>>2]|0);Zb(k,12,4)}g=m}if(!d){u=9;break}if(f>>>0>>0){u=11;break}f=f-d|0;if(!f)break a;else{e=e+d|0;d=m}}do if((u|0)==9){n=0;ea(8,p|0,14,10248,28);u=n;n=0;if(u&1){u=na()|0;fh(q);za(u|0)}else{r=p;t=c[r+4>>2]|0;u=b;c[u>>2]=c[r>>2];c[u+4>>2]=t;break}}else if((u|0)==11){n=0;_(8,d|0,f|0);n=0;u=na()|0;fh(q);za(u|0)}else if((u|0)==12){u=b;c[u>>2]=d;c[u+4>>2]=m}else if((u|0)!=15)if((u|0)==25){u=na()|0;bh(c[d>>2]|0,c[g>>2]|0);ch(j);za(u|0)}while(0);l=s;return}while(0);a[b>>0]=3;l=s;return}function rh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+48|0;f=h;i=h+24|0;g=h+8|0;c[g>>2]=d;d=g+4|0;a[d>>0]=3;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[i+16>>2]=c[e+16>>2];c[i+20>>2]=c[e+20>>2];n=0;e=W(10,g|0,3900,i|0)|0;i=n;n=0;if(i&1){i=na()|0;$g(g);za(i|0)}do if(e){d=g+4|0;if((a[d>>0]|0)!=3){f=d;g=c[f+4>>2]|0;i=b;c[i>>2]=c[f>>2];c[i+4>>2]=g;l=h;return}n=0;ea(8,f|0,16,10138,15);i=n;n=0;if(i&1){i=na()|0;$g(g);za(i|0)}else{e=f;f=c[e+4>>2]|0;i=b;c[i>>2]=c[e>>2];c[i+4>>2]=f;break}}else a[b>>0]=3;while(0);switch(a[d>>0]&3){case 0:case 1:case 3:{l=h;return}default:{}}b=g+8|0;f=c[b>>2]|0;d=f+4|0;n=0;Z(c[c[d>>2]>>2]|0,c[f>>2]|0);i=n;n=0;if(i&1){i=na()|0;bh(c[f>>2]|0,c[d>>2]|0);ch(c[b>>2]|0);za(i|0)}d=c[d>>2]|0;e=c[d+4>>2]|0;if(e|0)Zb(c[f>>2]|0,e,c[d+8>>2]|0);Zb(c[b>>2]|0,12,4);l=h;return}function sh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=l;l=l+80|0;i=O;N=O+64|0;Ni(i,d,e,f,g);K=c[i>>2]|0;do if((K|0)==1){d=i+8|0;e=c[i+48>>2]|0;f=c[i+52>>2]|0;g=c[i+56>>2]|0;h=c[i+60>>2]|0;if((c[i+36>>2]|0)==-1){th(N,d,e,f,g,h,1);break}else{th(N,d,e,f,g,h,0);break}}else{M=i+28|0;C=i+48|0;D=i+52|0;L=i+36|0;E=i+56|0;F=i+60|0;G=i+8|0;H=i+16|0;I=i+24|0;J=i+12|0;B=i+4|0;d=0;a:while(1){if((d|0)==1){A=c[D>>2]|0;g=c[C>>2]|0;o=c[E>>2]|0;x=c[F>>2]|0;p=x+-1|0;r=G;q=c[r>>2]|0;r=c[r+4>>2]|0;s=c[H>>2]|0;f=c[I>>2]|0;t=x-f|0;e=c[M>>2]|0;h=c[L>>2]|0;if((e|0)==(A|0)){f=56;break}z=(h|0)==-1;i=p+e|0;b:do if(i>>>0>>0){d=x+e|0;u=d+p|0;v=u>>>0>>0;w=1-s+e|0;k=e+f|0;m=k+p|0;n=m>>>0>>0;f=e;while(1){c:while(1){while(1){if((e|0)!=(f|0)){e=h;break b}j=nk(1,0,a[g+i>>0]&63|0)|0;if(!((j&q|0)==0&(y&r|0)==0))break;h=z?h:0;if(v){f=d;i=u}else{f=A;e=h;break b}}f=z?s:h>>>0>=s>>>0?h:s;while(1){if(f>>>0>=x>>>0)break c;if(f>>>0>4294967294)break c;i=f+e|0;if(i>>>0>=A>>>0){f=40;break a}if((a[o+f>>0]|0)==(a[g+i>>0]|0))f=f+1|0;else break}f=w+f|0;h=z?h:0;i=f+p|0;if(i>>>0>=A>>>0){f=A;e=h;break b}}f=z?0:h;i=s;do{j=i;i=i+-1|0;if(f>>>0>=j>>>0){f=44;break a}if(i>>>0>=x>>>0){f=51;break a}j=i+e|0;if(j>>>0>=A>>>0){f=47;break a}}while((a[o+i>>0]|0)==(a[g+j>>0]|0));h=z?h:t;if(n){f=k;i=m}else{f=A;e=h;break}}}else{f=A;e=h}while(0);d:do if((f|0)==0|(A|0)==(f|0))d=f;else{d=f;do{if(A>>>0>d>>>0?(a[g+d>>0]|0)>-65:0)break d;d=d+1|0}while(!((d|0)==0|(A|0)==(d|0)))}while(0);c[M>>2]=f>>>0>=d>>>0?f:d;c[L>>2]=e;e=A}else{e=c[D>>2]|0;g=c[C>>2]|0}j=(a[J>>0]|0)!=0;a[J>>0]=(j^1)&1;k=c[B>>2]|0;if(!((k|0)==0|(e|0)==(k|0))){if(e>>>0<=k>>>0){f=8;break}d=g+k|0;if((a[d>>0]|0)<=-65){f=8;break}}else d=g+k|0;i=g+k+(e-k)|0;A=(d|0)==(i|0);e=A?d:g+k+1|0;do if(!A){g=a[d>>0]|0;if(g<<24>>24>-1){d=g&255;break}h=g&31;if((e|0)==(i|0)){d=0;f=i}else{d=a[e>>0]&63;f=e+1|0}e=d&255;d=e|h<<6;if((g&255)>223){if((f|0)==(i|0)){d=0;f=i}else{d=a[f>>0]&63;f=f+1|0}e=d&255|e<<6;d=e|h<<12;if((g&255)>239){if((f|0)==(i|0))d=0;else d=a[f>>0]&63;d=e<<6|h<<18&1835008|d&255}}}else d=1114112;while(0);if(j){e=k;d=k;f=58;break}if((d|0)==1114112){f=57;break}c[B>>2]=(d>>>0<128?1:d>>>0<2048?2:d>>>0<65536?3:4)+k;d=K}if((f|0)==8)Ii(g,e,k,e);else if((f|0)==40)bj(3956,i,A);else if((f|0)==44){c[L>>2]=h;c[M>>2]=d;if(z)f=58;else{c[L>>2]=0;f=58}}else if((f|0)==47)bj(3956,j,A);else if((f|0)==51)bj(3972,i,x);else if((f|0)==56){c[M>>2]=A;f=57}if((f|0)==57){c[N>>2]=0;break}else if((f|0)==58){c[N>>2]=1;c[N+4>>2]=e;c[N+8>>2]=d;break}}while(0);if((c[N>>2]|0)!=1){N=0;c[b>>2]=N;l=O;return}c[b+4>>2]=c[N+4>>2];N=1;c[b>>2]=N;l=O;return}function th(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=d+20|0;r=h+-1|0;k=c[t>>2]|0;j=k+r|0;a:do if(j>>>0>>0){s=d+28|0;p=d;o=c[p>>2]|0;p=c[p+4>>2]|0;q=c[d+8>>2]|0;m=c[d+16>>2]|0;n=h-m|0;d=k;b:while(1){c:while(1){l=d;while(1){k=nk(1,0,a[e+j>>0]&63|0)|0;if(!((k&o|0)==0&(y&p|0)==0))break;d=l+h|0;c[t>>2]=d;if(!i)c[s>>2]=0;j=d+r|0;if(j>>>0>=f>>>0)break a;else l=d}if(i)d=q;else{d=c[s>>2]|0;d=d>>>0>=q>>>0?d:q}do{if(d>>>0>=h>>>0)break c;j=d;d=d+1|0;if(j>>>0>4294967294)break c;k=l+j|0;if(k>>>0>=f>>>0){d=17;break b}}while((a[g+j>>0]|0)==(a[e+k>>0]|0));d=d+l-q|0;c[t>>2]=d;if(!i)c[s>>2]=0;j=d+r|0;if(j>>>0>=f>>>0)break a}d=i?0:c[s>>2]|0;j=q;do{k=j;j=j+-1|0;if(d>>>0>=k>>>0){d=23;break b}if(j>>>0>=h>>>0){d=33;break b}k=j+l|0;if(k>>>0>=f>>>0){d=26;break b}}while((a[g+j>>0]|0)==(a[e+k>>0]|0));d=m+l|0;c[t>>2]=d;if(!i)c[s>>2]=n;j=d+r|0;if(j>>>0>=f>>>0)break a}if((d|0)==17)bj(3956,k,f);else if((d|0)==23){d=l+h|0;c[t>>2]=d;if(!i)c[s>>2]=0;c[b>>2]=1;c[b+4>>2]=l;c[b+8>>2]=d;return}else if((d|0)==26)bj(3956,k,f);else if((d|0)==33)bj(3972,j,h)}while(0);c[t>>2]=f;c[b>>2]=0;return}function uh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+12|0;h=i;d=c[(c[c[b>>2]>>2]|0)+(d<<2)>>2]|0;e=Hj(d)|0;if((e|0)==-1)kj(-1,0);if((e|0)<0)$i(3740);if(e){b=Xb(e,1,g)|0;if(!b){c[g>>2]=0;Yb(g)}else f=b}else f=1;c[h>>2]=f;c[h+4>>2]=e;b=h+8|0;c[b>>2]=0;n=0;aa(23,h|0,0,e|0);g=n;n=0;if(g&1){i=na()|0;vh(h);za(i|0)}else{g=c[b>>2]|0;c[b>>2]=g+e;ok((c[h>>2]|0)+g|0,d|0,e|0)|0;c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];l=i;return}}function vh(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function wh(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;d=c[a+8>>2]|0;e=b+(d*12|0)|0;if(d|0)do{d=c[b+4>>2]|0;if(d|0)Zb(c[b>>2]|0,d,1);b=b+12|0}while((b|0)!=(e|0));b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b*12|0,4);return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;if(!f)return;b=c[f>>2]|0;d=c[f+8>>2]|0;e=b+(d*12|0)|0;if(d|0)do{d=c[b+4>>2]|0;if(d|0)Zb(c[b>>2]|0,d,1);b=b+12|0}while((b|0)!=(e|0));b=c[f+4>>2]|0;if(b|0)Zb(c[f>>2]|0,b*12|0,4);Zb(c[a>>2]|0,12,4);return}function yh(a,b){a=a|0;b=b|0;return yi(10417,25,b)|0}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+32|0;d=f+16|0;e=f;g=f+12|0;c[g>>2]=b;c[d>>2]=0;c[d+4>>2]=a;c[d+8>>2]=g;Jg(e,d);ik(15864)|0;if(c[3965]|0){n=0;aa(21,10313,34,3940);n=0;g=na()|0;wh(e);za(g|0)}a=Xb(12,4,d)|0;if(!a)Yb(d);else{c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[3965]=a;mk(15864)|0;l=f;return}}function Ah(a,b){a=a|0;b=b|0;a=l;l=l+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];Bh(0,a)}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d+24|0;a=d;c[e>>2]=b;c[e+4>>2]=61;c[a>>2]=3988;c[a+4>>2]=2;c[a+8>>2]=5180;c[a+12>>2]=1;c[a+16>>2]=e;c[a+20>>2]=1;Dh(d+32|0,a)|0;Za()}function Ch(a){a=a|0;return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=a;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,4004,e)|0;l=d;return b|0}function Eh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;b=j;c[b>>2]=0;if(d>>>0<128){a[b>>0]=d;d=1;dk(2,b,d)|0;l=j;return 0}do if(d>>>0>=2048)if(d>>>0<65536){a[b>>0]=d>>>12&15|-32;e=63;f=1;g=-128;h=2;i=3;break}else{a[b>>0]=d>>>18&255|-16;a[b+1>>0]=d>>>12&63|-128;e=63;f=2;g=-128;h=3;i=4;break}else{e=31;f=0;g=-64;h=1;i=2}while(0);a[b+f>>0]=e&d>>>6&255|g;a[b+h>>0]=d&63|-128;d=i;dk(2,b,d)|0;l=j;return 0}function Fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=c[a>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,4004,e)|0;l=d;return b|0}function Gh(a,b,c){a=a|0;b=b|0;c=c|0;dk(2,b,c)|0;return 0}function Hh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;n=0;Z(a|0,b|0);b=n;n=0;if(!(b&1)){e=0;return e|0}a=Da(0)|0;if(!a){n=0;Z(44,4028);n=0;na()|0;Za()}f=c[a>>2]|0;b=c[a+4>>2]|0;va(a|0);c[d>>2]=f;c[e>>2]=b;e=1;return e|0}function Ih(a,b){a=a|0;b=b|0;return Lh(a,b)|0}function Jh(a,b){a=a|0;b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Zb(a,d,c[b+8>>2]|0);return}function Kh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return la(a|0,b|0,c|0,d|0,e|0,f|0)|0}function Lh(a,b){a=a|0;b=b|0;var d=0;d=xa(8)|0;if(d|0){c[d>>2]=a;c[d+4>>2]=b;Ua(d|0,0,0)}n=0;Z(c[b>>2]|0,a|0);d=n;n=0;if(d&1){d=na()|0;Jh(a,b);za(d|0)}d=c[b+4>>2]|0;if(!d)return 3;Zb(a,d,c[b+8>>2]|0);return 3}function Mh(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;do switch(c[a>>2]&15){case 0:{vi(d,b,10573,14);d=Ti(d)|0;l=e;return d|0}case 1:{vi(d,b,10587,29);d=Ti(d)|0;l=e;return d|0}case 2:{vi(d,b,10616,23);d=Ti(d)|0;l=e;return d|0}case 3:{vi(d,b,10639,23);d=Ti(d)|0;l=e;return d|0}case 4:{vi(d,b,10662,16);d=Ti(d)|0;l=e;return d|0}case 5:{vi(d,b,10678,17);d=Ti(d)|0;l=e;return d|0}case 6:{vi(d,b,10695,18);d=Ti(d)|0;l=e;return d|0}case 7:{vi(d,b,10713,20);d=Ti(d)|0;l=e;return d|0}case 8:{vi(d,b,10733,20);d=Ti(d)|0;l=e;return d|0}case 9:{vi(d,b,10753,12);d=Ti(d)|0;l=e;return d|0}default:{}}while(0);return 0}function Nh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Qh(f,b,d);c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];l=e;return}function Oh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Qh(f,b,d);c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];l=e;return}function Ph(a){a=a|0;var b=0;b=c[a+4>>2]|0;if(!b)return;Zb(c[a>>2]|0,b,1);return}function Qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;e=i+12|0;h=i;if((d|0)<0)$i(4084);if(d){f=Xb(d,1,e)|0;if(!f){c[e>>2]=0;Yb(e)}else g=f}else g=1;c[h>>2]=g;c[h+4>>2]=d;e=h+8|0;c[e>>2]=0;n=0;aa(28,h|0,0,d|0);g=n;n=0;if(g&1){i=na()|0;Ph(h);za(i|0)}else{g=c[e>>2]|0;c[e>>2]=g+d;ok((c[h>>2]|0)+g|0,b|0,d|0)|0;c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];l=i;return}}function Rh(a,b){a=a|0;b=b|0;return zi(c[a>>2]|0,c[a+4>>2]|0,b)|0}function Sh(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];return}function Th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+48|0;g=d+32|0;f=d+24|0;e=d;a=(c[a>>2]|0)!=1;c[g>>2]=a?10765:10791;c[g+4>>2]=a?26:29;c[f>>2]=g;c[f+4>>2]=62;c[e>>2]=4076;c[e+4>>2]=1;c[e+8>>2]=5180;c[e+12>>2]=1;c[e+16>>2]=f;c[e+20>>2]=1;b=si(b,e)|0;l=d;return b|0}function Uh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=a+4|0;e=c[i>>2]|0;if((e-b|0)>>>0>=d>>>0){l=j;return}d=b+d|0;if(d>>>0>>0)cj(10820,17);g=e<<1;g=d>>>0>=g>>>0?d:g;if((g|0)<0)$i(4084);if(!e){b=Xb(g,1,h)|0;d=(b|0)==0&1;e=0;f=0}else{b=_b(c[a>>2]|0,e,1,g,1,h)|0;e=(b|0)==0;f=h+4|0;d=e&1;b=e?c[h>>2]|0:b;e=c[f>>2]|0;f=c[f+4>>2]|0}if((d|0)==1){c[h>>2]=b;d=h+4|0;c[d>>2]=e;c[d+4>>2]=f;Yb(h)}c[a>>2]=b;c[i>>2]=g;l=j;return}function Vh(a){a=a|0;return Zh(a,168)|0}function Wh(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Xh(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Yh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;m=d+4|0;n=c[m>>2]|0;if(!n){c[b>>2]=0;return}s=c[d>>2]|0;e=0;a:while(1){k=s+e|0;i=a[k>>0]|0;f=e+1|0;b:do if(i<<24>>24>-1)e=f;else switch(a[11498+(i&255)>>0]|0){case 2:{if(n>>>0<=f>>>0){u=15;break a}if((a[s+f>>0]&-64)<<24>>24!=-128){u=15;break a}e=e+2|0;break b}case 3:{if(n>>>0<=f>>>0){u=15;break a}g=a[s+f>>0]|0;h=(g&255)<192;if(((!(i<<24>>24==-32&(g&-32)<<24>>24==-96)?(j=g<<24>>24<0,!(h&((i+31&255)<12&j))):0)?!((g&255)<160&(i<<24>>24==-19&j)):0)?!(h&((i&-2)<<24>>24==-18&j)):0){u=15;break a}f=e+2|0;if(n>>>0<=f>>>0){u=15;break a}if((a[s+f>>0]&-64)<<24>>24!=-128){u=15;break a}e=e+3|0;break b}case 4:{if(n>>>0<=f>>>0){u=15;break a}g=a[s+f>>0]|0;if((!(i<<24>>24==-16&(g+112&255)<48)?(l=g<<24>>24<0,!((g&255)<192&((i+15&255)<3&l))):0)?!((g&255)<144&(i<<24>>24==-12&l)):0){u=15;break a}f=e+2|0;if(n>>>0<=f>>>0){u=15;break a}if((a[s+f>>0]&-64)<<24>>24!=-128){u=15;break a}f=e+3|0;if(n>>>0<=f>>>0){u=15;break a}if((a[s+f>>0]&-64)<<24>>24!=-128){u=15;break a}e=e+4|0;break b}default:{u=15;break a}}while(0);if(e>>>0>=n>>>0){o=16465;p=0;q=n;r=16465;t=0;break}}do if((u|0)==15){if(n>>>0>>0)kj(e,n);if(f>>>0>>0)lj(e,f);if(n>>>0>>0)kj(f,n);else{o=s+f|0;p=n-f|0;q=e;r=k;t=f-e|0;break}}while(0);c[d>>2]=o;c[m>>2]=p;c[b>>2]=s;c[b+4>>2]=q;c[b+8>>2]=r;c[b+12>>2]=t;return}function Zh(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;do if(a>>>0>=2048){if(a>>>0<65536){e=(a>>>6)+-32|0;if(e>>>0>=992)bj(4108,e,992);e=d[b+280+e>>0]|0;f=c[b+260>>2]|0;if(e>>>0>>0){g=(c[b+256>>2]|0)+(e<<3)|0;break}else bj(4124,e,f)}e=(a>>>12)+-16|0;if(e>>>0>=256)bj(4108,e,256);f=c[b+268>>2]|0;e=(d[b+1272+e>>0]|0)<<6|a>>>6&63;if(e>>>0>=f>>>0)bj(4108,e,f);e=d[(c[b+264>>2]|0)+e>>0]|0;f=c[b+276>>2]|0;if(e>>>0>>0){g=(c[b+272>>2]|0)+(e<<3)|0;break}else bj(4140,e,f)}else g=b+(a>>>6<<3)|0;while(0);f=c[g>>2]|0;g=c[g+4>>2]|0;b=nk(1,0,a&63|0)|0;return (f&b|0)!=0|(g&y|0)!=0|0}function _h(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+128|0;i=j;g=c[b>>2]|0;b=i;e=b+128|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(e|0));f=128;h=i+128|0;e=g;while(1){h=h+-1|0;b=e&15;e=e>>>4;a[h>>0]=((b&255)<10?48:87)+b<<24>>24;b=f+-1|0;if(!e)break;else f=b}if(b>>>0>128)lj(b,128);else{i=oi(d,1,11390,2,i+b|0,129-f|0)|0;l=j;return i|0}return 0}function $h(a,b){a=a|0;b=b|0;return ai(a,b)|0}function ai(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;j=l;l=l+48|0;i=j;d=c[d>>2]|0;if(d>>>0>9999){h=39;g=d;while(1){k=(g>>>0)%1e4|0;d=(g>>>0)/1e4|0;f=h+-4|0;m=i+f|0;n=b[4156+(((k>>>0)/100|0)<<1)>>1]|0;a[m>>0]=n;a[m+1>>0]=n>>8;h=i+(h+-2)|0;k=b[4156+(((k>>>0)%100|0)<<1)>>1]|0;a[h>>0]=k;a[h+1>>0]=k>>8;if(g>>>0>99999999){h=f;g=d}else break}}else f=39;if((d|0)>99){f=f+-2|0;n=i+f|0;m=b[4156+(((d>>>0)%100|0)<<1)>>1]|0;a[n>>0]=m;a[n+1>>0]=m>>8;d=(d>>>0)/100|0}if((d|0)<10){n=f+-1|0;a[i+n>>0]=(d&255)+48<<24>>24;m=i+n|0;n=39-n|0;n=oi(e,1,16465,0,m,n)|0;l=j;return n|0}else{n=f+-2|0;m=i+n|0;k=b[4156+(d<<1)>>1]|0;a[m>>0]=k;a[m+1>>0]=k>>8;m=i+n|0;n=39-n|0;n=oi(e,1,16465,0,m,n)|0;l=j;return n|0}return 0}function bi(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=a[b>>0]|0;b=h;d=b+128|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(d|0));e=128;g=h+128|0;d=f;while(1){g=g+-1|0;b=d&15;d=(d&255)>>>4;a[g>>0]=((b&255)<10?48:55)+b<<24>>24;b=e+-1|0;if(!(d<<24>>24))break;else e=b}if(b>>>0>128)lj(b,128);else{h=oi(c,1,11390,2,h+b|0,129-e|0)|0;l=i;return h|0}return 0}function ci(c,d){c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+48|0;f=h;c=a[c>>0]|0;e=c&255;if((c&255)<=99)if((c&255)<10){c=38;g=4}else{c=f+37|0;e=b[4156+(e<<1)>>1]|0;a[c>>0]=e;a[c+1>>0]=e>>8;c=37}else{e=f+37|0;g=b[4156+(((c&255)%100|0)<<1&255)>>1]|0;a[e>>0]=g;a[e+1>>0]=g>>8;e=((c&255)/100|0)&255;c=36;g=4}if((g|0)==4)a[f+c>>0]=(e&255)+48<<24>>24;g=oi(d,1,16465,0,f+c|0,39-c|0)|0;l=h;return g|0}function di(a,b){a=a|0;b=b|0;return ei(a,b)|0}function ei(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;j=k;d=c[d>>2]|0;i=(d|0)>-1;d=i?d:0-d|0;if(d>>>0>9999){h=39;g=d;while(1){m=(g>>>0)%1e4|0;f=(g>>>0)/1e4|0;d=h+-4|0;n=j+d|0;o=b[4156+(((m>>>0)/100|0)<<1)>>1]|0;a[n>>0]=o;a[n+1>>0]=o>>8;h=j+(h+-2)|0;m=b[4156+(((m>>>0)%100|0)<<1)>>1]|0;a[h>>0]=m;a[h+1>>0]=m>>8;if(g>>>0>99999999){h=d;g=f}else break}}else{f=d;d=39}if((f|0)>99){d=d+-2|0;o=j+d|0;n=b[4156+(((f>>>0)%100|0)<<1)>>1]|0;a[o>>0]=n;a[o+1>>0]=n>>8;f=(f>>>0)/100|0}if((f|0)<10){o=d+-1|0;a[j+o>>0]=(f&255)+48<<24>>24;n=j+o|0;o=39-o|0;o=oi(e,i,16465,0,n,o)|0;l=k;return o|0}else{o=d+-2|0;n=j+o|0;m=b[4156+(f<<1)>>1]|0;a[n>>0]=m;a[n+1>>0]=m>>8;n=j+o|0;o=39-o|0;o=oi(e,i,16465,0,n,o)|0;l=k;return o|0}return 0}function fi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;j=l;l=l+48|0;i=j;d=c[d>>2]|0;if(d>>>0>9999){h=39;g=d;while(1){k=(g>>>0)%1e4|0;d=(g>>>0)/1e4|0;f=h+-4|0;m=i+f|0;n=b[4156+(((k>>>0)/100|0)<<1)>>1]|0;a[m>>0]=n;a[m+1>>0]=n>>8;h=i+(h+-2)|0;k=b[4156+(((k>>>0)%100|0)<<1)>>1]|0;a[h>>0]=k;a[h+1>>0]=k>>8;if(g>>>0>99999999){h=f;g=d}else break}}else f=39;if((d|0)>99){f=f+-2|0;n=i+f|0;m=b[4156+(((d>>>0)%100|0)<<1)>>1]|0;a[n>>0]=m;a[n+1>>0]=m>>8;d=(d>>>0)/100|0}if((d|0)<10){n=f+-1|0;a[i+n>>0]=(d&255)+48<<24>>24;m=i+n|0;n=39-n|0;n=oi(e,1,16465,0,m,n)|0;l=j;return n|0}else{n=f+-2|0;m=i+n|0;k=b[4156+(d<<1)>>1]|0;a[m>>0]=k;a[m+1>>0]=k>>8;m=i+n|0;n=39-n|0;n=oi(e,1,16465,0,m,n)|0;l=j;return n|0}return 0}function gi(a){a=a|0;return}function hi(a,b,d){a=a|0;b=b|0;d=d|0;return Pi(c[a>>2]|0,b,d)|0}function ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=c[b>>2]|0;c[j>>2]=0;if(d>>>0<128){a[j>>0]=d;b=1}else{do if(d>>>0>=2048)if(d>>>0<65536){a[j>>0]=d>>>12&15|-32;e=63;f=1;g=-128;h=2;b=3;break}else{a[j>>0]=d>>>18&255|-16;a[j+1>>0]=d>>>12&63|-128;e=63;f=2;g=-128;h=3;b=4;break}else{e=31;f=0;g=-64;h=1;b=2}while(0);a[j+f>>0]=e&d>>>6&255|g;a[j+h>>0]=d&63|-128}j=Pi(i,j,b)|0;l=k;return j|0}function ji(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=c[a>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,5092,e)|0;l=d;return b|0}function ki(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;f=x+56|0;t=x;g=c[e+16>>2]|0;u=c[e+20>>2]|0;h=g+(u<<3)|0;c[t>>2]=0;r=t+4|0;c[r>>2]=32;s=t+48|0;a[s>>0]=3;c[t+8>>2]=0;c[t+16>>2]=0;w=t+24|0;c[w>>2]=b;v=t+28|0;c[v>>2]=d;c[t+32>>2]=g;o=t+36|0;c[o>>2]=h;p=t+40|0;c[p>>2]=g;q=t+44|0;c[q>>2]=u;b=c[e>>2]|0;u=b+(c[e+4>>2]<<3)|0;c[f>>2]=b;c[f+4>>2]=u;d=c[e+8>>2]|0;do if(!d){while(1){if((g|0)==(h|0)){g=4;break}if((b|0)==(u|0)){b=u;g=4;break}s=b;b=b+8|0;if(db[c[(c[v>>2]|0)+12>>2]&15](c[w>>2]|0,c[s>>2]|0,c[s+4>>2]|0)|0){g=12;break}if(lb[c[g+4>>2]&127](c[g>>2]|0,t)|0){g=12;break}else g=g+8|0}if((g|0)==4){c[f>>2]=b;g=6;break}else if((g|0)==12){c[f>>2]=b;break}}else{j=d+((c[e+12>>2]|0)*36|0)|0;k=t+8|0;m=t+16|0;n=t+32|0;i=d;a:while(1){if((i|0)==(j|0)){g=5;break}h=i;i=i+36|0;if((b|0)==(u|0)){b=u;g=5;break}e=b;b=b+8|0;if(db[c[(c[v>>2]|0)+12>>2]&15](c[w>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0){g=13;break}c[r>>2]=c[h+8>>2];a[s>>0]=a[h+32>>0]|0;c[t>>2]=c[h+12>>2];switch(c[h+24>>2]&3){case 0:{g=c[h+28>>2]|0;d=0;e=1;break}case 1:{e=c[h+28>>2]|0;d=c[q>>2]|0;if(e>>>0>=d>>>0){g=27;break a}g=c[p>>2]|0;if((c[g+(e<<3)+4>>2]|0)==63){g=c[c[g+(e<<3)>>2]>>2]|0;d=0;e=1}else{g=0;d=0;e=0}break}case 2:{g=c[n>>2]|0;if((g|0)!=(c[o>>2]|0)?(c[n>>2]=g+8,(c[g+4>>2]|0)==63):0){g=c[c[g>>2]>>2]|0;d=0;e=1}else{g=0;d=0;e=0}break}case 3:{g=0;d=0;e=0;break}default:{g=22;break a}}y=k;c[y>>2]=e;c[y+4>>2]=g|d;switch(c[h+16>>2]&3){case 0:{g=c[h+20>>2]|0;d=0;e=1;break}case 1:{e=c[h+20>>2]|0;d=c[q>>2]|0;if(e>>>0>=d>>>0){g=37;break a}g=c[p>>2]|0;if((c[g+(e<<3)+4>>2]|0)==63){g=c[c[g+(e<<3)>>2]>>2]|0;d=0;e=1}else{g=0;d=0;e=0}break}case 2:{g=c[n>>2]|0;if((g|0)!=(c[o>>2]|0)?(c[n>>2]=g+8,(c[g+4>>2]|0)==63):0){g=c[c[g>>2]>>2]|0;d=0;e=1}else{g=0;d=0;e=0}break}case 3:{g=0;d=0;e=0;break}default:{g=32;break a}}y=m;c[y>>2]=e;c[y+4>>2]=g|d;if((c[h>>2]|0)==1){d=c[h+4>>2]|0;e=c[q>>2]|0;if(d>>>0>=e>>>0){g=44;break}g=(c[p>>2]|0)+(d<<3)|0}else{g=c[n>>2]|0;if((g|0)==(c[o>>2]|0)){g=40;break}c[n>>2]=g+8}if(lb[c[g+4>>2]&127](c[g>>2]|0,t)|0){g=13;break}}if((g|0)==5){c[f>>2]=b;g=6;break}else if((g|0)==13){c[f>>2]=b;break}else if((g|0)!=22)if((g|0)==27)bj(4380,e,d);else if((g|0)!=32)if((g|0)==37)bj(4380,e,d);else if((g|0)==40)$i(4396);else if((g|0)==44)bj(4420,d,e)}while(0);do if((g|0)==6){if((b|0)!=(u|0)?(c[f>>2]=b+8,db[c[(c[v>>2]|0)+12>>2]&15](c[w>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0):0)break;y=0;l=x;return y|0}while(0);y=1;l=x;return y|0}function li(a,b){a=a|0;b=b|0;return ai(a,b)|0}function mi(a,b){a=a|0;b=b|0;c[a>>2]=b;c[a+4>>2]=63;return}function ni(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=c[b+24>>2]|0;b=c[b+28>>2]|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];c[e+16>>2]=c[a+16>>2];c[e+20>>2]=c[a+20>>2];b=ki(f,b,e)|0;l=d;return b|0}function oi(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+48|0;v=w+28|0;s=w+16|0;n=w+32|0;o=w;m=w+8|0;c[m>>2]=e;c[m+4>>2]=f;c[o>>2]=1114112;if(d){d=c[b>>2]|0;if(!(d&1)){k=d;j=h}else{c[o>>2]=43;k=d;j=h+1|0}}else{c[o>>2]=45;k=c[b>>2]|0;j=h+1|0}a[n>>0]=0;if(k&4){a[n>>0]=1;i=e+f|0;if(!f)d=0;else{d=0;do{d=((a[e>>0]&-64)<<24>>24==-128&1)+d|0;e=e+1|0}while((e|0)!=(i|0))}j=j+f-d|0}c[s>>2]=o;c[s+4>>2]=n;c[s+8>>2]=m;a:do if((c[b+8>>2]|0)==1){d=c[b+12>>2]|0;if(d>>>0<=j>>>0){if(pi(s,b)|0){u=41;break}d=db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,g,h)|0;u=38;break}if(!(k&8)){d=d-j|0;t=a[b+48>>0]|0;switch((t<<24>>24==3?1:t)&3){case 0:{q=d;p=0;break}case 3:case 1:{q=0;p=d;break}case 2:{q=(d+1|0)>>>1;p=d>>>1;break}default:{}}c[v>>2]=0;d=c[b+4>>2]|0;if(d>>>0<128){a[v>>0]=d;e=1}else{do if(d>>>0>=2048)if(d>>>0<65536){a[v>>0]=d>>>12&15|-32;e=3;i=63;j=1;k=-128;f=2;break}else{a[v>>0]=d>>>18&255|-16;a[v+1>>0]=d>>>12&63|-128;e=4;i=63;j=2;k=-128;f=3;break}else{e=2;i=31;j=0;k=-64;f=1}while(0);a[v+j>>0]=i&d>>>6&255|k;a[v+f>>0]=d&63|-128}i=b+24|0;j=b+28|0;d=0;while(1){if(d>>>0>=p>>>0){u=29;break}if(d>>>0>4294967294){u=29;break}if(db[c[(c[j>>2]|0)+12>>2]&15](c[i>>2]|0,v,e)|0)break;else d=d+1|0}b:do if(((u|0)==29?!(pi(s,b)|0):0)?!(db[c[(c[j>>2]|0)+12>>2]&15](c[i>>2]|0,g,h)|0):0){d=0;while(1){if(d>>>0>=q>>>0)break;if(d>>>0>4294967294)break;if(db[c[(c[j>>2]|0)+12>>2]&15](c[i>>2]|0,v,e)|0)break b;else d=d+1|0}d=0;u=38;break a}while(0);d=1;u=38;break}else{e=b+4|0;c[e>>2]=48;i=b+48|0;a[i>>0]=1;if(pi(s,b)|0){u=41;break}d=d-j|0;s=a[i>>0]|0;switch((s<<24>>24==3?1:s)&3){case 0:{r=0;t=d;break}case 3:case 1:{r=d;t=0;break}case 2:{r=d>>>1;t=(d+1|0)>>>1;break}default:{}}c[v>>2]=0;d=c[e>>2]|0;if(d>>>0<128){a[v>>0]=d;j=1}else{do if(d>>>0>=2048)if(d>>>0<65536){a[v>>0]=d>>>12&15|-32;e=63;i=1;k=-128;f=2;j=3;break}else{a[v>>0]=d>>>18&255|-16;a[v+1>>0]=d>>>12&63|-128;e=63;i=2;k=-128;f=3;j=4;break}else{e=31;i=0;k=-64;f=1;j=2}while(0);a[v+i>>0]=e&d>>>6&255|k;a[v+f>>0]=d&63|-128}i=b+24|0;e=b+28|0;d=0;while(1){if(d>>>0>=r>>>0){u=57;break}if(d>>>0>4294967294){u=57;break}if(db[c[(c[e>>2]|0)+12>>2]&15](c[i>>2]|0,v,j)|0)break;else d=d+1|0}c:do if((u|0)==57?!(db[c[(c[e>>2]|0)+12>>2]&15](c[i>>2]|0,g,h)|0):0){d=0;while(1){if(d>>>0>=t>>>0)break;if(d>>>0>4294967294)break;if(db[c[(c[e>>2]|0)+12>>2]&15](c[i>>2]|0,v,j)|0)break c;else d=d+1|0}d=0;u=38;break a}while(0);d=1;u=38;break}}else if(pi(s,b)|0)u=41;else{d=db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,g,h)|0;u=38}while(0);if((u|0)==38){v=d;l=w;return v|0}else if((u|0)==41){v=1;l=w;return v|0}return 0}function pi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o;j=c[c[b>>2]>>2]|0;if((j|0)!=1114112){m=c[d+24>>2]|0;n=c[d+28>>2]|0;c[k>>2]=0;if(j>>>0<128){a[k>>0]=j;e=1}else{do if(j>>>0>=2048)if(j>>>0<65536){a[k>>0]=j>>>12&15|-32;f=63;g=1;h=-128;i=2;e=3;break}else{a[k>>0]=j>>>18&255|-16;a[k+1>>0]=j>>>12&63|-128;f=63;g=2;h=-128;i=3;e=4;break}else{f=31;g=0;h=-64;i=1;e=2}while(0);a[k+g>>0]=f&j>>>6&255|h;a[k+i>>0]=j&63|-128}if(db[c[n+12>>2]&15](m,k,e)|0){n=1;l=o;return n|0}}if(!(a[c[b+4>>2]>>0]|0)){n=0;l=o;return n|0}n=c[b+8>>2]|0;n=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;l=o;return n|0}function qi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;q=b+8|0;f=(c[b+16>>2]|0)==1;if((c[q>>2]|0)==1)if(f)s=7;else{m=e;g=d}else if(f)s=7;else{u=db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,d,e)|0;l=v;return u|0}if((s|0)==7){g=c[b+20>>2]|0;n=d+e|0;c[u>>2]=0;o=u+4|0;c[o>>2]=d;k=u+8|0;c[k>>2]=n;f=u+12|0;c[f>>2]=g;p=d;a:do if(!g)if(!e)m=0;else{g=d+1|0;c[o>>2]=g;f=g;k=a[d>>0]|0;if(k<<24>>24<=-1){m=k&255;if((e|0)==1){g=0;h=n}else{h=d+2|0;c[o>>2]=h;f=h;g=a[g>>0]&63}i=g&255;if((k&255)>223){if((h|0)==(n|0)){g=0;j=n}else{j=h+1|0;c[o>>2]=j;f=j;g=a[h>>0]&63}h=g&255|i<<6;if((k&255)>239){if((j|0)==(n|0))g=0;else{f=j+1|0;c[o>>2]=f;g=a[j>>0]&63}if((h<<6|m<<18&1835008|g&255|0)==1114112){m=e;break}}}}c[u>>2]=f-p;m=0}else{c[f>>2]=0;j=u+4|0;if((Hi(j)|0)!=1114112){i=c[k>>2]|0;h=c[j>>2]|0;c[u>>2]=(c[u>>2]|0)+e-i+h;f=g;do{if((Hi(j)|0)==1114112){m=e;break a}f=f+-1|0;g=c[u>>2]|0;o=i;i=c[k>>2]|0;p=h;h=c[j>>2]|0;c[u>>2]=o-p+g-i+h}while((f|0)!=0);if(!((g|0)==0|(g|0)==(e|0))){if(g>>>0>=e>>>0)Ii(d,e,0,g);if((a[d+g>>0]|0)<=-65)Ii(d,e,0,g);else m=g}else m=g}else m=e}while(0);if((c[q>>2]|0)==1)g=d;else{u=db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,d,m)|0;l=v;return u|0}}k=c[b+12>>2]|0;j=d+m|0;i=(m|0)==0;if(i)f=0;else{h=g;f=0;do{f=((a[h>>0]&-64)<<24>>24==-128&1)+f|0;h=h+1|0}while((h|0)!=(j|0))}if((m-f|0)>>>0>=k>>>0){u=db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,d,m)|0;l=v;return u|0}if(i)f=0;else{f=0;do{f=((a[g>>0]&-64)<<24>>24==-128&1)+f|0;g=g+1|0}while((g|0)!=(j|0))}f=f-m+k|0;q=a[b+48>>0]|0;switch((q<<24>>24==3?0:q)&3){case 0:{r=0;t=f;break}case 3:case 1:{r=f;t=0;break}case 2:{r=f>>>1;t=(f+1|0)>>>1;break}default:{}}c[u>>2]=0;f=c[b+4>>2]|0;if(f>>>0<128){a[u>>0]=f;i=1}else{do if(f>>>0>=2048)if(f>>>0<65536){a[u>>0]=f>>>12&15|-32;g=63;h=1;j=-128;k=2;i=3;break}else{a[u>>0]=f>>>18&255|-16;a[u+1>>0]=f>>>12&63|-128;g=63;h=2;j=-128;k=3;i=4;break}else{g=31;h=0;j=-64;k=1;i=2}while(0);a[u+h>>0]=g&f>>>6&255|j;a[u+k>>0]=f&63|-128}h=b+24|0;g=b+28|0;f=0;while(1){if(f>>>0>=r>>>0){s=47;break}if(f>>>0>4294967294){s=47;break}if(db[c[(c[g>>2]|0)+12>>2]&15](c[h>>2]|0,u,i)|0)break;else f=f+1|0}b:do if((s|0)==47?!(db[c[(c[g>>2]|0)+12>>2]&15](c[h>>2]|0,d,m)|0):0){f=0;while(1){if(f>>>0>=t>>>0)break;if(f>>>0>4294967294)break;if(db[c[(c[g>>2]|0)+12>>2]&15](c[h>>2]|0,u,i)|0)break b;else f=f+1|0}u=0;l=v;return u|0}while(0);u=1;l=v;return u|0}function ri(a,b,d){a=a|0;b=b|0;d=d|0;return db[c[(c[a+28>>2]|0)+12>>2]&15](c[a+24>>2]|0,b,d)|0}function si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=c[a+24>>2]|0;a=c[a+28>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,a,e)|0;l=d;return b|0}function ti(a){a=a|0;return (c[a>>2]&4|0)!=0|0}function ui(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;f=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,e,f)|0;c[b>>2]=d;a[b+4>>0]=f&1;a[b+5>>0]=0;return}function vi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;e=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,e,f)|0;c[b>>2]=d;a[b+8>>0]=e&1;c[b+4>>2]=0;a[b+9>>0]=(f|0)==0&1;return}function wi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;f=e;h=c[d+24>>2]|0;g=c[d+28>>2]|0;c[f>>2]=5084;c[f+4>>2]=1;c[f+8>>2]=0;c[f+16>>2]=15892;c[f+20>>2]=0;f=(ki(h,g,f)|0)&1;c[b>>2]=d;a[b+4>>0]=f;a[b+5>>0]=0;l=e;return}function xi(a,b){a=a|0;b=b|0;return lb[c[(c[a+28>>2]|0)+16>>2]&127](c[a+24>>2]|0,b)|0}function yi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=e+24|0;r=e+28|0;if(lb[c[(c[r>>2]|0)+16>>2]&127](c[t>>2]|0,34)|0){w=1;return w|0}p=b+d|0;q=p;do if(d){e=b+1|0;f=e;j=a[b>>0]|0;if(j<<24>>24<=-1){k=j&31;if((d|0)==1){e=0;g=p}else{g=b+2|0;f=g;e=a[e>>0]&63}h=e&255;e=h|k<<6;if((j&255)>223){if((g|0)==(p|0)){e=0;i=p}else{i=g+1|0;f=i;e=a[g>>0]&63}g=e&255|h<<6;e=g|k<<12;if((j&255)>239){if((i|0)==(p|0))e=0;else{f=i+1|0;e=a[i>>0]&63}e=g<<6|k<<18&1835008|e&255;if((e|0)==1114112){e=0;w=17;break}}}}else e=j&255;o=f;g=f+d|0;f=e;m=0;e=0;a:while(1){n=g-q|0;switch(f&2097151|0){case 9:{l=116;g=2;i=0;j=0;break}case 13:{l=114;g=2;i=0;j=0;break}case 10:{l=110;g=2;i=0;j=0;break}case 34:case 39:case 92:{l=f;g=2;i=0;j=0;break}default:if(pj(f)|0){l=f;g=1;i=0;j=0}else{l=f;g=3;i=5;j=(Q(f|1|0)|0)>>>2^7}}switch(g&3){case 2:case 0:{w=38;break}case 1:break;case 3:{switch(i&7){case 0:{h=0;break}case 1:{h=1;break}case 2:{h=2;break}case 3:{h=3;break}case 4:{h=4;break}case 5:{h=5;break}default:{w=36;break a}}if((h+j|0)!=1)w=38;break}default:{w=29;break a}}if((w|0)==38){w=0;if(m>>>0>>0){w=45;break}if(!((e|0)==0|(e|0)==(d|0))){if(e>>>0>=d>>>0){w=45;break}if((a[b+e>>0]|0)<=-65){w=45;break}}if(!((m|0)==0|(m|0)==(d|0))){if(m>>>0>=d>>>0){w=45;break}if((a[b+m>>0]|0)<=-65){w=45;break}}if(db[c[(c[r>>2]|0)+12>>2]&15](c[t>>2]|0,b+e|0,m-e|0)|0){e=1;w=15;break}k=(l|0)==1114112;h=j;b:while(1){c:do switch(g&3){case 0:break b;case 1:{if(k)break b;else{e=l;g=0}break}case 2:{e=92;g=1;break}case 3:switch(i&7){case 0:break b;case 1:{e=125;i=i&-256;break c}case 2:{e=l>>>(h<<2&28)&15;e=((e&255)<10?48:87)+e|0;if(!h){i=i&-256|1;break c}else{h=h+-1|0;break c}}case 3:{e=123;i=i&-256|2;break c}case 4:{e=117;i=i&-256|3;break c}case 5:{e=92;i=i&-256|4;break c}default:{w=56;break a}}default:{w=49;break a}}while(0);if(lb[c[(c[r>>2]|0)+16>>2]&127](c[t>>2]|0,e)|0){e=1;w=15;break a}}e=(f>>>0<128?1:f>>>0<2048?2:f>>>0<65536?3:4)+m|0}f=o;if((f|0)==(p|0)){w=16;break}g=f+1|0;h=g;if(!o){w=16;break}j=a[f>>0]|0;if(j<<24>>24<=-1){k=j&31;if((g|0)==(p|0)){f=0;i=p;g=h}else{m=f+2|0;f=a[g>>0]&63;i=m;g=m}h=f&255;f=h|k<<6;if((j&255)>223){if((i|0)==(p|0)){f=0;i=p}else{g=i+1|0;f=a[i>>0]&63;i=g}h=f&255|h<<6;f=h|k<<12;if((j&255)>239){if((i|0)==(p|0))f=0;else{f=a[i>>0]&63;g=i+1|0}f=h<<6|k<<18&1835008|f&255;if((f|0)==1114112){w=16;break}}}}else{g=h;f=j&255}m=q-o+n+g|0;o=g;g=m;m=n}if((w|0)==15)return e|0;else if((w|0)==16){if((e|0)==0|(e|0)==(d|0)){w=17;break}if(e>>>0>=d>>>0)Ii(b,d,e,d);f=b+e|0;if((a[f>>0]|0)>-65){u=e;v=r;s=f;break}Ii(b,d,e,d)}else if((w|0)!=29)if((w|0)!=36)if((w|0)==45)Ii(b,d,e,m)}else{e=0;w=17}while(0);if((w|0)==17){u=e;v=r;s=b+e|0}if(db[c[(c[v>>2]|0)+12>>2]&15](c[t>>2]|0,s,d-u|0)|0){w=1;return w|0}w=lb[c[(c[r>>2]|0)+16>>2]&127](c[t>>2]|0,34)|0;return w|0}function zi(a,b,c){a=a|0;b=b|0;c=c|0;return qi(c,a,b)|0}function Ai(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+24|0;g=b+28|0;if(lb[c[(c[g>>2]|0)+16>>2]&127](c[h>>2]|0,39)|0){h=1;return h|0}b=c[a>>2]|0;switch(b&2097151|0){case 9:{f=116;d=0;a=0;b=2;break}case 13:{f=114;d=0;a=0;b=2;break}case 10:{f=110;d=0;a=0;b=2;break}case 34:case 39:case 92:{f=b;d=0;a=0;b=2;break}default:if(pj(b)|0){f=b;d=0;a=0;b=1}else{f=b;d=(Q(b|1|0)|0)>>>2^7;a=5;b=3}}e=a;a:while(1){b:do switch(b&3){case 0:{a=22;break a}case 1:{a=f;b=0;break}case 2:{a=92;b=1;break}case 3:switch(e&7){case 0:{a=22;break a}case 1:{a=125;e=e&-256;break b}case 2:{a=f>>>(d<<2&28)&15;a=((a&255)<10?48:87)+a|0;if(!d){e=e&-256|1;break b}else{d=d+-1|0;break b}}case 3:{a=123;e=e&-256|2;break b}case 4:{a=117;e=e&-256|3;break b}case 5:{a=92;e=e&-256|4;break b}default:{a=19;break a}}default:{a=11;break a}}while(0);if(lb[c[(c[g>>2]|0)+16>>2]&127](c[h>>2]|0,a)|0){b=1;a=9;break}}if((a|0)==9)return b|0;else if((a|0)!=11)if((a|0)!=19)if((a|0)==22){h=lb[c[(c[g>>2]|0)+16>>2]&127](c[h>>2]|0,39)|0;return h|0}return 0}function Bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;if((c[d+8>>2]|0)!=1?(c[d+16>>2]|0)!=1:0){j=lb[c[(c[d+28>>2]|0)+16>>2]&127](c[d+24>>2]|0,c[b>>2]|0)|0;l=k;return j|0}e=c[b>>2]|0;c[j>>2]=0;if(e>>>0<128){a[j>>0]=e;b=1}else{do if(e>>>0>=2048)if(e>>>0<65536){a[j>>0]=e>>>12&15|-32;f=63;g=1;h=-128;i=2;b=3;break}else{a[j>>0]=e>>>18&255|-16;a[j+1>>0]=e>>>12&63|-128;f=63;g=2;h=-128;i=3;b=4;break}else{f=31;g=0;h=-64;i=1;b=2}while(0);a[j+g>>0]=f&e>>>6&255|h;a[j+i>>0]=e&63|-128}j=qi(d,j,b)|0;l=k;return j|0}function Ci(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;d=a[c[d>>2]>>0]|0;f=d&255;if((d&255)<=99)if((d&255)<10){d=38;h=4}else{d=g+37|0;f=b[4156+(f<<1)>>1]|0;a[d>>0]=f;a[d+1>>0]=f>>8;d=37}else{f=g+37|0;h=b[4156+(((d&255)%100|0)<<1&255)>>1]|0;a[f>>0]=h;a[f+1>>0]=h>>8;f=((d&255)/100|0)&255;d=36;h=4}if((h|0)==4)a[g+d>>0]=(f&255)+48<<24>>24;h=oi(e,1,16465,0,g+d|0,39-d|0)|0;l=i;return h|0}function Di(a,b){a=a|0;b=b|0;return ai(c[a>>2]|0,b)|0}function Ei(a,b){a=a|0;b=b|0;return qi(b,c[a>>2]|0,c[a+4>>2]|0)|0}function Fi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;Gi(f,b,d);e=c[f>>2]|0;f=c[f+4>>2]|0;if(0==0&(f&255|0)==2){c[a>>2]=0;c[a+4>>2]=b;c[a+8>>2]=d;l=g;return}else{c[a>>2]=1;d=a+4|0;c[d>>2]=e;c[d+4>>2]=f;l=g;return}}function Gi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=e>>>0>7?e+-7|0:0;a:do if(e|0){i=0;b:while(1){f=d+i|0;h=a[f>>0]|0;c:do if(h<<24>>24>=0){if((f&3|4|0)!=4){f=i+1|0;break}d:do if(i>>>0>>0){f=i;do{i=d+f|0;if((c[i+4>>2]|c[i>>2])&-2139062144|0)break d;f=f+8|0}while(f>>>0>>0)}else f=i;while(0);if(f>>>0>>0)do{if((a[d+f>>0]|0)<=-1)break c;f=f+1|0}while(f>>>0>>0)}else{switch(a[11498+(h&255)>>0]|0){case 2:{f=i+1|0;if(f>>>0>=e>>>0){f=12;break b}if((a[d+f>>0]&-64)<<24>>24!=-128){f=15;break b}break}case 3:{f=i+1|0;if(f>>>0>=e>>>0){f=16;break b}f=a[d+f>>0]|0;g=(f&255)<192;if(((!(h<<24>>24==-32&(f&-32)<<24>>24==-96)?(k=f<<24>>24<0,!(g&((h+31&255)<12&k))):0)?!((f&255)<160&(h<<24>>24==-19&k)):0)?!(g&((h&-2)<<24>>24==-18&k)):0){f=19;break b}f=i+2|0;if(f>>>0>=e>>>0){f=23;break b}if((a[d+f>>0]&-64)<<24>>24!=-128){f=25;break b}break}case 4:{f=i+1|0;if(f>>>0>=e>>>0){f=26;break b}f=a[d+f>>0]|0;if((!(h<<24>>24==-16&(f+112&255)<48)?(l=f<<24>>24<0,!((f&255)<192&((h+15&255)<3&l))):0)?!((f&255)<144&(h<<24>>24==-12&l)):0){f=29;break b}f=i+2|0;if(f>>>0>=e>>>0){f=32;break b}if((a[d+f>>0]&-64)<<24>>24!=-128){f=34;break b}f=i+3|0;if(f>>>0>=e>>>0){f=36;break b}if((a[d+f>>0]&-64)<<24>>24!=-128){f=38;break b}break}default:{f=10;break b}}f=f+1|0}while(0);if(f>>>0>>0)i=f;else break a}switch(f|0){case 10:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=1;return}case 12:{c[b>>2]=i;a[b+4>>0]=0;return}case 15:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=1;return}case 16:{c[b>>2]=i;a[b+4>>0]=0;return}case 19:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=1;return}case 23:{c[b>>2]=i;a[b+4>>0]=0;return}case 25:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=2;return}case 26:{c[b>>2]=i;a[b+4>>0]=0;return}case 29:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=1;return}case 32:{c[b>>2]=i;a[b+4>>0]=0;return}case 34:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=2;return}case 36:{c[b>>2]=i;a[b+4>>0]=0;return}case 38:{c[b>>2]=i;a[b+4>>0]=1;a[b+5>>0]=3;return}}}while(0);a[b+4>>0]=2;return}function Hi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[b>>2]|0;h=c[b+4>>2]|0;if((d|0)==(h|0)){j=1114112;return j|0}e=d+1|0;c[b>>2]=e;i=a[d>>0]|0;if(i<<24>>24>-1){j=i&255;return j|0}j=i&31;if((e|0)==(h|0)){d=0;e=h}else{g=d+2|0;c[b>>2]=g;d=a[e>>0]&63;e=g}f=d&255;if((i&255)<=223){j=f|j<<6;return j|0}if((e|0)==(h|0)){d=0;g=h}else{g=e+1|0;c[b>>2]=g;d=a[e>>0]&63}e=d&255|f<<6;if((i&255)<=239){j=e|j<<12;return j|0}if((g|0)==(h|0))d=0;else{c[b>>2]=g+1;d=a[g>>0]&63}j=e<<6|j<<18&1835008|d&255;return j|0}function Ii(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=l;l=l+112|0;p=j+64|0;q=j+40|0;r=j+32|0;s=j+28|0;t=j+24|0;u=j+8|0;n=j;i=j+20|0;j=j+16|0;c[j>>2]=e;c[i>>2]=f;a:do if(d>>>0<257){g=d;h=0}else{g=256;while(1){if(g>>>0>>0?(a[b+g>>0]|0)>-65:0){h=1;break a}g=g+-1|0;if((g|0)==0|(g|0)==(d|0)){h=1;break}}}while(0);c[n>>2]=b;c[n+4>>2]=g;c[u>>2]=h?11754:16465;c[u+4>>2]=h?5:0;g=e>>>0>d>>>0;if(g|f>>>0>d>>>0){c[r>>2]=g?e:f;c[p>>2]=r;c[p+4>>2]=39;c[p+8>>2]=n;c[p+12>>2]=64;c[p+16>>2]=u;c[p+20>>2]=64;c[q>>2]=4436;c[q+4>>2]=3;c[q+8>>2]=4460;c[q+12>>2]=3;c[q+16>>2]=p;c[q+20>>2]=3;aj(q,4568)}if(e>>>0>f>>>0){c[p>>2]=j;c[p+4>>2]=39;c[p+8>>2]=i;c[p+12>>2]=39;c[p+16>>2]=n;c[p+20>>2]=64;c[p+24>>2]=u;c[p+28>>2]=64;c[q>>2]=4584;c[q+4>>2]=4;c[q+8>>2]=4616;c[q+12>>2]=4;c[q+16>>2]=p;c[q+20>>2]=4;aj(q,4760)}if(!((e|0)==0|(e|0)==(d|0))){if(e>>>0>>0?(a[b+e>>0]|0)>-65:0)k=12}else k=12;if((k|0)==12)e=f;c[t>>2]=e;g=(e|0)==0;b:do if(g|(e|0)==(d|0)){k=e;e=g}else while(1){if(e>>>0>>0?(a[b+e>>0]|0)>-65:0){k=e;e=0;break b}e=e+-1|0;g=(e|0)==0;if(g|(e|0)==(d|0)){k=e;e=g;break}}while(0);if(!(e|(k|0)==(d|0))){if(k>>>0>=d>>>0)Ii(b,d,k,d);e=b+k|0;if((a[e>>0]|0)>-65)m=e;else Ii(b,d,k,d)}else m=b+k|0;f=b+k+(d-k)|0;d=(m|0)==(f|0);g=d?m:b+k+1|0;if(d)$i(4776);i=a[m>>0]|0;if(i<<24>>24<=-1){j=i&31;if((g|0)==(f|0)){e=0;h=f}else{e=a[g>>0]&63;h=g+1|0}g=e&255;e=g|j<<6;if((i&255)>223){if((h|0)==(f|0)){e=0;h=f}else{e=a[h>>0]&63;h=h+1|0}g=e&255|g<<6;e=g|j<<12;if((i&255)>239){if((h|0)==(f|0))e=0;else e=a[h>>0]&63;e=g<<6|j<<18&1835008|e&255;if((e|0)==1114112)$i(4776);else o=e}else o=e}else o=e}else o=i&255;c[s>>2]=o;c[r>>2]=k;c[r+4>>2]=(o>>>0<128?1:o>>>0<2048?2:o>>>0<65536?3:4)+k;c[p>>2]=t;c[p+4>>2]=39;c[p+8>>2]=s;c[p+12>>2]=65;c[p+16>>2]=r;c[p+20>>2]=66;c[p+24>>2]=n;c[p+28>>2]=64;c[p+32>>2]=u;c[p+36>>2]=64;c[q>>2]=4800;c[q+4>>2]=5;c[q+8>>2]=4840;c[q+12>>2]=5;c[q+16>>2]=p;c[q+20>>2]=5;aj(q,5020)}function Ji(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+48|0;s=v+32|0;t=v;c[s>>2]=0;if(f>>>0<128){a[s>>0]=f;g=1}else{k=f>>>0<2048;do if(!k)if(f>>>0<65536){a[s>>0]=f>>>12&15|-32;g=63;h=1;i=-128;j=2;break}else{a[s>>0]=f>>>18&255|-16;a[s+1>>0]=f>>>12&63|-128;g=63;h=2;i=-128;j=3;break}else{g=31;h=0;i=-64;j=1}while(0);a[s+h>>0]=g&f>>>6&255|i;a[s+j>>0]=f&63|-128;g=k?2:f>>>0<65536?3:4}o=c[s>>2]|0;c[t>>2]=d;p=t+4|0;c[p>>2]=e;q=t+8|0;c[q>>2]=0;r=t+12|0;c[r>>2]=e;c[t+16>>2]=f;m=t+20|0;c[m>>2]=g;n=t+24|0;c[n>>2]=o;o=s+4|0;_i(s,a[g+-1+(t+24)>>0]|0,d,e);do if((c[s>>2]|0)==1){h=0;j=0;while(1){d=(c[o>>2]|0)+1+h|0;c[q>>2]=d;if(d>>>0>=g>>>0){f=d-g|0;i=c[p>>2]|0;e=d>>>0>>0|i>>>0>>0;h=(c[t>>2]|0)+f|0;k=e?j:g;if(!e){if(g>>>0>4){h=14;break}if((k|0)==(g|0)){if((h|0)==(n|0)){h=23;break}if(!(Xj(h,n,g)|0)){h=23;break}else j=g}else j=g}}else i=c[p>>2]|0;h=c[r>>2]|0;if(h>>>0>>0|i>>>0>>0){g=0;h=24;break}_i(s,a[g+-1+(t+24)>>0]|0,(c[t>>2]|0)+d|0,h-d|0);if((c[s>>2]|0)!=1){h=21;break}h=c[q>>2]|0;g=c[m>>2]|0}if((h|0)==14)kj(g,4);else if((h|0)==21){u=c[r>>2]|0;break}else if((h|0)==23){c[b+4>>2]=f;u=1;c[b>>2]=u;l=v;return}else if((h|0)==24){c[b>>2]=g;l=v;return}}else u=e;while(0);c[q>>2]=u;u=0;c[b>>2]=u;l=v;return}function Ki(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;i=g+8|0;f=g;h=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,11985,9)|0;c[f>>2]=d;e=f+4|0;a[e>>0]=h&1;h=f+5|0;a[h>>0]=0;c[i>>2]=b;Qi(f,11994,11,i,5036)|0;c[i>>2]=b+4;Qi(f,12005,9,i,5052)|0;d=a[e>>0]|0;if(!(a[h>>0]|0)){i=d;i=i<<24>>24!=0;l=g;return i|0}if(!(d<<24>>24)){d=c[f>>2]|0;d=(db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,c[d>>2]&4|0?12053:12055,2)|0)&1}else d=1;a[e>>0]=d;i=d;i=i<<24>>24!=0;l=g;return i|0}function Li(a){a=a|0;return}function Mi(a){a=a|0;return}function Ni(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0;switch(g|0){case 0:{c[b+48>>2]=d;c[b+52>>2]=e;c[b+56>>2]=f;c[b+60>>2]=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=e;a[b+12>>0]=1;a[b+13>>0]=1;return}case 1:{s=0;t=0;u=1;v=1;break}default:{p=0;h=1;x=3}}a:do if((x|0)==3){b:while(1){x=0;j=1;c:while(1){n=h;o=0;m=h;while(1){n=a[f+n>>0]|0;h=o+p|0;if(h>>>0>=g>>>0){x=6;break b}h=a[f+h>>0]|0;if((n&255)<(h&255))break;if(n<<24>>24!=h<<24>>24)break c;n=o+1|0;w=(n|0)==(j|0);h=w?0:n;m=(w?n:0)+m|0;n=m+h|0;if(n>>>0>=g>>>0){q=p;r=j;break b}else o=h}h=m+1+o|0;j=h-p|0;if(h>>>0>=g>>>0){q=p;r=j;break b}}h=m+1|0;if(h>>>0>=g>>>0){q=m;r=1;break}else{p=m;x=3}}if((x|0)==6)bj(5068,h,g);h=1;p=0;d:while(1){j=1;e:while(1){n=h;o=0;m=h;while(1){n=a[f+n>>0]|0;h=o+p|0;if(h>>>0>=g>>>0)break d;h=a[f+h>>0]|0;if((n&255)>(h&255))break;if(n<<24>>24!=h<<24>>24)break e;n=o+1|0;w=(n|0)==(j|0);h=w?0:n;m=(w?n:0)+m|0;n=m+h|0;if(n>>>0>=g>>>0){s=q;t=p;u=r;v=j;break a}else o=h}h=m+1+o|0;j=h-p|0;if(h>>>0>=g>>>0){s=q;t=p;u=r;v=j;break a}}h=m+1|0;if(h>>>0>=g>>>0){s=q;t=m;u=r;v=1;break a}else p=m}bj(5068,h,g)}while(0);r=s>>>0>t>>>0;w=r?s:t;t=r?u:v;if(w>>>0>g>>>0)kj(w,g);h=t+w|0;if(h>>>0>>0)lj(t,h);if(h>>>0>g>>>0)kj(h,g);s=f+t|0;if((s|0)!=(f|0)?(Xj(f,s,w)|0)!=0:0){m=g-w|0;n=m>>>0>=w>>>0;h=f+g|0;j=f;k=0;i=0;do{B=nk(1,0,a[j>>0]&63|0)|0;j=j+1|0;k=B|k;i=y|i}while((j|0)!=(h|0));l=w;z=(n?m:w)+1|0;A=-1;B=-1}else x=30;do if((x|0)==30){r=g+-1|0;h=1;o=0;p=1;m=0;while(1){if((p+o|0)>>>0>=g>>>0){x=40;break}j=g-o+~p|0;if(j>>>0>=g>>>0){x=33;break}n=a[f+j>>0]|0;j=r-o-m|0;if(j>>>0>=g>>>0){x=35;break}j=a[f+j>>0]|0;if((n&255)<(j&255)){n=o+1+p|0;h=n-m|0;j=0}else{x=n<<24>>24==j<<24>>24;n=o+1|0;v=(n|0)==(h|0);h=x?h:1;j=x?(v?0:n):0;n=(x?(v?n:0):1)+p|0;m=x?m:p}if((h|0)==(t|0)){x=40;break}else{o=j;p=n}}if((x|0)==33)bj(5068,j,g);else if((x|0)==35)bj(5068,j,g);else if((x|0)==40){p=0;q=1;h=0;o=1;while(1){if((q+p|0)>>>0>=g>>>0){x=50;break}j=g-p+~q|0;if(j>>>0>=g>>>0){x=43;break}n=a[f+j>>0]|0;j=r-p-h|0;if(j>>>0>=g>>>0){x=45;break}j=a[f+j>>0]|0;if((n&255)>(j&255)){o=p+1+q|0;n=o-h|0;j=0}else{x=n<<24>>24==j<<24>>24;v=p+1|0;u=(v|0)==(o|0);n=x?o:1;j=x?(u?0:v):0;o=(x?(u?v:0):1)+q|0;h=x?h:q}if((n|0)==(t|0)){x=50;break}else{p=j;q=o;o=n}}if((x|0)==43)bj(5068,j,g);else if((x|0)==45)bj(5068,j,g);else if((x|0)==50){l=g-(h>>>0>=m>>>0?h:m)|0;if(t>>>0>g>>>0)kj(t,g);if(!t){k=0;i=0;z=0;A=0;B=g;break}j=f;h=0;i=0;do{B=nk(1,0,a[j>>0]&63|0)|0;j=j+1|0;h=B|h;i=y|i}while((j|0)!=(s|0));k=h;z=t;A=0;B=g}}}while(0);c[b+48>>2]=d;c[b+52>>2]=e;c[b+56>>2]=f;c[b+60>>2]=g;c[b>>2]=1;g=b+8|0;c[g>>2]=k;c[g+4>>2]=i;c[b+16>>2]=w;c[b+20>>2]=l;c[b+24>>2]=z;c[b+28>>2]=0;c[b+32>>2]=e;c[b+36>>2]=A;c[b+40>>2]=B;return}function Oi(a){a=a|0;return}function Pi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o;if(!e){n=0;l=o;return n|0}k=b+8|0;m=j+4|0;n=b+4|0;h=e;while(1){if(a[k>>0]|0?db[c[(c[n>>2]|0)+12>>2]&15](c[b>>2]|0,12048,4)|0:0){d=1;e=5;break}Ji(j,d,h,10);if((c[j>>2]|0)==1){i=c[m>>2]|0;a[k>>0]=1;i=i+1|0}else{a[k>>0]=0;i=h}e=c[b>>2]|0;f=c[n>>2]|0;g=(i|0)==0|(h|0)==(i|0);if(!g){if(h>>>0<=i>>>0){e=12;break}if((a[d+i>>0]|0)<=-65){e=12;break}}if(db[c[f+12>>2]&15](e,d,i)|0){d=1;e=5;break}if(!g){if(h>>>0<=i>>>0){e=18;break}e=d+i|0;if((a[e>>0]|0)>-65)d=e;else{e=18;break}}else d=d+i|0;e=h-i|0;if(!e){d=0;e=5;break}else h=e}if((e|0)==5){l=o;return d|0}else if((e|0)==12)Ii(d,h,0,i);else if((e|0)==18)Ii(d,h,i,h);return 0}function Qi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;q=l;l=l+96|0;n=q+32|0;o=q+16|0;i=q;p=q+8|0;c[p>>2]=d;j=p+4|0;c[j>>2]=e;k=b+4|0;if(a[k>>0]|0){o=1;p=b+5|0;o=o&1;a[k>>0]=o;a[p>>0]=1;l=q;return b|0}m=b+5|0;h=(a[m>>0]|0)!=0;e=h?3572:12062;h=h?1:2;c[i>>2]=e;c[i+4>>2]=h;d=c[b>>2]|0;do if(!(c[d>>2]&4)){c[o>>2]=i;c[o+4>>2]=64;c[o+8>>2]=p;c[o+12>>2]=64;j=c[d+24>>2]|0;p=c[d+28>>2]|0;c[n>>2]=5116;c[n+4>>2]=3;c[n+8>>2]=5264;c[n+12>>2]=2;c[n+16>>2]=o;c[n+20>>2]=2;if(ki(j,p,n)|0)e=8;else{d=lb[c[g+12>>2]&127](f,c[b>>2]|0)|0;e=13}}else{z=c[d+28>>2]|0;c[o>>2]=c[d+24>>2];c[o+4>>2]=z;a[o+8>>0]=0;z=c[d+4>>2]|0;y=a[d+48>>0]|0;w=d+8|0;x=c[w>>2]|0;w=c[w+4>>2]|0;u=d+16|0;v=c[u>>2]|0;u=c[u+4>>2]|0;t=c[d+32>>2]|0;s=c[d+36>>2]|0;r=c[d+40>>2]|0;i=c[d+44>>2]|0;c[n>>2]=c[d>>2];c[n+4>>2]=z;a[n+48>>0]=y;d=n+8|0;c[d>>2]=x;c[d+4>>2]=w;d=n+16|0;c[d>>2]=v;c[d+4>>2]=u;c[n+24>>2]=o;c[n+28>>2]=4356;c[n+32>>2]=t;c[n+36>>2]=s;c[n+40>>2]=r;c[n+44>>2]=i;d=c[1092]|0;if(((!(db[d&15](o,e,h)|0)?!(db[d&15](o,12052,1)|0):0)?!(db[d&15](o,c[p>>2]|0,c[j>>2]|0)|0):0)?!(db[d&15](o,12064,2)|0):0){d=lb[c[g+12>>2]&127](f,n)|0;e=13;break}e=8}while(0);if((e|0)==8){y=1;z=m;y=y&1;a[k>>0]=y;a[z>>0]=1;l=q;return b|0}else if((e|0)==13){y=d;z=m;y=y&1;a[k>>0]=y;a[z>>0]=1;l=q;return b|0}return 0}function Ri(b){b=b|0;var d=0,e=0;e=b+4|0;d=a[e>>0]|0;if(!(a[b+5>>0]|0)){e=d;e=e<<24>>24!=0;return e|0}if(!(d<<24>>24)){b=c[b>>2]|0;b=(db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,c[b>>2]&4|0?12053:12055,2)|0)&1}else b=1;a[e>>0]=b;e=b;e=e<<24>>24!=0;return e|0}function Si(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=l;l=l+64|0;j=o+12|0;k=o;m=b+8|0;n=b+4|0;do if(!(a[m>>0]|0)){g=(c[n>>2]|0)!=0;i=g?3572:3564;f=g?3580:16465;g=g&1;h=c[b>>2]|0;if(!(c[h>>2]&4)){if(db[c[(c[h+28>>2]|0)+12>>2]&15](c[h+24>>2]|0,i,1)|0){f=1;break}k=c[b>>2]|0;if(db[c[(c[k+28>>2]|0)+12>>2]&15](c[k+24>>2]|0,f,g)|0){f=1;break}f=lb[c[e+12>>2]&127](d,c[b>>2]|0)|0;break}w=c[h+28>>2]|0;c[k>>2]=c[h+24>>2];c[k+4>>2]=w;a[k+8>>0]=0;w=c[h+4>>2]|0;v=a[h+48>>0]|0;t=h+8|0;u=c[t>>2]|0;t=c[t+4>>2]|0;r=h+16|0;s=c[r>>2]|0;r=c[r+4>>2]|0;q=c[h+32>>2]|0;p=c[h+36>>2]|0;g=c[h+40>>2]|0;f=c[h+44>>2]|0;c[j>>2]=c[h>>2];c[j+4>>2]=w;a[j+48>>0]=v;h=j+8|0;c[h>>2]=u;c[h+4>>2]=t;h=j+16|0;c[h>>2]=s;c[h+4>>2]=r;c[j+24>>2]=k;c[j+28>>2]=4356;c[j+32>>2]=q;c[j+36>>2]=p;c[j+40>>2]=g;c[j+44>>2]=f;f=c[1092]|0;if(!(db[f&15](k,i,1)|0)?!(db[f&15](k,12052,1)|0):0){f=lb[c[e+12>>2]&127](d,j)|0;break}f=1}else f=1;while(0);a[m>>0]=f&1;c[n>>2]=(c[n>>2]|0)+1;l=o;return b|0}function Ti(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+4|0;d=c[f>>2]|0;g=b+8|0;e=a[g>>0]|0;if(!d){g=e;g=g<<24>>24!=0;return g|0}do if(!(e<<24>>24)){e=c[b>>2]|0;if(c[e>>2]&4){if(db[c[(c[e+28>>2]|0)+12>>2]&15](c[e+24>>2]|0,12052,1)|0){d=1;break}d=c[f>>2]|0}if(((d|0)==1?a[b+9>>0]|0:0)?(f=c[b>>2]|0,db[c[(c[f+28>>2]|0)+12>>2]&15](c[f+24>>2]|0,3572,1)|0):0){d=1;break}d=c[b>>2]|0;d=(db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12057,1)|0)&1}else d=1;while(0);a[g>>0]=d;g=d;g=g<<24>>24!=0;return g|0}function Ui(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=l;l=l+64|0;g=j+12|0;h=j;i=b+4|0;if(a[i>>0]|0){d=1;e=b+5|0;d=d&1;a[i>>0]=d;a[e>>0]=1;l=j;return}f=c[b>>2]|0;if(c[f>>2]&4|0){u=c[f+28>>2]|0;c[h>>2]=c[f+24>>2];c[h+4>>2]=u;a[h+8>>0]=0;u=c[f+4>>2]|0;t=a[f+48>>0]|0;r=f+8|0;s=c[r>>2]|0;r=c[r+4>>2]|0;p=f+16|0;q=c[p>>2]|0;p=c[p+4>>2]|0;o=c[f+32>>2]|0;n=c[f+36>>2]|0;m=c[f+40>>2]|0;k=c[f+44>>2]|0;c[g>>2]=c[f>>2];c[g+4>>2]=u;a[g+48>>0]=t;f=g+8|0;c[f>>2]=s;c[f+4>>2]=r;f=g+16|0;c[f>>2]=q;c[f+4>>2]=p;c[g+24>>2]=h;c[g+28>>2]=4356;c[g+32>>2]=o;c[g+36>>2]=n;c[g+40>>2]=m;c[g+44>>2]=k;f=b+5|0;b=(a[f>>0]|0)!=0;if(db[c[4368>>2]&15](h,b?12058:12052,b?2:1)|0){t=1;u=f;t=t&1;a[i>>0]=t;a[u>>0]=1;l=j;return}else{t=lb[c[e+12>>2]&127](d,g)|0;u=f;t=t&1;a[i>>0]=t;a[u>>0]=1;l=j;return}}g=b+5|0;do if(a[g>>0]|0)if(db[c[(c[f+28>>2]|0)+12>>2]&15](c[f+24>>2]|0,12060,2)|0){t=1;u=g;t=t&1;a[i>>0]=t;a[u>>0]=1;l=j;return}else{f=c[b>>2]|0;break}while(0);t=lb[c[e+12>>2]&127](d,f)|0;u=g;t=t&1;a[i>>0]=t;a[u>>0]=1;l=j;return}function Vi(a,b,c){a=a|0;b=b|0;c=c|0;Ui(a,b,c);return a|0}function Wi(b){b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;if((c[d>>2]&4|0)!=0?(a[b+5>>0]|0)!=0:0)e=1;else e=0;f=b+4|0;if(a[f>>0]|0){a[f>>0]=1;f=1;return f|0}e=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,e?12052:16465,e&1)|0;a[f>>0]=e&1;if(e){f=1;return f|0}f=c[b>>2]|0;f=db[c[(c[f+28>>2]|0)+12>>2]&15](c[f+24>>2]|0,3592,1)|0;return f|0}function Xi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;c[j>>2]=0;if(d>>>0<128){a[j>>0]=d;e=1}else{do if(d>>>0>=2048)if(d>>>0<65536){a[j>>0]=d>>>12&15|-32;f=63;g=1;h=-128;i=2;e=3;break}else{a[j>>0]=d>>>18&255|-16;a[j+1>>0]=d>>>12&63|-128;f=63;g=2;h=-128;i=3;e=4;break}else{f=31;g=0;h=-64;i=1;e=2}while(0);a[j+g>>0]=f&d>>>6&255|h;a[j+i>>0]=d&63|-128}j=Pi(b,j,e)|0;l=k;return j|0}function Yi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d+8|0;f=d;c[f>>2]=a;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];b=ki(f,5092,e)|0;l=d;return b|0}function Zi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+48|0;e=d+16|0;f=d;c[f>>2]=a;c[f+4>>2]=67;c[f+8>>2]=a+4;c[f+12>>2]=67;a=c[b+24>>2]|0;b=c[b+28>>2]|0;c[e>>2]=5140;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;b=ki(a,b,e)|0;l=d;return b|0}function _i(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=e&3;g=4-k|0;a:do if((k|0)==0|(g|0)==0)g=0;else{j=g>>>0<=f>>>0?g:f;k=e+j|0;i=k;h=e;g=0;while(1){if((i-h|0)>>>0<=3){m=8;break}o=(a[h>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o)break;o=(a[h+1>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o)break;o=(a[h+2>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o)break;o=(a[h+3>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o)break;else h=h+4|0}if((m|0)==8)while(1){if((h|0)==(k|0)){g=j;break a}o=(a[h>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o)break;else{h=h+1|0;m=8}}c[b>>2]=1;c[b+4>>2]=g;return}while(0);h=d&255;h=h<<8|h;h=h<<16|h;if(f>>>0>7?(l=f+-8|0,g>>>0<=l>>>0):0){do{o=c[e+g>>2]^h;m=c[e+(g+4)>>2]^h;if((m&-2139062144^-2139062144)&m+-16843009|(o&-2139062144^-2139062144)&o+-16843009|0)break;g=g+8|0}while(g>>>0<=l>>>0);if(g>>>0>f>>>0)lj(g,f);else n=g}else n=g;h=e+n|0;j=h+(f-n)|0;i=j;g=0;while(1){if((i-h|0)>>>0<=3){m=24;break}o=(a[h>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o){m=26;break}o=(a[h+1>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o){m=26;break}o=(a[h+2>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o){m=26;break}o=(a[h+3>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o){m=26;break}else h=h+4|0}b:do if((m|0)==24)while(1){m=0;if((h|0)==(j|0)){g=0;break b}o=(a[h>>0]|0)==d<<24>>24;g=((o^1)&1)+g|0;if(o){m=26;break}else{h=h+1|0;m=24}}while(0);if((m|0)==26){c[b+4>>2]=g+n;g=1}c[b>>2]=g;return}function $i(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+48|0;b=d+32|0;i=d+24|0;j=c[a+4>>2]|0;h=c[a+8>>2]|0;g=c[a+12>>2]|0;f=c[a+16>>2]|0;e=c[a+20>>2]|0;c[i>>2]=c[a>>2];c[i+4>>2]=j;c[d>>2]=i;c[d+4>>2]=1;c[d+8>>2]=0;c[d+16>>2]=15892;c[d+20>>2]=0;c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=f;c[b+12>>2]=e;aj(d,b)}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+64|0;e=h+56|0;f=h+32|0;g=h;h=h+8|0;j=c[b>>2]|0;i=c[b+4>>2]|0;d=c[b+8>>2]|0;b=c[b+12>>2]|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[g>>2]=j;c[g+4>>2]=i;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];Pe(f,e,d,b)}function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+48|0;f=g+32|0;e=g+8|0;h=g+4|0;c[g>>2]=b;c[h>>2]=d;c[f>>2]=h;c[f+4>>2]=39;c[f+8>>2]=g;c[f+12>>2]=39;c[e>>2]=5156;c[e+4>>2]=2;c[e+8>>2]=5264;c[e+12>>2]=2;c[e+16>>2]=f;c[e+20>>2]=2;aj(e,a)}function cj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+48|0;e=f+32|0;d=f+8|0;c[f>>2]=a;c[f+4>>2]=b;c[e>>2]=f;c[e+4>>2]=64;c[d>>2]=5172;c[d+4>>2]=1;c[d+8>>2]=5180;c[d+12>>2]=1;c[d+16>>2]=e;c[d+20>>2]=1;aj(d,5216)}function dj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;e=j+12|0;i=j;b=c[b>>2]|0;if((a[b>>0]|0)!=1){i=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12149,4)|0;l=j;return i|0}f=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12153,4)|0;c[i>>2]=d;h=i+8|0;a[h>>0]=f&1;f=i+4|0;c[f>>2]=0;g=i+9|0;a[g>>0]=0;c[e>>2]=b+1;Si(i,e,5232)|0;d=c[f>>2]|0;b=a[h>>0]|0;if(d){do if(!(b<<24>>24)){b=c[i>>2]|0;if(!(c[b>>2]&4))b=d;else{if(db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,12052,1)|0){b=1;break}b=c[f>>2]|0}if(!((b|0)!=1|(a[g>>0]|0)==0)?(g=c[i>>2]|0,db[c[(c[g+28>>2]|0)+12>>2]&15](c[g+24>>2]|0,3572,1)|0):0){b=1;break}b=c[i>>2]|0;b=(db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,12057,1)|0)&1}else b=1;while(0);a[h>>0]=b}i=b<<24>>24!=0;l=j;return i|0}function ej(a){a=a|0;return}function fj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;if(!f){a[b>>0]=1;a[b+1>>0]=0;return}i=(a[e>>0]|0)==43;g=i?e+1|0:e;e=(i<<31>>31)+f|0;if(!e){a[b>>0]=1;a[b+1>>0]=0;return}h=g+e|0;i=0;while(1){e=d[g>>0]|0;g=g+1|0;if((e+-48|0)>>>0>=10)if((e+-97|0)>>>0>=26)if((e+-65|0)>>>0<26)f=-55;else{e=10;break}else f=-87;else f=-48;f=f+e|0;if(f>>>0>=10){e=10;break}e=i*10|0;if(i>>>0>429496729){e=12;break}i=e+f|0;if(i>>>0>>0){e=14;break}if((g|0)==(h|0)){e=16;break}}if((e|0)==10){a[b>>0]=1;a[b+1>>0]=1;return}else if((e|0)==12){a[b>>0]=1;a[b+1>>0]=2;return}else if((e|0)==14){a[b>>0]=1;a[b+1>>0]=2;return}else if((e|0)==16){a[b>>0]=0;c[b+4>>2]=i;return}}function gj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;i=g+8|0;f=g;h=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12157,13)|0;c[f>>2]=d;e=f+4|0;a[e>>0]=h&1;h=f+5|0;a[h>>0]=0;c[i>>2]=b;Qi(f,12170,4,i,5248)|0;d=a[e>>0]|0;if(!(a[h>>0]|0)){i=d;i=i<<24>>24!=0;l=g;return i|0}if(!(d<<24>>24)){d=c[f>>2]|0;d=(db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,c[d>>2]&4|0?12053:12055,2)|0)&1}else d=1;a[e>>0]=d;i=d;i=i<<24>>24!=0;l=g;return i|0}function hj(a){a=a|0;return}function ij(b,d){b=b|0;d=d|0;switch(a[c[b>>2]>>0]&3){case 0:{d=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12174,5)|0;return d|0}case 1:{d=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12179,12)|0;return d|0}case 2:{d=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12191,8)|0;return d|0}case 3:{d=db[c[(c[d+28>>2]|0)+12>>2]&15](c[d+24>>2]|0,12199,9)|0;return d|0}default:{}}return 0}function jj(b){b=b|0;var d=0,e=0,f=0,g=0;a:do switch(c[b>>2]&3){case 0:{d=1114112;break}case 1:{d=c[b+4>>2]|0;c[b>>2]=0;break}case 2:{c[b>>2]=1;d=92;break}case 3:{g=b+12|0;switch(a[g>>0]&7){case 0:{d=1114112;break a}case 1:{a[g>>0]=0;d=125;break a}case 2:{f=b+8|0;e=c[f>>2]|0;d=(c[b+4>>2]|0)>>>(e<<2&28)&15;d=((d&255)<10?48:87)+d|0;if(!e){a[g>>0]=1;break a}else{c[f>>2]=e+-1;break a}}case 3:{a[g>>0]=2;d=123;break a}case 4:{a[g>>0]=3;d=117;break a}case 5:{a[g>>0]=4;d=92;break a}default:{}}break}default:{}}while(0);return d|0}function kj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;e=g+32|0;d=g+8|0;f=g+4|0;c[g>>2]=a;c[f>>2]=b;c[e>>2]=g;c[e+4>>2]=39;c[e+8>>2]=f;c[e+12>>2]=39;c[d>>2]=5336;c[d+4>>2]=2;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=e;c[d+20>>2]=2;aj(d,5352)}function lj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;e=g+32|0;d=g+8|0;f=g+4|0;c[g>>2]=a;c[f>>2]=b;c[e>>2]=g;c[e+4>>2]=39;c[e+8>>2]=f;c[e+12>>2]=39;c[d>>2]=5368;c[d+4>>2]=2;c[d+8>>2]=5264;c[d+12>>2]=2;c[d+16>>2]=e;c[d+20>>2]=2;aj(d,5384)}function mj(a,b){a=a|0;b=b|0;return db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,13605,11)|0}function nj(a,b){a=a|0;b=b|0;return db[c[(c[b+28>>2]|0)+12>>2]&15](c[b+24>>2]|0,13616,14)|0}function oj(b,c,e,f,g,h,i){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=(b&65535)>>>8&255;o=c+(e<<1)|0;a:do if(e|0){k=b&255;m=0;b:while(1){j=c;c=c+2|0;e=a[j>>0]|0;j=d[j+1>>0]|0;l=j+m|0;if(n<<24>>24!=e<<24>>24)if((c|0)==(o|0)|(n&255)<(e&255))break a;else{m=l;continue}if(l>>>0>>0){e=7;break}if(l>>>0>g>>>0){e=9;break}q=f+m|0;e=q+j|0;j=q;while(1){if((j|0)==(e|0))break;if((a[j>>0]|0)==k<<24>>24){p=0;e=15;break b}else j=j+1|0}if((c|0)==(o|0))break a;else m=l}if((e|0)==7)lj(m,l);else if((e|0)==9)kj(l,g);else if((e|0)==15)return p|0}while(0);m=h+i|0;if(!i){q=1;return q|0}l=h;j=h+1|0;k=b&65535;c=1;while(1){e=a[l>>0]|0;if(e<<24>>24<0){if((j|0)==(m|0)){e=18;break}e=d[j>>0]|(e&127)<<8;j=j+1|0}else e=e&255;e=k-e|0;if((e|0)<0){p=c;e=15;break}c=c^1;if((j|0)==(m|0)){p=c;e=15;break}l=j;j=j+1|0;k=e}if((e|0)==15)return p|0;else if((e|0)==18)$i(5400);return 0}function pj(a){a=a|0;var b=0;b=a&65535;if(a>>>0<65536){b=oj(b,12317,41,12399,304,12703,326)|0;return b|0}if(a>>>0<131072){b=oj(b,13029,33,13095,150,13245,360)|0;return b|0}if((a+-195102|0)>>>0<722658|((a+-191457|0)>>>0<3103|((a+-183970|0)>>>0<14|((a&2097150|0)==178206|((a+-173783|0)>>>0<41|(a+-177973|0)>>>0<11))))){b=0;return b|0}else return (a+-918e3|0)>>>0>196111|0;return 0}function qj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;o=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;n=c[3973]|0;d=n>>>a;if(d&3|0){e=(d&1^1)+a|0;f=15932+(e<<1<<2)|0;b=f+8|0;a=c[b>>2]|0;g=a+8|0;d=c[g>>2]|0;if((f|0)==(d|0))c[3973]=n&~(1<>2]=f;c[b>>2]=d}w=e<<3;c[a+4>>2]=w|3;w=a+w+4|0;c[w>>2]=c[w>>2]|1;w=g;l=x;return w|0}m=c[3975]|0;if(k>>>0>m>>>0){if(d|0){h=2<>>12&16;d=d>>>h;a=d>>>5&8;d=d>>>a;f=d>>>2&4;d=d>>>f;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=(a|h|f|b|e)+(d>>>e)|0;d=15932+(e<<1<<2)|0;b=d+8|0;f=c[b>>2]|0;h=f+8|0;a=c[h>>2]|0;if((d|0)==(a|0)){a=n&~(1<>2]=d;c[b>>2]=a;a=n}g=(e<<3)-k|0;c[f+4>>2]=k|3;f=f+k|0;c[f+4>>2]=g|1;c[f+g>>2]=g;if(m|0){e=c[3978]|0;b=m>>>3;d=15932+(b<<1<<2)|0;b=1<>2]|0}c[b>>2]=e;c[a+12>>2]=e;c[e+8>>2]=a;c[e+12>>2]=d}c[3975]=g;c[3978]=f;w=h;l=x;return w|0}i=c[3974]|0;if(i){d=(i&0-i)+-1|0;h=d>>>12&16;d=d>>>h;g=d>>>5&8;d=d>>>g;j=d>>>2&4;d=d>>>j;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[16196+((g|h|j|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-k|0;a=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!a){j=d;h=e}else{do{h=(c[a+4>>2]&-8)-k|0;j=h>>>0>>0;d=j?h:d;e=j?a:e;a=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0}while((a|0)!=0);j=d;h=e}g=h+k|0;if(h>>>0>>0){f=c[h+24>>2]|0;b=c[h+12>>2]|0;do if((b|0)==(h|0)){a=h+20|0;b=c[a>>2]|0;if(!b){a=h+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(d|0){b=d;a=e;continue}e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[h+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[h+28>>2]|0;a=16196+(b<<2)|0;if((h|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[3974]=i&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[h+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[h+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){w=j+k|0;c[h+4>>2]=w|3;w=h+w+4|0;c[w>>2]=c[w>>2]|1}else{c[h+4>>2]=k|3;c[g+4>>2]=j|1;c[g+j>>2]=j;if(m|0){e=c[3978]|0;b=m>>>3;d=15932+(b<<1<<2)|0;b=1<>2]|0}c[b>>2]=e;c[a+12>>2]=e;c[e+8>>2]=a;c[e+12>>2]=d}c[3975]=j;c[3978]=g}w=h+8|0;l=x;return w|0}else n=k}else n=k}else n=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[3974]|0;if(e){d=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{n=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(m|n|j)+(v<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;a=c[16196+(j<<2)>>2]|0;a:do if(!a){f=0;a=0;v=57}else{f=0;h=k<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){g=(c[i+4>>2]&-8)-k|0;if(g>>>0>>0)if(!g){d=0;f=i;a=i;v=61;break a}else{d=g;a=i}g=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;f=(g|0)==0|(g|0)==(i|0)?f:g;g=(i|0)==0;if(g){v=57;break}else h=h<<((g^1)&1)}}while(0);if((v|0)==57){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>j;i=a>>>5&8;a=a>>>i;m=a>>>2&4;a=a>>>m;n=a>>>1&2;a=a>>>n;f=a>>>1&1;f=c[16196+((i|j|m|n|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else v=61}if((v|0)==61)while(1){v=0;m=(c[f+4>>2]&-8)-k|0;n=m>>>0>>0;d=n?m:d;a=n?f:a;f=c[f+16+(((c[f+16>>2]|0)==0&1)<<2)>>2]|0;if(!f){i=d;j=a;break}else v=61}if((j|0)!=0?i>>>0<((c[3975]|0)-k|0)>>>0:0){h=j+k|0;if(j>>>0>=h>>>0){w=0;l=x;return w|0}g=c[j+24>>2]|0;b=c[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(d|0){b=d;a=f;continue}f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}c[a>>2]=0}else{w=c[j+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(g){a=c[j+28>>2]|0;d=16196+(a<<2)|0;if((j|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[j+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[j+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);do if(i>>>0>=16){c[j+4>>2]=k|3;c[h+4>>2]=i|1;c[h+i>>2]=i;b=i>>>3;if(i>>>0<256){d=15932+(b<<1<<2)|0;a=c[3973]|0;b=1<>2]|0}c[b>>2]=h;c[a+12>>2]=h;c[h+8>>2]=a;c[h+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(u|v|b)+(w<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;d=16196+(b<<2)|0;c[h+28>>2]=b;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(i|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=h;c[v>>2]=h;c[h+8>>2]=w;c[h+12>>2]=d;c[h+24>>2]=0;break}}else{w=i+k|0;c[j+4>>2]=w|3;w=j+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=j+8|0;l=x;return w|0}else n=k}else n=k}else n=-1;while(0);d=c[3975]|0;if(d>>>0>=n>>>0){a=d-n|0;b=c[3978]|0;if(a>>>0>15){w=b+n|0;c[3978]=w;c[3975]=a;c[w+4>>2]=a|1;c[w+a>>2]=a;c[b+4>>2]=n|3}else{c[3975]=0;c[3978]=0;c[b+4>>2]=d|3;w=b+d+4|0;c[w>>2]=c[w>>2]|1}w=b+8|0;l=x;return w|0}h=c[3976]|0;if(h>>>0>n>>>0){u=h-n|0;c[3976]=u;w=c[3979]|0;v=w+n|0;c[3979]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[4091]|0)){c[4093]=4096;c[4092]=4096;c[4094]=-1;c[4095]=-1;c[4096]=0;c[4084]=0;a=o&-16^1431655768;c[o>>2]=a;c[4091]=a;a=4096}else a=c[4093]|0;i=n+48|0;j=n+47|0;g=a+j|0;e=0-a|0;k=g&e;if(k>>>0<=n>>>0){w=0;l=x;return w|0}a=c[4083]|0;if(a|0?(m=c[4081]|0,o=m+k|0,o>>>0<=m>>>0|o>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[4084]&4)){d=c[3979]|0;c:do if(d){f=16340;while(1){a=c[f>>2]|0;if(a>>>0<=d>>>0?(r=f+4|0,(a+(c[r>>2]|0)|0)>>>0>d>>>0):0)break;a=c[f+8>>2]|0;if(!a){v=118;break c}else f=a}b=g-h&e;if(b>>>0<2147483647){a=rk(b|0)|0;if((a|0)==((c[f>>2]|0)+(c[r>>2]|0)|0)){if((a|0)!=(-1|0)){h=a;g=b;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=rk(0)|0;if((d|0)!=(-1|0)?(b=d,p=c[4092]|0,q=p+-1|0,b=((q&b|0)==0?0:(q+b&0-p)-b|0)+k|0,p=c[4081]|0,q=b+p|0,b>>>0>n>>>0&b>>>0<2147483647):0){r=c[4083]|0;if(r|0?q>>>0<=p>>>0|q>>>0>r>>>0:0){b=0;break}a=rk(b|0)|0;if((a|0)==(d|0)){h=d;g=b;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=e;g=b;v=135;break b}a=c[4093]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=e;g=b;v=135;break b}if((rk(a|0)|0)==(-1|0)){rk(d|0)|0;b=0;break}else{h=e;g=a+b|0;v=135;break b}}while(0);c[4084]=c[4084]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?k>>>0<2147483647:0)?(s=rk(k|0)|0,r=rk(0)|0,u=r-s|0,t=u>>>0>(n+40|0)>>>0,!((s|0)==(-1|0)|t^1|s>>>0>>0&((s|0)!=(-1|0)&(r|0)!=(-1|0))^1)):0){h=s;g=t?u:b;v=135}if((v|0)==135){b=(c[4081]|0)+g|0;c[4081]=b;if(b>>>0>(c[4082]|0)>>>0)c[4082]=b;j=c[3979]|0;do if(j){f=16340;while(1){b=c[f>>2]|0;e=f+4|0;a=c[e>>2]|0;if((h|0)==(b+a|0)){v=145;break}d=c[f+8>>2]|0;if(!d)break;else f=d}if(((v|0)==145?(c[f+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=b>>>0:0){c[e>>2]=a+g;w=j+8|0;w=(w&7|0)==0?0:0-w&7;v=j+w|0;w=(c[3976]|0)+(g-w)|0;c[3979]=v;c[3976]=w;c[v+4>>2]=w|1;c[v+w+4>>2]=40;c[3980]=c[4095];break}if(h>>>0<(c[3977]|0)>>>0)c[3977]=h;d=h+g|0;a=16340;while(1){if((c[a>>2]|0)==(d|0)){v=153;break}b=c[a+8>>2]|0;if(!b)break;else a=b}if((v|0)==153?(c[a+12>>2]&8|0)==0:0){c[a>>2]=h;m=a+4|0;c[m>>2]=(c[m>>2]|0)+g;m=h+8|0;m=h+((m&7|0)==0?0:0-m&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((b|0)!=(j|0)){if((b|0)==(c[3978]|0)){w=(c[3975]|0)+i|0;c[3975]=w;c[3978]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[3973]=c[3973]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else f=e}else f=d;while(1){e=a+20|0;d=c[e>>2]|0;if(d|0){a=d;f=e;continue}e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;f=e}}c[f>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=16196+(d<<2)|0;do if((b|0)!=(c[e>>2]|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[3974]=c[3974]&~(1<>2]=g;e=b+16|0;d=c[e>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}d=c[e+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=15932+(b<<1<<2)|0;a=c[3973]|0;b=1<>2]|0}c[b>>2]=k;c[a+12>>2]=k;c[k+8>>2]=a;c[k+12>>2]=d;break}b=f>>>8;do if(!b)a=0;else{if(f>>>0>16777215){a=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;a=14-(u|v|a)+(w<>>15)|0;a=f>>>(a+7|0)&1|a<<1}while(0);e=16196+(a<<2)|0;c[k+28>>2]=a;b=k+16|0;c[b+4>>2]=0;c[b>>2]=0;b=c[3974]|0;d=1<>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((a|0)==31?0:25-(a>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=194;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=193;break}else{a=a<<1;d=b}}if((v|0)==193){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==194){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[3976]|0)+i|0;c[3976]=w;c[3979]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}a=16340;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+8|0;d=(d&7|0)==0?0:0-d&7;v=h+d|0;d=g+-40-d|0;c[3979]=v;c[3976]=d;c[v+4>>2]=d|1;c[v+d+4>>2]=40;c[3980]=c[4095];d=a+4|0;c[d>>2]=27;c[b>>2]=c[4085];c[b+4>>2]=c[4086];c[b+8>>2]=c[4087];c[b+12>>2]=c[4088];c[4085]=h;c[4086]=g;c[4088]=0;c[4087]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=15932+(b<<1<<2)|0;a=c[3973]|0;b=1<>2]|0}c[b>>2]=j;c[a+12>>2]=j;c[j+8>>2]=a;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;d=14-(u|v|d)+(w<>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=16196+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[3974]|0;a=1<>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=216;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=215;break}else{a=a<<1;d=b}}if((v|0)==215){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==216){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[3977]|0;if((w|0)==0|h>>>0>>0)c[3977]=h;c[4085]=h;c[4086]=g;c[4088]=0;c[3982]=c[4091];c[3981]=-1;b=0;do{w=15932+(b<<1<<2)|0;c[w+12>>2]=w;c[w+8>>2]=w;b=b+1|0}while((b|0)!=32);w=h+8|0;w=(w&7|0)==0?0:0-w&7;v=h+w|0;w=g+-40-w|0;c[3979]=v;c[3976]=w;c[v+4>>2]=w|1;c[v+w+4>>2]=40;c[3980]=c[4095]}while(0);b=c[3976]|0;if(b>>>0>n>>>0){u=b-n|0;c[3976]=u;w=c[3979]|0;v=w+n|0;c[3979]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(Bj()|0)>>2]=12;w=0;l=x;return w|0}function rj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a)return;d=a+-8|0;e=c[3977]|0;a=c[a+-4>>2]|0;b=a&-8;k=d+b|0;do if(!(a&1)){f=c[d>>2]|0;if(!(a&3))return;g=d+(0-f)|0;h=f+b|0;if(g>>>0>>0)return;if((g|0)==(c[3978]|0)){b=k+4|0;a=c[b>>2]|0;if((a&3|0)!=3){i=g;j=g;b=h;break}c[3975]=h;c[b>>2]=a&-2;c[g+4>>2]=h|1;c[g+h>>2]=h;return}d=f>>>3;if(f>>>0<256){a=c[g+8>>2]|0;b=c[g+12>>2]|0;if((b|0)==(a|0)){c[3973]=c[3973]&~(1<>2]=b;c[b+8>>2]=a;i=g;j=g;b=h;break}}f=c[g+24>>2]|0;a=c[g+12>>2]|0;do if((a|0)==(g|0)){d=g+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else e=d}else e=b;while(1){d=a+20|0;b=c[d>>2]|0;if(b|0){a=b;e=d;continue}d=a+16|0;b=c[d>>2]|0;if(!b)break;else{a=b;e=d}}c[e>>2]=0;d=a}else{d=c[g+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(f){a=c[g+28>>2]|0;b=16196+(a<<2)|0;if((g|0)==(c[b>>2]|0)){c[b>>2]=d;if(!d){c[3974]=c[3974]&~(1<>2]|0)!=(g|0)&1)<<2)>>2]=d;if(!d){i=g;j=g;b=h;break}}c[d+24>>2]=f;b=g+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}a=c[b+4>>2]|0;if(a){c[d+20>>2]=a;c[a+24>>2]=d;i=g;j=g;b=h}else{i=g;j=g;b=h}}else{i=g;j=g;b=h}}else{i=d;j=d}while(0);if(i>>>0>=k>>>0)return;a=k+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){a=c[3978]|0;if((k|0)==(c[3979]|0)){k=(c[3976]|0)+b|0;c[3976]=k;c[3979]=j;c[j+4>>2]=k|1;if((j|0)!=(a|0))return;c[3978]=0;c[3975]=0;return}if((k|0)==(a|0)){k=(c[3975]|0)+b|0;c[3975]=k;c[3978]=i;c[j+4>>2]=k|1;c[i+k>>2]=k;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[k+8>>2]|0;a=c[k+12>>2]|0;if((a|0)==(b|0)){c[3973]=c[3973]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[k+24>>2]|0;a=c[k+12>>2]|0;do if((a|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else e=d}else e=b;while(1){d=a+20|0;b=c[d>>2]|0;if(b|0){a=b;e=d;continue}d=a+16|0;b=c[d>>2]|0;if(!b)break;else{a=b;e=d}}c[e>>2]=0;d=a}else{d=c[k+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[k+28>>2]|0;b=16196+(a<<2)|0;if((k|0)==(c[b>>2]|0)){c[b>>2]=d;if(!d){c[3974]=c[3974]&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=k+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}a=c[b+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[j+4>>2]=f|1;c[i+f>>2]=f;if((j|0)==(c[3978]|0)){c[3975]=f;return}}else{c[a>>2]=e&-2;c[j+4>>2]=b|1;c[i+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=15932+(a<<1<<2)|0;b=c[3973]|0;a=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)b=31;else{i=(a+1048320|0)>>>16&8;k=a<>>16&4;k=k<>>16&2;b=14-(h|i|b)+(k<>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=16196+(b<<2)|0;c[j+28>>2]=b;c[j+20>>2]=0;c[j+16>>2]=0;a=c[3974]|0;d=1<>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((a|0)==73){i=d+8|0;k=c[i>>2]|0;c[k+12>>2]=j;c[i>>2]=j;c[j+8>>2]=k;c[j+12>>2]=d;c[j+24>>2]=0;break}}else{c[3974]=a|d;c[e>>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j}while(0);k=(c[3981]|0)+-1|0;c[3981]=k;if(!k)a=16348;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[3981]=-1;return}function sj(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=qj(b)|0;return a|0}if(b>>>0>4294967231){c[(Bj()|0)>>2]=12;a=0;return a|0}d=tj(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){a=d+8|0;return a|0}d=qj(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ok(d|0,a|0,(e>>>0>>0?e:b)|0)|0;rj(a);a=d;return a|0}function tj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+4|0;l=c[m>>2]|0;d=l&-8;i=a+d|0;if(!(l&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[4093]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[m>>2]=l&1|b|2;c[k+4>>2]=d|3;b=k+d+4|0;c[b>>2]=c[b>>2]|1;uj(k,d);return a|0}if((i|0)==(c[3979]|0)){k=(c[3976]|0)+d|0;e=k-b|0;d=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[m>>2]=l&1|b|2;c[d+4>>2]=e|1;c[3979]=d;c[3976]=e;return a|0}if((i|0)==(c[3978]|0)){f=(c[3975]|0)+d|0;if(f>>>0>>0){a=0;return a|0}d=f-b|0;e=l&1;if(d>>>0>15){l=a+b|0;k=l+d|0;c[m>>2]=e|b|2;c[l+4>>2]=d|1;c[k>>2]=d;e=k+4|0;c[e>>2]=c[e>>2]&-2;e=l}else{c[m>>2]=e|f|2;e=a+f+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[3975]=d;c[3978]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[3973]=c[3973]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}f=d+16|0;e=c[f>>2]|0;if(!e)break;else{d=e;g=f}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=16196+(d<<2)|0;if((i|0)==(c[e>>2]|0)){c[e>>2]=f;if(!f){c[3974]=c[3974]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;e=i+16|0;d=c[e>>2]|0;if(d|0){c[f+16>>2]=d;c[d+24>>2]=f}d=c[e+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);d=l&1;if(k>>>0<16){c[m>>2]=j|d|2;b=a+j+4|0;c[b>>2]=c[b>>2]|1;return a|0}else{l=a+b|0;c[m>>2]=d|b|2;c[l+4>>2]=k|3;b=l+k+4|0;c[b>>2]=c[b>>2]|1;uj(l,k);return a|0}return 0}function uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){e=c[a>>2]|0;if(!(d&3))return;g=a+(0-e)|0;h=e+b|0;if((g|0)==(c[3978]|0)){a=j+4|0;d=c[a>>2]|0;if((d&3|0)!=3){i=g;a=h;break}c[3975]=h;c[a>>2]=d&-2;c[g+4>>2]=h|1;c[g+h>>2]=h;return}b=e>>>3;if(e>>>0<256){d=c[g+8>>2]|0;a=c[g+12>>2]|0;if((a|0)==(d|0)){c[3973]=c[3973]&~(1<>2]=a;c[a+8>>2]=d;i=g;a=h;break}}f=c[g+24>>2]|0;d=c[g+12>>2]|0;do if((d|0)==(g|0)){b=g+16|0;a=b+4|0;d=c[a>>2]|0;if(!d){d=c[b>>2]|0;if(!d){b=0;break}else e=b}else e=a;while(1){b=d+20|0;a=c[b>>2]|0;if(a|0){d=a;e=b;continue}b=d+16|0;a=c[b>>2]|0;if(!a)break;else{d=a;e=b}}c[e>>2]=0;b=d}else{b=c[g+8>>2]|0;c[b+12>>2]=d;c[d+8>>2]=b;b=d}while(0);if(f){d=c[g+28>>2]|0;a=16196+(d<<2)|0;if((g|0)==(c[a>>2]|0)){c[a>>2]=b;if(!b){c[3974]=c[3974]&~(1<>2]|0)!=(g|0)&1)<<2)>>2]=b;if(!b){i=g;a=h;break}}c[b+24>>2]=f;a=g+16|0;d=c[a>>2]|0;if(d|0){c[b+16>>2]=d;c[d+24>>2]=b}d=c[a+4>>2]|0;if(d){c[b+20>>2]=d;c[d+24>>2]=b;i=g;a=h}else{i=g;a=h}}else{i=g;a=h}}else{i=a;a=b}while(0);d=j+4|0;e=c[d>>2]|0;if(!(e&2)){d=c[3978]|0;if((j|0)==(c[3979]|0)){j=(c[3976]|0)+a|0;c[3976]=j;c[3979]=i;c[i+4>>2]=j|1;if((i|0)!=(d|0))return;c[3978]=0;c[3975]=0;return}if((j|0)==(d|0)){j=(c[3975]|0)+a|0;c[3975]=j;c[3978]=i;c[i+4>>2]=j|1;c[i+j>>2]=j;return}f=(e&-8)+a|0;b=e>>>3;do if(e>>>0<256){a=c[j+8>>2]|0;d=c[j+12>>2]|0;if((d|0)==(a|0)){c[3973]=c[3973]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){b=j+16|0;a=b+4|0;d=c[a>>2]|0;if(!d){d=c[b>>2]|0;if(!d){b=0;break}else e=b}else e=a;while(1){b=d+20|0;a=c[b>>2]|0;if(a|0){d=a;e=b;continue}b=d+16|0;a=c[b>>2]|0;if(!a)break;else{d=a;e=b}}c[e>>2]=0;b=d}else{b=c[j+8>>2]|0;c[b+12>>2]=d;c[d+8>>2]=b;b=d}while(0);if(g|0){d=c[j+28>>2]|0;a=16196+(d<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=b;if(!b){c[3974]=c[3974]&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=b;if(!b)break}c[b+24>>2]=g;a=j+16|0;d=c[a>>2]|0;if(d|0){c[b+16>>2]=d;c[d+24>>2]=b}d=c[a+4>>2]|0;if(d|0){c[b+20>>2]=d;c[d+24>>2]=b}}}while(0);c[i+4>>2]=f|1;c[i+f>>2]=f;if((i|0)==(c[3978]|0)){c[3975]=f;return}}else{c[d>>2]=e&-2;c[i+4>>2]=a|1;c[i+a>>2]=a;f=a}d=f>>>3;if(f>>>0<256){b=15932+(d<<1<<2)|0;a=c[3973]|0;d=1<>2]|0}c[d>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=b;return}d=f>>>8;if(d)if(f>>>0>16777215)a=31;else{h=(d+1048320|0)>>>16&8;j=d<>>16&4;j=j<>>16&2;a=14-(g|h|a)+(j<>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=16196+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;d=c[3974]|0;b=1<>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i;return}a=f<<((a|0)==31?0:25-(a>>>1)|0);b=c[e>>2]|0;while(1){if((c[b+4>>2]&-8|0)==(f|0)){d=69;break}e=b+16+(a>>>31<<2)|0;d=c[e>>2]|0;if(!d){d=68;break}else{a=a<<1;b=d}}if((d|0)==68){c[e>>2]=i;c[i+24>>2]=b;c[i+12>>2]=i;c[i+8>>2]=i;return}else if((d|0)==69){h=b+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=b;c[i+24>>2]=0;return}}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(Bj()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=qj(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(d&a+-1){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;b=e;a=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;uj(f,b);b=e;a=e;break}}else{b=f;a=f}while(0);d=a+4|0;a=c[d>>2]|0;if(a&3|0?(h=a&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;h=b+g|0;c[d>>2]=g|a&1|2;c[h+4>>2]=i|3;g=h+i+4|0;c[g>>2]=c[g>>2]|1;uj(h,i)}i=b+8|0;return i|0}\nfunction wj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;do if((b|0)!=8){e=b>>>2;if((b&3|0)!=0|(e|0)==0){a=22;return a|0}if(e+1073741823&e|0){a=22;return a|0}if((-64-b|0)>>>0>>0){a=12;return a|0}else{b=vj(b>>>0>16?b:16,d)|0;break}}else b=qj(d)|0;while(0);if(!b){a=12;return a|0}c[a>>2]=b;a=0;return a|0}function xj(){return 16388}function yj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Ej(c[a+60>>2]|0)|0;a=Aj(Wa(6,d|0)|0)|0;l=b;return a|0}function zj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((Aj(Oa(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function Aj(a){a=a|0;if(a>>>0>4294963200){c[(Bj()|0)>>2]=0-a;a=-1}return a|0}function Bj(){return (Cj()|0)+64|0}function Cj(){return Dj()|0}function Dj(){return 5424}function Ej(a){a=a|0;return a|0}function Fj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=11;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ma(54,f|0)|0):0)a[b+75>>0]=-1;f=Gj(b,d,e)|0;l=g;return f|0}function Gj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;i=n+16|0;f=n;e=n+32|0;j=a+28|0;g=c[j>>2]|0;c[e>>2]=g;k=a+20|0;g=(c[k>>2]|0)-g|0;c[e+4>>2]=g;c[e+8>>2]=b;c[e+12>>2]=d;g=g+d|0;h=a+60|0;c[f>>2]=c[h>>2];c[f+4>>2]=e;c[f+8>>2]=2;b=Aj(ab(146,f|0)|0)|0;a:do if((g|0)!=(b|0)){f=2;while(1){if((b|0)<0)break;g=g-b|0;p=c[e+4>>2]|0;o=b>>>0>p>>>0;e=o?e+8|0:e;f=(o<<31>>31)+f|0;p=b-(o?p:0)|0;c[e>>2]=(c[e>>2]|0)+p;o=e+4|0;c[o>>2]=(c[o>>2]|0)-p;c[i>>2]=c[h>>2];c[i+4>>2]=e;c[i+8>>2]=f;b=Aj(ab(146,i|0)|0)|0;if((g|0)==(b|0)){m=3;break a}}c[a+16>>2]=0;c[j>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((f|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[j>>2]=p;c[k>>2]=p}l=n;return d|0}function Hj(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3)){d=b;e=4}else{d=f;while(1){if(!(a[b>>0]|0))break a;b=b+1|0;d=b;if(!(d&3)){d=b;e=4;break}}}while(0);if((e|0)==4){while(1){b=c[d>>2]|0;if(!((b&-2139062144^-2139062144)&b+-16843009))d=d+4|0;else break}if((b&255)<<24>>24)do d=d+1|0;while((a[d>>0]|0)!=0)}return d-f|0}function Ij(a){a=a|0;return 0}function Jj(a){a=a|0;return}function Kj(a){a=a|0;return Nj(a,c[(Mj()|0)+188>>2]|0)|0}function Lj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=N(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function Mj(){return Dj()|0}function Nj(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[13704+f>>0]|0)==(b|0)){g=2;break}f=f+1|0;if((f|0)==87){f=87;b=13792;g=5;break}}if((g|0)==2)if(!f)f=13792;else{b=13792;g=5}if((g|0)==5)while(1){do{g=b;b=b+1|0}while((a[g>>0]|0)!=0);f=f+-1|0;if(!f){f=b;break}else g=5}return Oj(f,c[e+20>>2]|0)|0}function Oj(a,b){a=a|0;b=b|0;return Pj(a,b)|0}function Pj(a,b){a=a|0;b=b|0;if(!b)b=0;else b=Qj(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function Qj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Rj(c[b+8>>2]|0,o)|0;f=Rj(c[b+12>>2]|0,o)|0;g=Rj(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){k=h>>>1;j=l+k|0;i=j<<1;g=i+n|0;f=Rj(c[b+(g<<2)>>2]|0,o)|0;g=Rj(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Sj(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:j;h=f?k:h-k|0}}f=i+m|0;g=Rj(c[b+(f<<2)>>2]|0,o)|0;f=Rj(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Rj(a,b){a=a|0;b=b|0;var c=0;c=jk(a|0)|0;return ((b|0)==0?a:c)|0}function Sj(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24))do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));return (d&255)-(e&255)|0}function Tj(){Va(16452);return 16460}function Uj(){Na(16452);return}function Vj(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=Wj(a)|0;break}d=(Ij(a)|0)==0;b=Wj(a)|0;if(!d)Jj(a)}else{if(!(c[1448]|0))b=0;else b=Vj(c[1448]|0)|0;a=c[(Tj()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=Ij(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=Wj(a)|0|b;if(d|0)Jj(a);a=c[a+56>>2]|0}while((a|0)!=0);Uj()}while(0);return b|0}function Wj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=a+20|0;g=a+28|0;if((c[h>>2]|0)>>>0>(c[g>>2]|0)>>>0?(db[c[a+36>>2]&15](a,0,0)|0,(c[h>>2]|0)==0):0)b=-1;else{f=a+4|0;b=c[f>>2]|0;e=a+8|0;d=c[e>>2]|0;if(b>>>0>>0)db[c[a+40>>2]&15](a,b-d|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[h>>2]=0;c[e>>2]=0;c[f>>2]=0;b=0}return b|0}function Xj(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function Yj(a){a=a|0;return Zj(a)|0}function Zj(a){a=a|0;return lk(a|0)|0}function _j(a){a=a|0;return $j(a)|0}function $j(a){a=a|0;return jk(a|0)|0}function ak(a){a=a|0;return bk(a)|0}function bk(a){a=a|0;return lk(a|0)|0}function ck(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=Kj(b)|0;b=Hj(e)|0;if(b>>>0>=d>>>0){b=d+-1|0;if(!d)b=34;else{ok(c|0,e|0,b|0)|0;a[c+b>>0]=0;b=34}}else{ok(c|0,e|0,b+1|0)|0;b=0}return b|0}function dk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=Aj(Xa(4,f|0)|0)|0;l=e;return a|0}function ek(){}function fk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (y=d,a-c>>>0|0)|0}function gk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (y=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function ik(a){a=a|0;return 0}function jk(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function kk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b>>>c;return a>>>c|(b&(1<>>c-32|0}function lk(a){a=a|0;return (a&255)<<8|a>>8&255|0}function mk(a){a=a|0;return 0}function nk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b<>>32-c;return a<=8192)return Ea(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function pk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=N(e,f)|0;d=a>>>16;a=(c>>>16)+(N(e,d)|0)|0;e=b>>>16;b=N(e,f)|0;return (y=(a>>>16)+(N(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function qk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=pk(e,f)|0;a=y;return (y=(N(b,f)|0)+(N(d,e)|0)+a|a&0,c|0|0)|0}function rk(a){a=a|0;var b=0,d=0;d=a+15&-16|0;b=c[i>>2]|0;a=b+d|0;if((d|0)>0&(a|0)<(b|0)|(a|0)<0){V()|0;ka(12);return -1}c[i>>2]=a;if((a|0)>(U()|0)?(T()|0)==0:0){c[i>>2]=b;ka(12);return -1}return b|0}function sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return db[a&15](b|0,c|0,d|0)|0}function tk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;eb[a&3](b|0,c|0,d|0,e|0,f|0)}function uk(a){a=a|0;return fb[a&7]()|0}function vk(a,b){a=a|0;b=b|0;gb[a&63](b|0)}function wk(a,b,c){a=a|0;b=b|0;c=c|0;hb[a&31](b|0,c|0)}function xk(a,b){a=a|0;b=b|0;return ib[a&15](b|0)|0}function yk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;jb[a&31](b|0,c|0,d|0)}function zk(a){a=a|0;kb[a&3]()}function Ak(a,b,c){a=a|0;b=b|0;c=c|0;return lb[a&127](b|0,c|0)|0}function Bk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return mb[a&1](b|0,c|0,d|0,e|0,f|0)|0}function Ck(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;nb[a&15](b|0,c|0,d|0,e|0)}function Dk(a,b,c){a=a|0;b=b|0;c=c|0;R(0);return 0}function Ek(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;R(1)}function Fk(){R(2);return 0}function Gk(a){a=a|0;R(3)}function Hk(a,b){a=a|0;b=b|0;R(4)}function Ik(a){a=a|0;R(5);return 0}function Jk(a,b,c){a=a|0;b=b|0;c=c|0;R(6)}function Kk(){R(7)}function Lk(a,b){a=a|0;b=b|0;R(8);return 0}function Mk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;R(9);return 0}function Nk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;R(10)}\n\n// EMSCRIPTEN_END_FUNCS\nvar db=[Dk,Jd,Id,Kf,Gh,Pi,hi,Fj,zj,dc,ki,Gj,Dk,Dk,Dk,Dk];var eb=[Ek,Mc,Wc,Ek];var fb=[Fk,ce,de,Me,Rg,Fk,Fk,Fk];var gb=[Gk,Bb,id,_d,be,ee,ge,he,ne,Ne,He,df,ef,ff,gf,qf,tf,Bf,uf,yf,wf,Of,Nf,Rf,hg,Qg,Sg,re,$g,Ch,gi,Mi,Li,Oi,ej,hj,ac,fc,nc,vb,oc,Rb,Yc,sd,$i,rd,hf,jh,Oe,oe,Te,Md,ze,ke,Bg,xh,sg,Ve,Lg,Ye,Qf,nh,Gk,Gk];var hb=[Hk,Je,Sd,Kd,_f,Yf,Sf,Tf,lj,aj,Nb,lc,jc,kc,kj,mc,sc,dd,Nc,Xc,Rc,cj,Ue,$e,kh,Ef,we,Ah,_e,Hk,Hk,Hk];var ib=[Ik,Cb,Db,kd,Tg,vd,Ld,Zf,yj,ue,bc,_g,me,Ri,pg,Ik];var jb=[Jk,Le,Hb,$b,hc,ld,Ib,wb,gc,cc,ic,ec,rc,qc,pc,cd,Kc,Lc,Fc,bj,td,ve,Ce,Cg,Ag,Nh,Dg,uh,Uh,Jk,Jk,Jk];var kb=[Kk,Ub,ng,Kk];var lb=[Lk,$d,yd,Ed,Gd,Td,Zd,$f,gg,di,rf,Cf,Af,vf,zf,xf,xd,Hg,Xg,Fd,Hd,mf,nf,Eh,Fh,Xi,Yi,Di,dj,ii,ji,Ci,ij,Vb,Pf,tc,nd,Ki,Bi,ai,ni,Ad,Mh,Vd,Ug,ih,fi,hh,gj,mj,nj,Mf,yh,Jf,ei,si,Bd,zd,ae,If,wd,Th,Rh,li,Ei,Ai,Zi,$h,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk,Lk];var mb=[Mk,Qi];var nb=[Nk,Ie,Ke,xb,Jc,Ii,ag,cf,Hf,Nk,Nk,Nk,Nk,Nk,Nk,Nk];return{_main:Tb,dynCall_i:uk,stackSave:pb,_i64Subtract:fk,_rust_eh_personality:Kh,setThrew:sb,dynCall_viii:yk,_bitshift64Lshr:kk,_ec_pairing:Qb,_bitshift64Shl:nk,_fflush:Vj,_htonl:_j,___errno_location:Bj,_memset:hk,dynCall_ii:xk,_sbrk:rk,_memcpy:ok,stackAlloc:ob,___muldi3:qk,_ec_mul:Lb,dynCall_vi:vk,getTempRet0:ub,dynCall_vii:wk,_ntohs:ak,setTempRet0:tb,_i64Add:gk,dynCall_iiii:sk,_pthread_mutex_unlock:mk,_llvm_bswap_i16:lk,_emscripten_get_global_libc:xj,_htons:Yj,dynCall_viiii:Ck,dynCall_iiiiii:Bk,_llvm_bswap_i32:jk,dynCall_viiiii:tk,_free:rj,runPostSets:ek,establishStackSpace:rb,stackRestore:qb,_malloc:qj,dynCall_iii:Ak,_pthread_mutex_lock:ik,dynCall_v:zk,_ec_add:Pb}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _main=Module[\"_main\"]=asm[\"_main\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var _rust_eh_personality=Module[\"_rust_eh_personality\"]=asm[\"_rust_eh_personality\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _ec_pairing=Module[\"_ec_pairing\"]=asm[\"_ec_pairing\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _fflush=Module[\"_fflush\"]=asm[\"_fflush\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var ___muldi3=Module[\"___muldi3\"]=asm[\"___muldi3\"];var _ec_mul=Module[\"_ec_mul\"]=asm[\"_ec_mul\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _ntohs=Module[\"_ntohs\"]=asm[\"_ntohs\"];var _htonl=Module[\"_htonl\"]=asm[\"_htonl\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _pthread_mutex_unlock=Module[\"_pthread_mutex_unlock\"]=asm[\"_pthread_mutex_unlock\"];var _llvm_bswap_i16=Module[\"_llvm_bswap_i16\"]=asm[\"_llvm_bswap_i16\"];var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=asm[\"_emscripten_get_global_libc\"];var _htons=Module[\"_htons\"]=asm[\"_htons\"];var ___errno_location=Module[\"___errno_location\"]=asm[\"___errno_location\"];var _free=Module[\"_free\"]=asm[\"_free\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _pthread_mutex_lock=Module[\"_pthread_mutex_lock\"]=asm[\"_pthread_mutex_lock\"];var _ec_add=Module[\"_ec_add\"]=asm[\"_ec_add\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];Runtime.stackAlloc=Module[\"stackAlloc\"];Runtime.stackSave=Module[\"stackSave\"];Runtime.stackRestore=Module[\"stackRestore\"];Runtime.establishStackSpace=Module[\"establishStackSpace\"];Runtime.setTempRet0=Module[\"setTempRet0\"];Runtime.getTempRet0=Module[\"getTempRet0\"];Module[\"asm\"]=asm;if(memoryInitializer){if(typeof Module[\"locateFile\"]===\"function\"){memoryInitializer=Module[\"locateFile\"](memoryInitializer)}else if(Module[\"memoryInitializerPrefixURL\"]){memoryInitializer=Module[\"memoryInitializerPrefixURL\"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module[\"readBinary\"](memoryInitializer);HEAPU8.set(data,Runtime.GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,Runtime.GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")});function doBrowserLoad(){Module[\"readAsync\"](memoryInitializer,applyMemoryInitializer,(function(){throw\"could not load memory initializer \"+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){function useRequest(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};Module[\"callMain\"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module[\"thisProgram\"]),\"i8\",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(Module[\"_main\"]&&shouldRunNow)Module[\"callMain\"](args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=Module.run=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;var extra=\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";var output=\"abort(\"+what+\") at \"+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module[\"abort\"]=Module.abort=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"]){shouldRunNow=false}Module[\"arguments\"]=[];run();module.exports=Module;\n\n\n\n\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n\nThis is the core of the Ethereum Virtual Machine (EVM or just VM).\n\nNOTES:\n\n1. Stack items are lazily duplicated, so you must never directly change a buffer\nfrom the stack, instead you should `copy` it first.\n\n2. Not all stack items are 32 bytes, so if the operation relies on the stack\nitem length then you must use `utils.pad(, 32)` first.\n\n*/\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar txContext_1 = __importDefault(require(\"./evm/txContext\"));\nvar message_1 = __importDefault(require(\"./evm/message\"));\nvar evm_1 = __importDefault(require(\"./evm/evm\"));\n/**\n * @ignore\n */\nfunction runCode(opts) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n var block = (_a = opts.block) !== null && _a !== void 0 ? _a : block_1.Block.fromBlockData({}, { common: this._common });\n // Backwards compatibility\n var txContext = (_b = opts.txContext) !== null && _b !== void 0 ? _b : new txContext_1.default((_c = opts.gasPrice) !== null && _c !== void 0 ? _c : new ethereumjs_util_1.BN(0), (_e = (_d = opts.origin) !== null && _d !== void 0 ? _d : opts.caller) !== null && _e !== void 0 ? _e : ethereumjs_util_1.Address.zero());\n var message = (_f = opts.message) !== null && _f !== void 0 ? _f : new message_1.default({\n code: opts.code,\n data: opts.data,\n gasLimit: opts.gasLimit,\n to: (_g = opts.address) !== null && _g !== void 0 ? _g : ethereumjs_util_1.Address.zero(),\n caller: opts.caller,\n value: opts.value,\n depth: (_h = opts.depth) !== null && _h !== void 0 ? _h : 0,\n selfdestruct: (_j = opts.selfdestruct) !== null && _j !== void 0 ? _j : {},\n isStatic: (_k = opts.isStatic) !== null && _k !== void 0 ? _k : false,\n });\n var evm = (_l = opts.evm) !== null && _l !== void 0 ? _l : new evm_1.default(this, txContext, block);\n return evm.runInterpreter(message, { pc: opts.pc });\n}\nexports.default = runCode;\n//# sourceMappingURL=runCode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TxContext = /** @class */ (function () {\n function TxContext(gasPrice, origin) {\n this.gasPrice = gasPrice;\n this.origin = origin;\n }\n return TxContext;\n}());\nexports.default = TxContext;\n//# sourceMappingURL=txContext.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar block_1 = require(\"@ethereumjs/block\");\nvar txContext_1 = __importDefault(require(\"./evm/txContext\"));\nvar message_1 = __importDefault(require(\"./evm/message\"));\nvar evm_1 = __importDefault(require(\"./evm/evm\"));\n/**\n * @ignore\n */\nfunction runCall(opts) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var block = (_a = opts.block) !== null && _a !== void 0 ? _a : block_1.Block.fromBlockData({}, { common: this._common });\n var txContext = new txContext_1.default((_b = opts.gasPrice) !== null && _b !== void 0 ? _b : new ethereumjs_util_1.BN(0), (_d = (_c = opts.origin) !== null && _c !== void 0 ? _c : opts.caller) !== null && _d !== void 0 ? _d : ethereumjs_util_1.Address.zero());\n var message = new message_1.default({\n caller: opts.caller,\n gasLimit: (_e = opts.gasLimit) !== null && _e !== void 0 ? _e : new ethereumjs_util_1.BN(0xffffff),\n to: (_f = opts.to) !== null && _f !== void 0 ? _f : undefined,\n value: opts.value,\n data: opts.data,\n code: opts.code,\n depth: (_g = opts.depth) !== null && _g !== void 0 ? _g : 0,\n isCompiled: (_h = opts.compiled) !== null && _h !== void 0 ? _h : false,\n isStatic: (_j = opts.static) !== null && _j !== void 0 ? _j : false,\n salt: (_k = opts.salt) !== null && _k !== void 0 ? _k : null,\n selfdestruct: (_l = opts.selfdestruct) !== null && _l !== void 0 ? _l : {},\n delegatecall: (_m = opts.delegatecall) !== null && _m !== void 0 ? _m : false,\n });\n var evm = new evm_1.default(this, txContext, block);\n return evm.executeMessage(message);\n}\nexports.default = runCall;\n//# sourceMappingURL=runCall.js.map","'use strict';\n\nvar EventEmitter = require('events').EventEmitter,\n util = require('util'),\n eachSeries = require('async/eachSeries'),\n AsyncEventEmitter;\n\n\nmodule.exports = exports = AsyncEventEmitter = function AsyncEventEmitter () {\n EventEmitter.call(this);\n};\n\nutil.inherits(AsyncEventEmitter, EventEmitter);\n\n\n/* Public methods\n============================================================================= */\n\nAsyncEventEmitter.prototype.emit = function(event, data, callback) {\n var self = this,\n listeners = self._events[event] || [];\n\n // Optional data argument\n if(!callback && typeof data === 'function') {\n callback = data;\n data = undefined;\n }\n\n // Special treatment of internal newListener and removeListener events\n if(event === 'newListener' || event === 'removeListener') {\n data = {\n event: data,\n fn: callback\n };\n\n callback = undefined;\n }\n\n // A single listener is just a function not an array...\n listeners = Array.isArray(listeners) ? listeners : [listeners];\n\n eachSeries(listeners.slice(), function (fn, next) {\n var err;\n\n // Support synchronous functions\n if(fn.length < 2) {\n try {\n fn.call(self, data);\n }\n catch (e) {\n err = e;\n }\n\n return next(err);\n }\n\n // Async\n fn.call(self, data, next);\n }, callback);\n\n return self;\n};\n\n\nAsyncEventEmitter.prototype.once = function (type, listener) {\n var self = this,\n g;\n\n if (typeof listener !== 'function') {\n throw new TypeError('listener must be a function');\n }\n\n // Hack to support set arity\n if(listener.length >= 2) {\n g = function (e, next) {\n self.removeListener(type, g);\n listener(e, next);\n };\n }\n else {\n g = function (e) {\n self.removeListener(type, g);\n listener(e);\n };\n }\n\n g.listener = listener;\n self.on(type, g);\n\n return self;\n};\n\n\nAsyncEventEmitter.prototype.first = function(event, listener) {\n var listeners = this._events[event] || [];\n\n // Contract\n if(typeof listener !== 'function') {\n throw new TypeError('listener must be a function');\n }\n\n // Listeners are not always an array\n if(!Array.isArray(listeners)) {\n this._events[event] = listeners = [listeners];\n }\n\n listeners.unshift(listener);\n\n return this;\n};\n\n\nAsyncEventEmitter.prototype.at = function(event, index, listener) {\n var listeners = this._events[event] || [];\n\n // Contract\n if(typeof listener !== 'function') {\n throw new TypeError('listener must be a function');\n }\n if(typeof index !== 'number' || index < 0) {\n throw new TypeError('index must be a non-negative integer');\n }\n\n // Listeners are not always an array\n if(!Array.isArray(listeners)) {\n this._events[event] = listeners = [listeners];\n }\n\n listeners.splice(index, 0, listener);\n\n return this;\n};\n\n\nAsyncEventEmitter.prototype.before = function(event, target, listener) {\n return this._beforeOrAfter(event, target, listener);\n};\n\n\nAsyncEventEmitter.prototype.after = function(event, target, listener) {\n return this._beforeOrAfter(event, target, listener, 'after');\n};\n\n\n/* Private methods\n============================================================================= */\n\nAsyncEventEmitter.prototype._beforeOrAfter = function(event, target, listener, beforeOrAfter) {\n var listeners = this._events[event] || [],\n i, index,\n add = beforeOrAfter === 'after' ? 1 : 0;\n\n // Contract\n if(typeof listener !== 'function') {\n throw new TypeError('listener must be a function');\n }\n if(typeof target !== 'function') {\n throw new TypeError('target must be a function');\n }\n\n // Listeners are not always an array\n if(!Array.isArray(listeners)) {\n this._events[event] = listeners = [listeners];\n }\n\n index = listeners.length;\n \n for(i = listeners.length; i--;) {\n if(listeners[i] === target) {\n index = i + add;\n break;\n }\n }\n\n listeners.splice(index, 0, listener);\n\n return this;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eachLimit = require('./eachLimit');\n\nvar _eachLimit2 = _interopRequireDefault(_eachLimit);\n\nvar _doLimit = require('./internal/doLimit');\n\nvar _doLimit2 = _interopRequireDefault(_doLimit);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n *\n * @name eachSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfSeries`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nexports.default = (0, _doLimit2.default)(_eachLimit2.default, 1);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = eachLimit;\n\nvar _eachOfLimit = require('./internal/eachOfLimit');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _withoutIndex = require('./internal/withoutIndex');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachLimit(coll, limit, iteratee, callback) {\n (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _eachOfLimit;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _iterator = require('./iterator');\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _onlyOnce = require('./onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _breakLoop = require('./breakLoop');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _eachOfLimit(limit) {\n return function (obj, iteratee, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n if (limit <= 0 || !obj) {\n return callback(null);\n }\n var nextElem = (0, _iterator2.default)(obj);\n var done = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n } else if (value === _breakLoop2.default || done && running <= 0) {\n done = true;\n return callback(null);\n } else if (!looping) {\n replenish();\n }\n }\n\n function replenish() {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = once;\nfunction once(fn) {\n return function () {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = iterator;\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _getIterator = require('./getIterator');\n\nvar _getIterator2 = _interopRequireDefault(_getIterator);\n\nvar _keys = require('lodash/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? { value: coll[i], key: i } : null;\n };\n}\n\nfunction createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done) return null;\n i++;\n return { value: item.value, key: i };\n };\n}\n\nfunction createObjectIterator(obj) {\n var okeys = (0, _keys2.default)(obj);\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n return i < len ? { value: obj[key], key: key } : null;\n };\n}\n\nfunction iterator(coll) {\n if ((0, _isArrayLike2.default)(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = (0, _getIterator2.default)(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\nmodule.exports = exports['default'];","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll) {\n return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();\n};\n\nvar iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;\n\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n return function () {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nexports.default = {};\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _withoutIndex;\nfunction _withoutIndex(iteratee) {\n return function (value, index, callback) {\n return iteratee(value, callback);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncify;\n\nvar _isObject = require('lodash/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nvar _initialParams = require('./internal/initialParams');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n return (0, _initialParams2.default)(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if ((0, _isObject2.default)(result) && typeof result.then === 'function') {\n result.then(function (value) {\n invokeCallback(callback, null, value);\n }, function (err) {\n invokeCallback(callback, err.message ? err : new Error(err));\n });\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (e) {\n (0, _setImmediate2.default)(rethrow, e);\n }\n}\n\nfunction rethrow(error) {\n throw error;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (fn) {\n return function () /*...args, callback*/{\n var args = (0, _slice2.default)(arguments);\n var callback = args.pop();\n fn.call(this, args, callback);\n };\n};\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = doLimit;\nfunction doLimit(fn, limit) {\n return function (iterable, iteratee, callback) {\n return fn(iterable, limit, iteratee, callback);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar forEach = require('for-each');\n\nvar isES5 = typeof Object.defineProperty === 'function';\n\nvar hasProto = [].__proto__ === Array.prototype; // eslint-disable-line no-proto\n\nif (!isES5 || !hasProto) {\n\tthrow new TypeError('util.promisify requires a true ES5 environment, that also supports `__proto__`');\n}\n\nvar getOwnPropertyDescriptors = require('object.getownpropertydescriptors');\n\nif (typeof Promise !== 'function') {\n\tthrow new TypeError('`Promise` must be globally available for util.promisify to work.');\n}\n\nvar callBound = require('call-bind/callBound');\n\nvar $slice = callBound('Array.prototype.slice');\nvar $concat = callBound('Array.prototype.concat');\nvar $forEach = callBound('Array.prototype.forEach');\n\nvar hasSymbols = require('has-symbols')();\n\n// eslint-disable-next-line no-restricted-properties\nvar kCustomPromisifiedSymbol = hasSymbols ? Symbol['for']('nodejs.util.promisify.custom') : null;\nvar kCustomPromisifyArgsSymbol = hasSymbols ? Symbol('customPromisifyArgs') : null;\n\nmodule.exports = function promisify(orig) {\n\tif (typeof orig !== 'function') {\n\t\tvar error = new TypeError('The \"original\" argument must be of type function');\n\t\terror.name = 'TypeError [ERR_INVALID_ARG_TYPE]';\n\t\terror.code = 'ERR_INVALID_ARG_TYPE';\n\t\tthrow error;\n\t}\n\n\tif (hasSymbols && orig[kCustomPromisifiedSymbol]) {\n\t\tvar customFunction = orig[kCustomPromisifiedSymbol];\n\t\tif (typeof customFunction !== 'function') {\n\t\t\tthrow new TypeError('The [util.promisify.custom] property must be a function');\n\t\t}\n\t\tObject.defineProperty(customFunction, kCustomPromisifiedSymbol, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: customFunction,\n\t\t\twritable: false\n\t\t});\n\t\treturn customFunction;\n\t}\n\n\t// Names to create an object from in case the callback receives multiple\n\t// arguments, e.g. ['stdout', 'stderr'] for child_process.exec.\n\tvar argumentNames = orig[kCustomPromisifyArgsSymbol];\n\n\tvar promisified = function fn() {\n\t\tvar args = $slice(arguments);\n\t\tvar self = this; // eslint-disable-line no-invalid-this\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\torig.apply(self, $concat(args, function (err) {\n\t\t\t\tvar values = arguments.length > 1 ? $slice(arguments, 1) : [];\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else if (typeof argumentNames !== 'undefined' && values.length > 1) {\n\t\t\t\t\tvar obj = {};\n\t\t\t\t\t$forEach(argumentNames, function (name, index) {\n\t\t\t\t\t\tobj[name] = values[index];\n\t\t\t\t\t});\n\t\t\t\t\tresolve(obj);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(values[0]);\n\t\t\t\t}\n\t\t\t}));\n\t\t});\n\t};\n\n\tpromisified.__proto__ = orig.__proto__; // eslint-disable-line no-proto\n\n\tObject.defineProperty(promisified, kCustomPromisifiedSymbol, {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: promisified,\n\t\twritable: false\n\t});\n\tvar descriptors = getOwnPropertyDescriptors(orig);\n\tforEach(descriptors, function (k, v) {\n\t\ttry {\n\t\t\tObject.defineProperty(promisified, k, v);\n\t\t} catch (e) {\n\t\t\t// handle nonconfigurable function properties\n\t\t}\n\t});\n\treturn promisified;\n};\n\nmodule.exports.custom = kCustomPromisifiedSymbol;\nmodule.exports.customPromisifyArgs = kCustomPromisifyArgsSymbol;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar CreateDataProperty = require('es-abstract/2020/CreateDataProperty');\nvar IsCallable = require('es-abstract/2020/IsCallable');\nvar RequireObjectCoercible = require('es-abstract/2020/RequireObjectCoercible');\nvar ToObject = require('es-abstract/2020/ToObject');\nvar callBound = require('call-bind/callBound');\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $getOwnNames = Object.getOwnPropertyNames;\nvar $getSymbols = Object.getOwnPropertySymbols;\nvar $concat = callBound('Array.prototype.concat');\nvar $reduce = callBound('Array.prototype.reduce');\nvar getAll = $getSymbols ? function (obj) {\n\treturn $concat($getOwnNames(obj), $getSymbols(obj));\n} : $getOwnNames;\n\nvar isES5 = IsCallable($gOPD) && IsCallable($getOwnNames);\n\nmodule.exports = function getOwnPropertyDescriptors(value) {\n\tRequireObjectCoercible(value);\n\tif (!isES5) {\n\t\tthrow new TypeError('getOwnPropertyDescriptors requires Object.getOwnPropertyDescriptor');\n\t}\n\n\tvar O = ToObject(value);\n\treturn $reduce(\n\t\tgetAll(O),\n\t\tfunction (acc, key) {\n\t\t\tvar descriptor = $gOPD(O, key);\n\t\t\tif (typeof descriptor !== 'undefined') {\n\t\t\t\tCreateDataProperty(acc, key, descriptor);\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\t{}\n\t);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\n\nvar has = require('has');\n\nvar predicates = {\n\t// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type\n\t'Property Descriptor': function isPropertyDescriptor(Type, Desc) {\n\t\tif (Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t}\n};\n\nmodule.exports = function assertRecord(Type, recordType, argumentName, value) {\n\tvar predicate = predicates[recordType];\n\tif (typeof predicate !== 'function') {\n\t\tthrow new $SyntaxError('unknown record type: ' + recordType);\n\t}\n\tif (!predicate(Type, value)) {\n\t\tthrow new $TypeError(argumentName + ' must be a ' + recordType);\n\t}\n};\n","'use strict';\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey\n\nmodule.exports = function IsPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.2\n\nmodule.exports = function ToBoolean(value) { return !!value; };\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.getOwnPropertyDescriptors === 'function' ? Object.getOwnPropertyDescriptors : implementation;\n};\n","'use strict';\n\nvar util = require('util');\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof util.promisify === 'function' && util.promisify.custom === implementation.custom) {\n\t\treturn util.promisify;\n\t}\n\treturn implementation;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForkStateManager = void 0;\nconst rlp_1 = require(\"rlp\");\nconst stateManager_1 = __importDefault(require(\"@ethereumjs/vm/dist/state/stateManager\"));\nconst cache_1 = require(\"./cache\");\n/**\n * Interface for getting and setting data from an underlying\n * state trie.\n */\nclass ForkStateManager extends stateManager_1.default {\n /**\n * Instantiate the StateManager interface.\n */\n constructor(opts) {\n super(opts);\n this._cache = new cache_1.ForkCache(opts.trie);\n }\n /**\n * Copies the current instance of the `StateManager`\n * at the last fully committed point, i.e. as if all current\n * checkpoints were reverted.\n */\n copy() {\n return new ForkStateManager({\n trie: this._trie.copy(false),\n common: this._common\n });\n }\n /**\n * Creates a storage trie from the primary storage trie\n * for an account and saves this in the storage cache.\n * @private\n */\n async _lookupStorageTrie(address) {\n // from state trie\n const account = await this.getAccount(address);\n const storageTrie = this._trie.copy(false);\n storageTrie.setContext(account.stateRoot, address.buf, storageTrie.blockNumber);\n storageTrie.db.checkpoints = [];\n return storageTrie;\n }\n /**\n * Gets the storage value associated with the provided `address` and `key`. This method returns\n * the shortest representation of the stored value.\n * @param address - Address of the account to get the storage for\n * @param key - Key in the account's storage to get the value for. Must be 32 bytes long.\n * @returns {Promise} - The storage value for the account\n * corresponding to the provided address at the provided key.\n * If this does not exist an empty `Buffer` is returned.\n */\n async getContractStorage(address, key) {\n const trie = (await this._getStorageTrie(address));\n const value = await trie.get(key);\n return rlp_1.decode(value);\n }\n}\nexports.ForkStateManager = ForkStateManager;\n//# sourceMappingURL=state-manager.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst debug_1 = require(\"debug\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst exceptions_1 = require(\"../exceptions\");\nconst message_1 = __importDefault(require(\"./message\"));\nconst debugGas = debug_1.debug('vm:eei:gas');\nfunction trap(err) {\n throw new exceptions_1.VmError(err);\n}\nconst MASK_160 = new ethereumjs_util_1.BN(1).shln(160).subn(1);\nfunction addressToBuffer(address) {\n if (Buffer.isBuffer(address))\n return address;\n return address.and(MASK_160).toArrayLike(Buffer, 'be', 20);\n}\n/**\n * External interface made available to EVM bytecode. Modeled after\n * the ewasm EEI [spec](https://github.com/ewasm/design/blob/master/eth_interface.md).\n * It includes methods for accessing/modifying state, calling or creating contracts, access\n * to environment data among other things.\n * The EEI instance also keeps artifacts produced by the bytecode such as logs\n * and to-be-selfdestructed addresses.\n */\nclass EEI {\n constructor(env, state, evm, common, gasLeft) {\n this._env = env;\n this._state = state;\n this._evm = evm;\n this._lastReturned = Buffer.alloc(0);\n this._common = common;\n this._gasLeft = gasLeft;\n this._result = {\n logs: [],\n returnValue: undefined,\n selfdestruct: {},\n };\n }\n /**\n * Subtracts an amount from the gas counter.\n * @param amount - Amount of gas to consume\n * @param context - Usage context for debugging\n * @throws if out of gas\n */\n useGas(amount, context) {\n this._gasLeft.isub(amount);\n debugGas(`${context ? context + ': ' : ''}used ${amount} gas (-> ${this._gasLeft})`);\n if (this._gasLeft.ltn(0)) {\n this._gasLeft = new ethereumjs_util_1.BN(0);\n trap(exceptions_1.ERROR.OUT_OF_GAS);\n }\n }\n /**\n * Adds a positive amount to the gas counter.\n * @param amount - Amount of gas refunded\n * @param context - Usage context for debugging\n */\n refundGas(amount, context) {\n debugGas(`${context ? context + ': ' : ''}refund ${amount} gas (-> ${this._evm._refund})`);\n this._evm._refund.iadd(amount);\n }\n /**\n * Reduces amount of gas to be refunded by a positive value.\n * @param amount - Amount to subtract from gas refunds\n * @param context - Usage context for debugging\n */\n subRefund(amount, context) {\n debugGas(`${context ? context + ': ' : ''}sub gas refund ${amount} (-> ${this._evm._refund})`);\n this._evm._refund.isub(amount);\n if (this._evm._refund.ltn(0)) {\n this._evm._refund = new ethereumjs_util_1.BN(0);\n trap(exceptions_1.ERROR.REFUND_EXHAUSTED);\n }\n }\n /**\n * Returns address of currently executing account.\n */\n getAddress() {\n return this._env.address;\n }\n /**\n * Returns balance of the given account.\n * @param address - Address of account\n */\n async getExternalBalance(address) {\n // shortcut if current account\n if (address.equals(this._env.address)) {\n return this._env.contract.balance;\n }\n // otherwise load account then return balance\n const account = await this._state.getAccount(address);\n return account.balance;\n }\n /**\n * Returns balance of self.\n */\n getSelfBalance() {\n return this._env.contract.balance;\n }\n /**\n * Returns caller address. This is the address of the account\n * that is directly responsible for this execution.\n */\n getCaller() {\n return new ethereumjs_util_1.BN(this._env.caller.buf);\n }\n /**\n * Returns the deposited value by the instruction/transaction\n * responsible for this execution.\n */\n getCallValue() {\n return new ethereumjs_util_1.BN(this._env.callValue);\n }\n /**\n * Returns input data in current environment. This pertains to the input\n * data passed with the message call instruction or transaction.\n */\n getCallData() {\n return this._env.callData;\n }\n /**\n * Returns size of input data in current environment. This pertains to the\n * input data passed with the message call instruction or transaction.\n */\n getCallDataSize() {\n return new ethereumjs_util_1.BN(this._env.callData.length);\n }\n /**\n * Returns the size of code running in current environment.\n */\n getCodeSize() {\n return new ethereumjs_util_1.BN(this._env.code.length);\n }\n /**\n * Returns the code running in current environment.\n */\n getCode() {\n return this._env.code;\n }\n /**\n * Returns true if the current call must be executed statically.\n */\n isStatic() {\n return this._env.isStatic;\n }\n /**\n * Get size of an account’s code.\n * @param address - Address of account\n */\n async getExternalCodeSize(address) {\n const addr = new ethereumjs_util_1.Address(addressToBuffer(address));\n const code = await this._state.getContractCode(addr);\n return new ethereumjs_util_1.BN(code.length);\n }\n /**\n * Returns code of an account.\n * @param address - Address of account\n */\n async getExternalCode(address) {\n const addr = new ethereumjs_util_1.Address(addressToBuffer(address));\n return this._state.getContractCode(addr);\n }\n /**\n * Returns size of current return data buffer. This contains the return data\n * from the last executed call, callCode, callDelegate, callStatic or create.\n * Note: create only fills the return data buffer in case of a failure.\n */\n getReturnDataSize() {\n return new ethereumjs_util_1.BN(this._lastReturned.length);\n }\n /**\n * Returns the current return data buffer. This contains the return data\n * from last executed call, callCode, callDelegate, callStatic or create.\n * Note: create only fills the return data buffer in case of a failure.\n */\n getReturnData() {\n return this._lastReturned;\n }\n /**\n * Returns price of gas in current environment.\n */\n getTxGasPrice() {\n return this._env.gasPrice;\n }\n /**\n * Returns the execution's origination address. This is the\n * sender of original transaction; it is never an account with\n * non-empty associated code.\n */\n getTxOrigin() {\n return new ethereumjs_util_1.BN(this._env.origin.buf);\n }\n /**\n * Returns the block’s number.\n */\n getBlockNumber() {\n return this._env.block.header.number;\n }\n /**\n * Returns the block's beneficiary address.\n */\n getBlockCoinbase() {\n let coinbase;\n if (this._common.consensusAlgorithm() === 'clique') {\n // Backwards-compatibilty check\n // TODO: can be removed along VM v5 release\n if ('cliqueSigner' in this._env.block.header) {\n coinbase = this._env.block.header.cliqueSigner();\n }\n else {\n coinbase = ethereumjs_util_1.Address.zero();\n }\n }\n else {\n coinbase = this._env.block.header.coinbase;\n }\n return new ethereumjs_util_1.BN(coinbase.toBuffer());\n }\n /**\n * Returns the block's timestamp.\n */\n getBlockTimestamp() {\n return this._env.block.header.timestamp;\n }\n /**\n * Returns the block's difficulty.\n */\n getBlockDifficulty() {\n return this._env.block.header.difficulty;\n }\n /**\n * Returns the block's gas limit.\n */\n getBlockGasLimit() {\n return this._env.block.header.gasLimit;\n }\n /**\n * Returns the chain ID for current chain. Introduced for the\n * CHAINID opcode proposed in [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344).\n */\n getChainId() {\n return this._common.chainIdBN();\n }\n /**\n * Returns Gets the hash of one of the 256 most recent complete blocks.\n * @param num - Number of block\n */\n async getBlockHash(num) {\n const block = await this._env.blockchain.getBlock(num);\n return new ethereumjs_util_1.BN(block.hash());\n }\n /**\n * Store 256-bit a value in memory to persistent storage.\n */\n async storageStore(key, value) {\n await this._state.putContractStorage(this._env.address, key, value);\n const account = await this._state.getAccount(this._env.address);\n this._env.contract = account;\n }\n /**\n * Loads a 256-bit value to memory from persistent storage.\n * @param key - Storage key\n */\n async storageLoad(key) {\n return this._state.getContractStorage(this._env.address, key);\n }\n /**\n * Returns the current gasCounter.\n */\n getGasLeft() {\n return this._gasLeft.clone();\n }\n /**\n * Set the returning output data for the execution.\n * @param returnData - Output data to return\n */\n finish(returnData) {\n this._result.returnValue = returnData;\n trap(exceptions_1.ERROR.STOP);\n }\n /**\n * Set the returning output data for the execution. This will halt the\n * execution immediately and set the execution result to \"reverted\".\n * @param returnData - Output data to return\n */\n revert(returnData) {\n this._result.returnValue = returnData;\n trap(exceptions_1.ERROR.REVERT);\n }\n /**\n * Mark account for later deletion and give the remaining balance to the\n * specified beneficiary address. This will cause a trap and the\n * execution will be aborted immediately.\n * @param toAddress - Beneficiary address\n */\n async selfDestruct(toAddress) {\n return this._selfDestruct(toAddress);\n }\n async _selfDestruct(toAddress) {\n // only add to refund if this is the first selfdestruct for the address\n if (!this._result.selfdestruct[this._env.address.buf.toString('hex')]) {\n this.refundGas(new ethereumjs_util_1.BN(this._common.param('gasPrices', 'selfdestructRefund')));\n }\n this._result.selfdestruct[this._env.address.buf.toString('hex')] = toAddress.buf;\n // Add to beneficiary balance\n const toAccount = await this._state.getAccount(toAddress);\n toAccount.balance.iadd(this._env.contract.balance);\n await this._state.putAccount(toAddress, toAccount);\n // Subtract from contract balance\n const account = await this._state.getAccount(this._env.address);\n account.balance = new ethereumjs_util_1.BN(0);\n await this._state.putAccount(this._env.address, account);\n trap(exceptions_1.ERROR.STOP);\n }\n /**\n * Creates a new log in the current environment.\n */\n log(data, numberOfTopics, topics) {\n if (numberOfTopics < 0 || numberOfTopics > 4) {\n trap(exceptions_1.ERROR.OUT_OF_RANGE);\n }\n if (topics.length !== numberOfTopics) {\n trap(exceptions_1.ERROR.INTERNAL_ERROR);\n }\n const log = [this._env.address.buf, topics, data];\n this._result.logs.push(log);\n }\n /**\n * Sends a message with arbitrary data to a given address path.\n */\n async call(gasLimit, address, value, data) {\n const msg = new message_1.default({\n caller: this._env.address,\n gasLimit,\n to: address,\n value,\n data,\n isStatic: this._env.isStatic,\n depth: this._env.depth + 1,\n });\n return this._baseCall(msg);\n }\n /**\n * Message-call into this account with an alternative account's code.\n */\n async callCode(gasLimit, address, value, data) {\n const msg = new message_1.default({\n caller: this._env.address,\n gasLimit,\n to: this._env.address,\n codeAddress: address,\n value,\n data,\n isStatic: this._env.isStatic,\n depth: this._env.depth + 1,\n });\n return this._baseCall(msg);\n }\n /**\n * Sends a message with arbitrary data to a given address path, but disallow\n * state modifications. This includes log, create, selfdestruct and call with\n * a non-zero value.\n */\n async callStatic(gasLimit, address, value, data) {\n const msg = new message_1.default({\n caller: this._env.address,\n gasLimit,\n to: address,\n value,\n data,\n isStatic: true,\n depth: this._env.depth + 1,\n });\n return this._baseCall(msg);\n }\n /**\n * Message-call into this account with an alternative account’s code, but\n * persisting the current values for sender and value.\n */\n async callDelegate(gasLimit, address, value, data) {\n const msg = new message_1.default({\n caller: this._env.caller,\n gasLimit,\n to: this._env.address,\n codeAddress: address,\n value,\n data,\n isStatic: this._env.isStatic,\n delegatecall: true,\n depth: this._env.depth + 1,\n });\n return this._baseCall(msg);\n }\n async _baseCall(msg) {\n const selfdestruct = Object.assign({}, this._result.selfdestruct);\n msg.selfdestruct = selfdestruct;\n // empty the return data buffer\n this._lastReturned = Buffer.alloc(0);\n // Check if account has enough ether and max depth not exceeded\n if (this._env.depth >= this._common.param('vm', 'stackLimit') ||\n (msg.delegatecall !== true && this._env.contract.balance.lt(msg.value))) {\n return new ethereumjs_util_1.BN(0);\n }\n const results = await this._evm.executeMessage(msg);\n if (results.execResult.logs) {\n this._result.logs = this._result.logs.concat(results.execResult.logs);\n }\n // this should always be safe\n this.useGas(results.gasUsed, 'CALL, STATICCALL, DELEGATECALL, CALLCODE');\n // Set return value\n if (results.execResult.returnValue &&\n (!results.execResult.exceptionError ||\n results.execResult.exceptionError.error === exceptions_1.ERROR.REVERT)) {\n this._lastReturned = results.execResult.returnValue;\n }\n if (!results.execResult.exceptionError) {\n Object.assign(this._result.selfdestruct, selfdestruct);\n // update stateRoot on current contract\n const account = await this._state.getAccount(this._env.address);\n this._env.contract = account;\n }\n return this._getReturnCode(results);\n }\n /**\n * Creates a new contract with a given value.\n */\n async create(gasLimit, value, data, salt = null) {\n const selfdestruct = Object.assign({}, this._result.selfdestruct);\n const msg = new message_1.default({\n caller: this._env.address,\n gasLimit,\n value,\n data,\n salt,\n depth: this._env.depth + 1,\n selfdestruct,\n });\n // empty the return data buffer\n this._lastReturned = Buffer.alloc(0);\n // Check if account has enough ether and max depth not exceeded\n if (this._env.depth >= this._common.param('vm', 'stackLimit') ||\n (msg.delegatecall !== true && this._env.contract.balance.lt(msg.value))) {\n return new ethereumjs_util_1.BN(0);\n }\n this._env.contract.nonce.iaddn(1);\n await this._state.putAccount(this._env.address, this._env.contract);\n const results = await this._evm.executeMessage(msg);\n if (results.execResult.logs) {\n this._result.logs = this._result.logs.concat(results.execResult.logs);\n }\n // this should always be safe\n this.useGas(results.gasUsed, 'CREATE');\n // Set return buffer in case revert happened\n if (results.execResult.exceptionError &&\n results.execResult.exceptionError.error === exceptions_1.ERROR.REVERT) {\n this._lastReturned = results.execResult.returnValue;\n }\n if (!results.execResult.exceptionError ||\n results.execResult.exceptionError.error === exceptions_1.ERROR.CODESTORE_OUT_OF_GAS) {\n Object.assign(this._result.selfdestruct, selfdestruct);\n // update stateRoot on current contract\n const account = await this._state.getAccount(this._env.address);\n this._env.contract = account;\n if (results.createdAddress) {\n // push the created address to the stack\n return new ethereumjs_util_1.BN(results.createdAddress.buf);\n }\n }\n return this._getReturnCode(results);\n }\n /**\n * Creates a new contract with a given value. Generates\n * a deterministic address via CREATE2 rules.\n */\n async create2(gasLimit, value, data, salt) {\n return this.create(gasLimit, value, data, salt);\n }\n /**\n * Returns true if account is empty or non-existent (according to EIP-161).\n * @param address - Address of account\n */\n async isAccountEmpty(address) {\n return this._state.accountIsEmpty(address);\n }\n /**\n * Returns true if account exists in the state trie (it can be empty). Returns false if the account is `null`.\n * @param address - Address of account\n */\n async accountExists(address) {\n return this._state.accountExists(address);\n }\n _getReturnCode(results) {\n // This preserves the previous logic, but seems to contradict the EEI spec\n // https://github.com/ewasm/design/blob/38eeded28765f3e193e12881ea72a6ab807a3371/eth_interface.md\n if (results.execResult.exceptionError) {\n return new ethereumjs_util_1.BN(0);\n }\n else {\n return new ethereumjs_util_1.BN(1);\n }\n }\n}\nexports.default = EEI;\n//# sourceMappingURL=eei.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.adjustSstoreGasEIP2929 = exports.accessStorageEIP2929 = exports.accessAddressEIP2929 = void 0;\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\n/**\n * Adds address to accessedAddresses set if not already included.\n * Adjusts cost incurred for executing opcode based on whether address read\n * is warm/cold. (EIP 2929)\n * @param {RunState} runState\n * @param {BN} address\n */\nfunction accessAddressEIP2929(runState, address, chargeGas = true, isSelfdestruct = false) {\n if (!runState._common.isActivatedEIP(2929))\n return;\n const addressStr = address.buf;\n // Cold\n if (!runState.stateManager.isWarmedAddress(addressStr)) {\n // eslint-disable-next-line prettier/prettier\n runState.stateManager.addWarmedAddress(addressStr);\n // CREATE, CREATE2 opcodes have the address warmed for free.\n // selfdestruct beneficiary address reads are charged an *additional* cold access\n if (chargeGas) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'coldaccountaccess')), 'EIP-2929 -> coldaccountaccess');\n }\n // Warm: (selfdestruct beneficiary address reads are not charged when warm)\n }\n else if (chargeGas && !isSelfdestruct) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'warmstorageread')), 'EIP-2929 -> warmstorageread');\n }\n}\nexports.accessAddressEIP2929 = accessAddressEIP2929;\n/**\n * Adds (address, key) to accessedStorage tuple set if not already included.\n * Adjusts cost incurred for executing opcode based on whether storage read\n * is warm/cold. (EIP 2929)\n * @param {RunState} runState\n * @param {Buffer} key (to storage slot)\n */\nfunction accessStorageEIP2929(runState, key, isSstore) {\n if (!runState._common.isActivatedEIP(2929))\n return;\n const address = runState.eei.getAddress().buf;\n const slotIsCold = !runState.stateManager.isWarmedStorage(address, key);\n // Cold (SLOAD and SSTORE)\n if (slotIsCold) {\n // eslint-disable-next-line prettier/prettier\n runState.stateManager.addWarmedStorage(address, key);\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'coldsload')), 'EIP-2929 -> coldsload');\n }\n else if (!isSstore) {\n runState.eei.useGas(new ethereumjs_util_1.BN(runState._common.param('gasPrices', 'warmstorageread')), 'EIP-2929 -> warmstorageread');\n }\n}\nexports.accessStorageEIP2929 = accessStorageEIP2929;\n/**\n * Adjusts cost of SSTORE_RESET_GAS or SLOAD (aka sstorenoop) (EIP-2200) downward when storage\n * location is already warm\n * @param {RunState} runState\n * @param {Buffer} key storage slot\n * @param {number} defaultCost SSTORE_RESET_GAS / SLOAD\n * @param {string} costName parameter name ('reset' or 'noop')\n * @return {number} adjusted cost\n */\nfunction adjustSstoreGasEIP2929(runState, key, defaultCost, costName) {\n if (!runState._common.isActivatedEIP(2929))\n return defaultCost;\n const address = runState.eei.getAddress().buf;\n const warmRead = runState._common.param('gasPrices', 'warmstorageread');\n const coldSload = runState._common.param('gasPrices', 'coldsload');\n if (runState.stateManager.isWarmedStorage(address, key)) {\n switch (costName) {\n case 'reset':\n return defaultCost - coldSload;\n case 'noop':\n return warmRead;\n case 'initRefund':\n return runState._common.param('gasPrices', 'sstoreInitGasEIP2200') - warmRead;\n case 'cleanRefund':\n return runState._common.param('gasPrices', 'sstoreReset') - coldSload - warmRead;\n }\n }\n return defaultCost;\n}\nexports.adjustSstoreGasEIP2929 = adjustSstoreGasEIP2929;\n//# sourceMappingURL=EIP2929.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst debug_1 = require(\"debug\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst exceptions_1 = require(\"../exceptions\");\nconst memory_1 = __importDefault(require(\"./memory\"));\nconst stack_1 = __importDefault(require(\"./stack\"));\nconst opcodes_1 = require(\"./opcodes\");\n/**\n * Parses and executes EVM bytecode.\n */\nclass Interpreter {\n constructor(vm, eei) {\n // Opcode debuggers (e.g. { 'push': [debug Object], 'sstore': [debug Object], ...})\n this.opDebuggers = {};\n this._vm = vm; // TODO: remove when not needed\n this._state = vm.stateManager;\n this._eei = eei;\n this._runState = {\n programCounter: 0,\n opCode: 0xfe,\n memory: new memory_1.default(),\n memoryWordCount: new ethereumjs_util_1.BN(0),\n highestMemCost: new ethereumjs_util_1.BN(0),\n stack: new stack_1.default(),\n returnStack: new stack_1.default(1023),\n code: Buffer.alloc(0),\n validJumps: [],\n validJumpSubs: [],\n // TODO: Replace with EEI methods\n _common: this._vm._common,\n stateManager: this._state,\n eei: this._eei,\n };\n }\n async run(code, opts = {}) {\n this._runState.code = code;\n this._runState.programCounter = opts.pc || this._runState.programCounter;\n const valid = this._getValidJumpDests(code);\n this._runState.validJumps = valid.jumps;\n this._runState.validJumpSubs = valid.jumpSubs;\n // Check that the programCounter is in range\n const pc = this._runState.programCounter;\n if (pc !== 0 && (pc < 0 || pc >= this._runState.code.length)) {\n throw new Error('Internal error: program counter not in range');\n }\n let err;\n // Iterate through the given ops until something breaks or we hit STOP\n while (this._runState.programCounter < this._runState.code.length) {\n const opCode = this._runState.code[this._runState.programCounter];\n this._runState.opCode = opCode;\n await this._runStepHook();\n try {\n await this.runStep();\n }\n catch (e) {\n // STOP is not an exception\n if (e.error !== exceptions_1.ERROR.STOP) {\n err = e;\n }\n // TODO: Throw on non-VmError exceptions\n break;\n }\n }\n return {\n runState: this._runState,\n exceptionError: err,\n };\n }\n /**\n * Executes the opcode to which the program counter is pointing,\n * reducing it's base gas cost, and increments the program counter.\n */\n async runStep() {\n const opInfo = this.lookupOpInfo(this._runState.opCode);\n // Check for invalid opcode\n if (opInfo.name === 'INVALID') {\n throw new exceptions_1.VmError(exceptions_1.ERROR.INVALID_OPCODE);\n }\n // Reduce opcode's base fee\n this._eei.useGas(new ethereumjs_util_1.BN(opInfo.fee), `${opInfo.name} (base fee)`);\n // Advance program counter\n this._runState.programCounter++;\n // Execute opcode handler\n const opFn = this.getOpHandler(opInfo);\n if (opInfo.isAsync) {\n await opFn.apply(null, [this._runState]);\n }\n else {\n opFn.apply(null, [this._runState]);\n }\n }\n /**\n * Get the handler function for an opcode.\n */\n getOpHandler(opInfo) {\n return opcodes_1.handlers.get(opInfo.code);\n }\n /**\n * Get info for an opcode from VM's list of opcodes.\n */\n lookupOpInfo(op) {\n // if not found, return 0xfe: INVALID\n return this._vm._opcodes.get(op) || this._vm._opcodes.get(0xfe);\n }\n async _runStepHook() {\n const opcode = this.lookupOpInfo(this._runState.opCode);\n const eventObj = {\n pc: this._runState.programCounter,\n gasLeft: this._eei.getGasLeft(),\n opcode: {\n name: opcode.fullName,\n fee: opcode.fee,\n isAsync: opcode.isAsync,\n },\n stack: this._runState.stack._store,\n returnStack: this._runState.returnStack._store,\n depth: this._eei._env.depth,\n address: this._eei._env.address,\n account: this._eei._env.contract,\n stateManager: this._runState.stateManager,\n memory: this._runState.memory._store,\n memoryWordCount: this._runState.memoryWordCount,\n codeAddress: this._eei._env.codeAddress,\n };\n // Create opTrace for debug functionality\n let hexStack = [];\n hexStack = eventObj.stack.map((item) => {\n return '0x' + new ethereumjs_util_1.BN(item).toString(16, 0);\n });\n const name = eventObj.opcode.name;\n const opTrace = {\n pc: eventObj.pc,\n op: name,\n gas: '0x' + eventObj.gasLeft.toString('hex'),\n gasCost: '0x' + eventObj.opcode.fee.toString(16),\n stack: hexStack,\n depth: eventObj.depth,\n };\n if (!(name in this.opDebuggers)) {\n this.opDebuggers[name] = debug_1.debug(`vm:ops:${name}`);\n }\n this.opDebuggers[name](JSON.stringify(opTrace));\n /**\n * The `step` event for trace output\n *\n * @event Event: step\n * @type {Object}\n * @property {Number} pc representing the program counter\n * @property {String} opcode the next opcode to be ran\n * @property {BN} gasLeft amount of gasLeft\n * @property {Array} stack an `Array` of `Buffers` containing the stack\n * @property {Account} account the Account which owns the code running\n * @property {Address} address the address of the `account`\n * @property {Number} depth the current number of calls deep the contract is\n * @property {Buffer} memory the memory of the VM as a `buffer`\n * @property {BN} memoryWordCount current size of memory in words\n * @property {StateManager} stateManager a [[StateManager]] instance\n * @property {Address} codeAddress the address of the code which is currently being ran (this differs from `address` in a `DELEGATECALL` and `CALLCODE` call)\n */\n return this._vm._emit('step', eventObj);\n }\n // Returns all valid jump and jumpsub destinations.\n _getValidJumpDests(code) {\n const jumps = [];\n const jumpSubs = [];\n for (let i = 0; i < code.length; i++) {\n const curOpCode = this.lookupOpInfo(code[i]).name;\n // no destinations into the middle of PUSH\n if (curOpCode === 'PUSH') {\n i += code[i] - 0x5f;\n }\n if (curOpCode === 'JUMPDEST') {\n jumps.push(i);\n }\n if (curOpCode === 'BEGINSUB') {\n jumpSubs.push(i);\n }\n }\n return { jumps, jumpSubs };\n }\n}\nexports.default = Interpreter;\n//# sourceMappingURL=interpreter.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert_1 = __importDefault(require(\"assert\"));\nconst ceil = (value, ceiling) => {\n const r = value % ceiling;\n if (r === 0) {\n return value;\n }\n else {\n return value + ceiling - r;\n }\n};\n/**\n * Memory implements a simple memory model\n * for the ethereum virtual machine.\n */\nclass Memory {\n constructor() {\n this._store = Buffer.alloc(0);\n }\n /**\n * Extends the memory given an offset and size. Rounds extended\n * memory to word-size.\n */\n extend(offset, size) {\n if (size === 0) {\n return;\n }\n const newSize = ceil(offset + size, 32);\n const sizeDiff = newSize - this._store.length;\n if (sizeDiff > 0) {\n this._store = Buffer.concat([this._store, Buffer.alloc(sizeDiff)]);\n }\n }\n /**\n * Writes a byte array with length `size` to memory, starting from `offset`.\n * @param offset - Starting position\n * @param size - How many bytes to write\n * @param value - Value\n */\n write(offset, size, value) {\n if (size === 0) {\n return;\n }\n assert_1.default(value.length === size, 'Invalid value size');\n assert_1.default(offset + size <= this._store.length, 'Value exceeds memory capacity');\n assert_1.default(Buffer.isBuffer(value), 'Invalid value type');\n for (let i = 0; i < size; i++) {\n this._store[offset + i] = value[i];\n }\n }\n /**\n * Reads a slice of memory from `offset` till `offset + size` as a `Buffer`.\n * It fills up the difference between memory's length and `offset + size` with zeros.\n * @param offset - Starting position\n * @param size - How many bytes to read\n */\n read(offset, size) {\n const returnBuffer = Buffer.allocUnsafe(size);\n // Copy the stored \"buffer\" from memory into the return Buffer\n const loaded = Buffer.from(this._store.slice(offset, offset + size));\n returnBuffer.fill(loaded, 0, loaded.length);\n if (loaded.length < size) {\n // fill the remaining part of the Buffer with zeros\n returnBuffer.fill(0, loaded.length, size);\n }\n return returnBuffer;\n }\n}\nexports.default = Memory;\n//# sourceMappingURL=memory.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForkCache = void 0;\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst cache_1 = __importDefault(require(\"@ethereumjs/vm/dist/state/cache\"));\nclass ForkCache extends cache_1.default {\n constructor(trie) {\n super(trie);\n /**\n * Looks up address in underlying trie.\n * @param address - Address of account\n */\n this._lookupAccount = async (address) => {\n const rlp = await this._trie.get(address.buf);\n return ethereumjs_util_1.Account.fromRlpSerializedAccount(rlp);\n };\n }\n}\nexports.ForkCache = ForkCache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst semaphore_1 = __importDefault(require(\"semaphore\"));\nconst limit_counter_1 = require(\"./limit-counter\");\n/**\n * Sleeps the specified number of milliseconds, then resolves the Promise.\n * Rejects with an `AbortError` if the provided `signal` is already aborted. If\n * the signal's `\"abort\"` event is invoked while sleeping, the the promise\n * rejects with an `AbortError`.\n *\n * @param ms the number of milliseconds to wait before resolving\n * @param abortSignal the\n * @returns a promise that resolves when `ms`milliseconds have elapsed, or\n * rejects if the `signal` is aborted.\n */\nconst sleep = (ms, signal) => {\n if (signal.aborted)\n return Promise.reject(new ethereum_utils_1.AbortError());\n return new Promise((resolve, reject) => {\n function abort() {\n clearTimeout(timer);\n signal.removeEventListener(\"abort\", abort);\n reject(new ethereum_utils_1.AbortError());\n }\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", abort);\n resolve();\n }, ms);\n signal.addEventListener(\"abort\", abort);\n });\n};\n/**\n * @param timestamp\n * @param duration\n * @returns the result of rounding `timestamp` toward zero to a multiple of\n * `duration`.\n */\nfunction timeTruncate(timestamp, duration) {\n return timestamp - (timestamp % duration);\n}\n/**\n * @param result\n * @returns true if the result is a JSON-RPC LIMIT_EXCEEDED error\n */\nfunction isExceededLimitError(result) {\n return (\"error\" in result && result.error.code === utils_1.JsonRpcErrorCode.LIMIT_EXCEEDED);\n}\n/**\n * A sliding window rate limiter.\n *\n * Rate estimation from\n * https://blog.cloudflare.com/counting-things-a-lot-of-different-things/\n *\n * Let's say we set a limit of 50 requests per minute. The counter can be\n * thought of like this:\n *\n * ```ascii\n * ╔══════════════════════════════════╗\n * ║ sampling period: 60 seconds ║\n * ╭───────╫────────────────────────┬─────────╫──────────────────────╮\n * │ ║previous minute │ current minute │\n * │ ║ 42 requests │ ║18 requests │\n * ╰───────╫────────────────────────┼─────────╫──────────────────────╯\n * ║ 45 secs │ 15 secs ║\n * ╚════════════════════════╧═════════╝\n * ```\n *\n * In this situation, we did 18 requests during the current minute, which\n * started 15 seconds ago, and 42 requests during the entire previous minute.\n * Based on this information, the rate approximation is calculated like this:\n *\n * ```javascript\n * rate = (42 * (45 / 60)) + 18\n * = (42 * 0.75) + 18\n * = 49.5 // requests\n *\n * = 59.5 // requests\n * ```\n *\n * One more request during the next second and the rate limiter will kick in.\n *\n * This algorithm assumes a constant rate of requests during the previous\n * sampling period (which can be any time span), so the result is only\n * an approximation of the actual rate, but it is quick to calculate and\n * lightweight.\n */\nclass RateLimiter {\n constructor(requestLimit, windowSizeMs, abortSignal) {\n this.sem = semaphore_1.default(1);\n this.take = () => new Promise(resolve => this.sem.take(resolve));\n this.mustBackoff = null;\n this.counter = 0;\n this.requestLimit = requestLimit;\n // the rate limiter splits the window in 2 to measure the RPS\n this.windowSizeMs = windowSizeMs / 2;\n this.limitCounter = new limit_counter_1.LimitCounter(this.windowSizeMs);\n this.abortSignal = abortSignal;\n }\n /**\n * @param now\n * @param currentWindow\n * @returns the current request rate and the allowed execution time of the\n * next request\n */\n status(now, currentWindow) {\n const limit = this.requestLimit;\n const windowSizeMs = this.windowSizeMs;\n const currWindow = currentWindow;\n const prevWindow = currWindow - windowSizeMs;\n const [currCount, prevCount] = this.limitCounter.get(currWindow, prevWindow);\n let rate;\n if (prevCount === 0) {\n rate = currCount;\n }\n else {\n // use the average for the previous window, plus everything for this\n // window\n rate =\n prevCount * ((windowSizeMs - (now - currWindow)) / windowSizeMs) +\n currCount;\n }\n // limit <= 0 means the limiter is disabled\n if (limit > 0 && rate + 1 > limit) {\n const nextCount = currCount + 1;\n const nextLimit = limit + 1;\n const next = prevCount === 0\n ? currWindow + windowSizeMs + windowSizeMs / nextLimit\n : (windowSizeMs * (prevCount + nextCount - nextLimit)) / prevCount +\n currWindow;\n return { rate, next };\n }\n return { rate, next: now };\n }\n /**\n * Executes the given fn within the confines of the configured rate limit. If\n * the function's return value is a JSON-RPC LIMIT_EXCEEDED error, it will\n * automatically retry with the given `backoff_seconds`\n * @param fn\n */\n async handle(fn) {\n // allow scheduling one fn at a time\n await this.take();\n try {\n return await this.schedule(fn);\n }\n finally {\n this.sem.leave();\n }\n }\n async schedule(fn) {\n const signal = this.abortSignal;\n while (true) {\n if (signal.aborted)\n return Promise.reject(new ethereum_utils_1.AbortError());\n if (this.mustBackoff)\n await this.mustBackoff;\n const now = Date.now();\n const currentWindow = timeTruncate(now, this.windowSizeMs);\n const { rate, next } = this.status(now, currentWindow);\n // process.stdout.write(\n // `rate: ${rate}, wait: ${next - now} \\r`\n // );\n // if this request would be over the rate limit and the amount of time\n // we'd need to back off is > 1ms we need to schedule this in the future\n if (rate + 1 > this.requestLimit && next > now) {\n await sleep(Date.now() - next, signal);\n }\n else {\n this.limitCounter.increment(currentWindow);\n const result = await fn();\n if (isExceededLimitError(result)) {\n if (\"rate\" in result.error.data) {\n const backoffSeconds = result.error.data.rate.backoff_seconds;\n // console.log(`backing off for ${backoffSeconds}`);\n // console.log(result.error.data.rate);\n // TODO: I need to make all in-flight requests that will soon return\n // a LIMIT_EXCEEDED error behave, otherwise we'll just send ALL\n // requests back to Infura simultaneously after their initial 30\n // backoff_seconds have elapsed.\n //\n // When we are *not* self-rate limited (meaning fork.rps isn't set)\n // we need to be able to go at full speed until we are, and THEN we\n // need to go at whatever infura wants.\n //\n // TODO: TODO: ask infura to add the X-Rate-Limit* headers to all\n // HTTP responses so we can poll for info to help us avoid ever\n // getting rate limited in the first place.\n // this is part of an attempt at solving the above comment\n this.requestLimit =\n result.error.data.rate.allowed_rps * (this.windowSizeMs / 1000);\n const limiter = (this.mustBackoff = sleep(backoffSeconds * 1000, signal));\n await this.mustBackoff;\n if (this.mustBackoff === limiter) {\n this.mustBackoff = null;\n }\n continue;\n }\n else {\n // we don't know how to parse this error, so we do nothing, I guess?\n }\n }\n return result;\n }\n }\n }\n}\nexports.default = RateLimiter;\n//# sourceMappingURL=rate-limiter.js.map",";(function(global) {\n\n'use strict';\n\nvar nextTick = function (fn) { setTimeout(fn, 0); }\nif (typeof process != 'undefined' && process && typeof process.nextTick == 'function') {\n\t// node.js and the like\n\tnextTick = process.nextTick;\n}\n\nfunction semaphore(capacity) {\n\tvar semaphore = {\n\t\tcapacity: capacity || 1,\n\t\tcurrent: 0,\n\t\tqueue: [],\n\t\tfirstHere: false,\n\n\t\ttake: function() {\n\t\t\tif (semaphore.firstHere === false) {\n \t\t\tsemaphore.current++;\n \t\t\tsemaphore.firstHere = true;\n \t\t\tvar isFirst = 1;\n \t\t\t} else {\n \t\t\tvar isFirst = 0;\n \t\t\t}\n\t\t\tvar item = { n: 1 };\n\n\t\t\tif (typeof arguments[0] == 'function') {\n\t\t\t\titem.task = arguments[0];\n\t\t\t} else {\n\t\t\t\titem.n = arguments[0];\n\t\t\t}\n\n\t\t\tif (arguments.length >= 2) {\n\t\t\t\tif (typeof arguments[1] == 'function') item.task = arguments[1];\n\t\t\t\telse item.n = arguments[1];\n\t\t\t}\n\n\t\t\tvar task = item.task;\n\t\t\titem.task = function() { task(semaphore.leave); };\n\n\t\t\tif (semaphore.current + item.n - isFirst > semaphore.capacity) {\n \t\t\tif (isFirst === 1) {\n \t\t\t\tsemaphore.current--;\n \t\t\t\tsemaphore.firstHere = false;\n \t\t\t}\n\t\t\t\treturn semaphore.queue.push(item);\n\t\t\t}\n\n\t\t\tsemaphore.current += item.n - isFirst;\n\t\t\titem.task(semaphore.leave);\n \t\t\tif (isFirst === 1) semaphore.firstHere = false;\n\t\t},\n\n\t\tleave: function(n) {\n\t\t\tn = n || 1;\n\n\t\t\tsemaphore.current -= n;\n\n\t\t\tif (!semaphore.queue.length) {\n\t\t\t\tif (semaphore.current < 0) {\n\t\t\t\t\tthrow new Error('leave called too many times.');\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = semaphore.queue[0];\n\n\t\t\tif (item.n + semaphore.current > semaphore.capacity) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsemaphore.queue.shift();\n\t\t\tsemaphore.current += item.n;\n\n\t\t\tnextTick(item.task);\n\t\t},\n\n\t\tavailable: function(n) {\n\t\t\tn = n || 1;\n\t\t\treturn(semaphore.current + n <= semaphore.capacity);\n\t\t}\n\t};\n\n\treturn semaphore;\n};\n\nif (typeof exports === 'object') {\n // node export\n module.exports = semaphore;\n} else if (typeof define === 'function' && define.amd) {\n // amd export\n define(function () {\n return semaphore;\n });\n} else {\n // browser global\n global.semaphore = semaphore;\n}\n}(this));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WsHandler = void 0;\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst ws_1 = __importDefault(require(\"ws\"));\nconst base_handler_1 = require(\"./base-handler\");\nconst deferred_1 = __importDefault(require(\"../deferred\"));\nclass WsHandler extends base_handler_1.BaseHandler {\n constructor(options, abortSignal) {\n super(options, abortSignal);\n this.inFlightRequests = new Map();\n const { url, origin } = options.fork;\n this.connection = new ws_1.default(url.toString(), {\n origin,\n headers: this.headers\n });\n this.open = this.connect(this.connection);\n this.connection.onclose = () => {\n // try to connect again...\n // TODO: backoff and eventually fail\n this.open = this.connect(this.connection);\n };\n this.abortSignal.addEventListener(\"abort\", () => {\n this.connection.onclose = null;\n this.connection.close(1000);\n });\n this.connection.onmessage = this.onMessage.bind(this);\n }\n async request(method, params) {\n await this.open;\n if (this.abortSignal.aborted)\n return Promise.reject(new ethereum_utils_1.AbortError());\n const data = JSON.stringify({ method, params });\n if (this.requestCache.has(data)) {\n //console.log(\"cache hit: \" + data);\n return this.requestCache.get(data);\n }\n const send = () => {\n if (this.abortSignal.aborted)\n return Promise.reject(new ethereum_utils_1.AbortError());\n //console.log(\"sending request: \" + data);\n const messageId = this.id++;\n const deferred = deferred_1.default();\n // TODO: timeout an in-flight request after some amount of time\n this.inFlightRequests.set(messageId, deferred);\n this.connection.send(base_handler_1.BaseHandler.JSONRPC_PREFIX + messageId + `,${data.slice(1)}`);\n return deferred.promise.finally(() => this.requestCache.delete(data));\n };\n const promise = this.limiter.handle(send).then(result => {\n if (this.abortSignal.aborted)\n return Promise.reject(new ethereum_utils_1.AbortError());\n if (\"result\" in result) {\n return result.result;\n }\n else if (\"error\" in result) {\n throw result.error;\n }\n });\n this.requestCache.set(data, promise);\n return promise;\n }\n onMessage(event) {\n if (event.type !== \"message\")\n return;\n // TODO: handle invalid JSON (throws on parse)?\n const result = JSON.parse(event.data);\n const id = result.id;\n const prom = this.inFlightRequests.get(id);\n if (prom) {\n this.inFlightRequests.delete(id);\n prom.resolve(result);\n }\n }\n connect(connection) {\n let open = new Promise((resolve, reject) => {\n connection.onopen = resolve;\n connection.onerror = reject;\n });\n open.then(() => {\n connection.onopen = null;\n connection.onerror = null;\n }, err => {\n console.log(err);\n });\n return open;\n }\n close() {\n this.connection.close();\n return Promise.resolve();\n }\n}\nexports.WsHandler = WsHandler;\n//# sourceMappingURL=ws-handler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilecoinOptionsConfig = exports.FilecoinDefaults = void 0;\nconst chain_options_1 = require(\"./chain-options\");\nconst database_options_1 = require(\"./database-options\");\nconst logging_options_1 = require(\"./logging-options\");\nconst miner_options_1 = require(\"./miner-options\");\nconst wallet_options_1 = require(\"./wallet-options\");\nconst options_1 = require(\"@ganache/options\");\nexports.FilecoinDefaults = {\n chain: chain_options_1.ChainOptions,\n database: database_options_1.DatabaseOptions,\n logging: logging_options_1.LoggingOptions,\n miner: miner_options_1.MinerOptions,\n wallet: wallet_options_1.WalletOptions\n};\nexports.FilecoinOptionsConfig = new options_1.OptionsConfig(exports.FilecoinDefaults);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nconst seedrandom_1 = __importDefault(require(\"seedrandom\"));\nconst options_1 = require(\"@ganache/options\");\nconst unseededRng = seedrandom_1.default();\nconst randomAlphaNumericString = (() => {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const alphabetLength = alphabet.length;\n return (length, rng) => {\n let text = \"\";\n for (let i = 0; i < length; i++) {\n text += alphabet[(rng() * alphabetLength) | 0];\n }\n return text;\n };\n})();\nexports.WalletOptions = {\n totalAccounts: {\n normalize: helpers_1.normalize,\n cliDescription: \"Number of accounts to generate at startup.\",\n default: () => 10,\n cliAliases: [\"a\"],\n cliType: \"number\"\n },\n deterministic: {\n normalize: helpers_1.normalize,\n cliDescription: \"Use pre-defined, deterministic seed.\",\n default: () => false,\n cliAliases: [\"d\"],\n cliType: \"boolean\",\n conflicts: [\"seed\"]\n },\n seed: {\n normalize: helpers_1.normalize,\n cliDescription: \"Seed to use to generate a mnemonic.\",\n // The order of the options matter here! `wallet.deterministic`\n // needs to be prior to `wallet.seed` for `config.deterministic`\n // below to be set correctly\n default: config => config.deterministic === true\n ? options_1.DeterministicSeedPhrase\n : randomAlphaNumericString(10, unseededRng),\n cliAliases: [\"s\"],\n cliType: \"string\",\n conflicts: [\"deterministic\"]\n },\n defaultBalance: {\n normalize: helpers_1.normalize,\n cliDescription: \"The default account balance, specified in FIL.\",\n default: () => 100,\n cliAliases: [\"b\"],\n cliType: \"number\"\n }\n};\n//# sourceMappingURL=wallet-options.js.map","// A port of an algorithm by Johannes Baagøe , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar requirePromise = require('./requirePromise');\n\nrequirePromise();\n\nvar PromiseResolve = require('es-abstract/2020/PromiseResolve');\nvar Type = require('es-abstract/2020/Type');\nvar iterate = require('iterate-value');\nvar map = require('array.prototype.map');\nvar GetIntrinsic = require('get-intrinsic');\nvar callBind = require('call-bind');\n\nvar all = callBind(GetIntrinsic('%Promise.all%'));\nvar reject = callBind(GetIntrinsic('%Promise.reject%'));\n\nmodule.exports = function allSettled(iterable) {\n\tvar C = this;\n\tif (Type(C) !== 'Object') {\n\t\tthrow new TypeError('`this` value must be an object');\n\t}\n\tvar values = iterate(iterable);\n\treturn all(C, map(values, function (item) {\n\t\tvar onFulfill = function (value) {\n\t\t\treturn { status: 'fulfilled', value: value };\n\t\t};\n\t\tvar onReject = function (reason) {\n\t\t\treturn { status: 'rejected', reason: reason };\n\t\t};\n\t\tvar itemPromise = PromiseResolve(C, item);\n\t\ttry {\n\t\t\treturn itemPromise.then(onFulfill, onReject);\n\t\t} catch (e) {\n\t\t\treturn reject(C, e);\n\t\t}\n\t}));\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar ArraySpeciesCreate = require('es-abstract/2020/ArraySpeciesCreate');\nvar Call = require('es-abstract/2020/Call');\nvar CreateDataPropertyOrThrow = require('es-abstract/2020/CreateDataPropertyOrThrow');\nvar Get = require('es-abstract/2020/Get');\nvar HasProperty = require('es-abstract/2020/HasProperty');\nvar IsCallable = require('es-abstract/2020/IsCallable');\nvar ToUint32 = require('es-abstract/2020/ToUint32');\nvar ToObject = require('es-abstract/2020/ToObject');\nvar ToString = require('es-abstract/2020/ToString');\nvar callBound = require('call-bind/callBound');\nvar isString = require('is-string');\n\n// Check failure of by-index access of string characters (IE < 9) and failure of `0 in boxedString` (Rhino)\nvar boxedString = Object('a');\nvar splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\nvar strSplit = callBound('String.prototype.split');\n\nmodule.exports = function map(callbackfn) {\n\tvar O = ToObject(this);\n\tvar self = splitString && isString(O) ? strSplit(O, '') : O;\n\tvar len = ToUint32(self.length);\n\n\t// If no callback function or if callback is not a callable function\n\tif (!IsCallable(callbackfn)) {\n\t\tthrow new TypeError('Array.prototype.map callback must be a function');\n\t}\n\n\tvar T;\n\tif (arguments.length > 1) {\n\t\tT = arguments[1];\n\t}\n\n\tvar A = ArraySpeciesCreate(O, len);\n\tvar k = 0;\n\twhile (k < len) {\n\t\tvar Pk = ToString(k);\n\t\tvar kPresent = HasProperty(O, Pk);\n\t\tif (kPresent) {\n\t\t\tvar kValue = Get(O, Pk);\n\t\t\tvar mappedValue = Call(callbackfn, T, [kValue, k, O]);\n\t\t\tCreateDataPropertyOrThrow(A, Pk, mappedValue);\n\t\t}\n\t\tk += 1;\n\t}\n\n\treturn A;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar inspect = require('object-inspect');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n/**\n * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p\n * 1. Assert: Type(O) is Object.\n * 2. Assert: IsPropertyKey(P) is true.\n * 3. Return O.[[Get]](P, O).\n */\n\nmodule.exports = function Get(O, P) {\n\t// 7.3.1.1\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\t// 7.3.1.2\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));\n\t}\n\t// 7.3.1.3\n\treturn O[P];\n};\n","'use strict';\n\nvar GetIntrinsic = require('../GetIntrinsic.js');\n\nvar $construct = GetIntrinsic('%Reflect.construct%', true);\n\nvar DefinePropertyOrThrow = require('./DefinePropertyOrThrow');\ntry {\n\tDefinePropertyOrThrow({}, '', { '[[Get]]': function () {} });\n} catch (e) {\n\t// Accessor properties aren't supported\n\tDefinePropertyOrThrow = null;\n}\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isconstructor\n\nif (DefinePropertyOrThrow && $construct) {\n\tvar isConstructorMarker = {};\n\tvar badArrayLike = {};\n\tDefinePropertyOrThrow(badArrayLike, 'length', {\n\t\t'[[Get]]': function () {\n\t\t\tthrow isConstructorMarker;\n\t\t},\n\t\t'[[Enumerable]]': true\n\t});\n\n\tmodule.exports = function IsConstructor(argument) {\n\t\ttry {\n\t\t\t// `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`:\n\t\t\t$construct(argument, badArrayLike);\n\t\t} catch (err) {\n\t\t\treturn err === isConstructorMarker;\n\t\t}\n\t};\n} else {\n\tmodule.exports = function IsConstructor(argument) {\n\t\t// unfortunately there's no way to truly check this without try/catch `new argument` in old environments\n\t\treturn typeof argument === 'function' && !!argument.prototype;\n\t};\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\n// eslint-disable-next-line max-params\nmodule.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {\n\tif (!$defineProperty) {\n\t\tif (!IsDataDescriptor(desc)) {\n\t\t\t// ES3 does not support getters/setters\n\t\t\treturn false;\n\t\t}\n\t\tif (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// fallback for ES3\n\t\tif (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {\n\t\t\t// a non-enumerable existing property\n\t\t\treturn false;\n\t\t}\n\n\t\t// property does not exist at all, or exists but is enumerable\n\t\tvar V = desc['[[Value]]'];\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tO[P] = V; // will use [[Define]]\n\t\treturn SameValue(O[P], V);\n\t}\n\t$defineProperty(O, P, FromPropertyDescriptor(desc));\n\treturn true;\n};\n","'use strict';\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor\n\nmodule.exports = function FromPropertyDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn Desc;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tvar obj = {};\n\tif ('[[Value]]' in Desc) {\n\t\tobj.value = Desc['[[Value]]'];\n\t}\n\tif ('[[Writable]]' in Desc) {\n\t\tobj.writable = Desc['[[Writable]]'];\n\t}\n\tif ('[[Get]]' in Desc) {\n\t\tobj.get = Desc['[[Get]]'];\n\t}\n\tif ('[[Set]]' in Desc) {\n\t\tobj.set = Desc['[[Set]]'];\n\t}\n\tif ('[[Enumerable]]' in Desc) {\n\t\tobj.enumerable = Desc['[[Enumerable]]'];\n\t}\n\tif ('[[Configurable]]' in Desc) {\n\t\tobj.configurable = Desc['[[Configurable]]'];\n\t}\n\treturn obj;\n};\n","'use strict';\n\nvar has = require('has');\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor\n\nmodule.exports = function IsDataDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar $isNaN = require('../helpers/isNaN');\n\n// http://262.ecma-international.org/5.1/#sec-9.12\n\nmodule.exports = function SameValue(x, y) {\n\tif (x === y) { // 0 === -0, but they are not identical.\n\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\treturn true;\n\t}\n\treturn $isNaN(x) && $isNaN(y);\n};\n","'use strict';\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar has = require('has');\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Type = require('./Type');\nvar ToBoolean = require('./ToBoolean');\nvar IsCallable = require('./IsCallable');\n\n// https://262.ecma-international.org/5.1/#sec-8.10.5\n\nmodule.exports = function ToPropertyDescriptor(Obj) {\n\tif (Type(Obj) !== 'Object') {\n\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t}\n\n\tvar desc = {};\n\tif (has(Obj, 'enumerable')) {\n\t\tdesc['[[Enumerable]]'] = ToBoolean(Obj.enumerable);\n\t}\n\tif (has(Obj, 'configurable')) {\n\t\tdesc['[[Configurable]]'] = ToBoolean(Obj.configurable);\n\t}\n\tif (has(Obj, 'value')) {\n\t\tdesc['[[Value]]'] = Obj.value;\n\t}\n\tif (has(Obj, 'writable')) {\n\t\tdesc['[[Writable]]'] = ToBoolean(Obj.writable);\n\t}\n\tif (has(Obj, 'get')) {\n\t\tvar getter = Obj.get;\n\t\tif (typeof getter !== 'undefined' && !IsCallable(getter)) {\n\t\t\tthrow new $TypeError('getter must be a function');\n\t\t}\n\t\tdesc['[[Get]]'] = getter;\n\t}\n\tif (has(Obj, 'set')) {\n\t\tvar setter = Obj.set;\n\t\tif (typeof setter !== 'undefined' && !IsCallable(setter)) {\n\t\t\tthrow new $TypeError('setter must be a function');\n\t\t}\n\t\tdesc['[[Set]]'] = setter;\n\t}\n\n\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t}\n\treturn desc;\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.2\n\nmodule.exports = function ToBoolean(value) { return !!value; };\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar arrayMethodBoxesProperly = require('es-array-method-boxes-properly');\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tvar method = Array.prototype.map;\n\treturn arrayMethodBoxesProperly(method) ? method : implementation;\n};\n","'use strict';\n\nvar requirePromise = require('./requirePromise');\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\trequirePromise();\n\treturn typeof Promise.allSettled === 'function' ? Promise.allSettled : implementation;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"@ganache/utils\");\nconst flavors_1 = require(\"@ganache/flavors\");\nconst flavors_2 = require(\"@ganache/flavors\");\nconst initialize = (options = {\n flavor: flavors_1.DefaultFlavor,\n chain: { asyncRequestProcessing: true }\n}) => {\n const flavor = (options.flavor || flavors_1.DefaultFlavor);\n // Set up our request coordinator to either use FIFO or or async request\n // processing. The RequestCoordinator _can_ be used to coordinate the number\n // of requests being processed, but we don't use it for that (yet), instead\n // of \"all\" (0) or just 1 as we are doing here:\n const asyncRequestProcessing = \"chain\" in options\n ? options[\"chain\"].asyncRequestProcessing\n : options[\"asyncRequestProcessing\"];\n const requestCoordinator = new utils_1.RequestCoordinator(asyncRequestProcessing ? 0 : 1);\n // The Executor is responsible for actually executing the method on the\n // chain/API. It performs some safety checks to ensure \"safe\" method\n // execution before passing it to a RequestCoordinator.\n const executor = new utils_1.Executor(requestCoordinator);\n const connector = flavors_2.GetConnector(flavor, options, executor);\n // Purposely not awaiting on this to prevent a breaking change\n // to the `Ganache.provider()` method\n // TODO: remove the `connector.connect ? ` check and just use\n // `connector.connect()` after publishing the `@ganache/filecoin` with the\n // connector.connect interface\n const connectPromise = connector.connect\n ? connector.connect()\n : connector.initialize();\n // The request coordinator is initialized in a \"paused\" state; when the\n // provider is ready we unpause.. This lets us accept queue requests before\n // we've even fully initialized.\n connectPromise.then(requestCoordinator.resume);\n return connector;\n};\n/**\n * Loads the connector specified by the given `flavor`\n */\nexports.default = {\n initialize\n};\n//# sourceMappingURL=connector-loader.js.map","export function toBigIntBE(buf: Buffer) {\n // TODO(perf): this is slow. Can we make it fast in browserland?\n return BigInt(`0x${buf.toString(\"hex\")}`);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uintToBuffer = void 0;\nconst MAX_UINT32 = 0xffffffff;\n/**\n * This is just Node's `Buffer.allocUnsafe`. I'm documenting it extra here to\n * draw attention to it. It is much faster the `Buffer.alloc(size)` because it\n * doesn't initialize its memory first. It's safe for us to use below because we\n * guarantee that we will fill every octet ourselves.\n *\n * Allocates a new buffer of {size} octets, leaving memory not initialized, so\n * the contents of the newly created Buffer are unknown and may contain\n * sensitive data.\n *\n * @param {number} size count of octets to allocate\n */\nconst allocUnsafe = Buffer.allocUnsafe;\n/**\n * Converts positive whole numbers that are 32 bits of fewer to a Buffer. Any\n * more bits and who knows what will happen!?!1?!\n *\n * @param num A positive whole number less than 33 bits wide, i.e. a uint32.\n * @returns an optimally sized buffer holding `num` in big-endian order (LSB is\n * the _last_ value in the Buffer)\n */\nfunction uint32ToBuf(num) {\n let buf;\n /** `lsb` holds the Least Significant *byte* of `num`. It *technically* holds\n * all of `num`'s bytes but because of how UInt8Arrays (and thus Buffers)\n * work, only the least significant byte of each value gets used. */\n const lsb = num;\n // shift the first 8 least signficant bits off current num, if it's non-zero\n // our value contains at least 2 bytes!\n if ((num >>>= 8)) {\n /** `second` now holds the second most least significant byte in its\n * \"first\" (right most) 8 bits */\n const second = num;\n // shift the next 8 least signficant bits off current num, if it's non-zero\n // our value contains at least 3 bytes!\n if ((num >>>= 8)) {\n /** `third` now holds the third most least significant byte in its\n * \"first\" (right most) 8 bits */\n const third = num;\n if ((num >>>= 8)) {\n // since we have all 4 bytes, create a 4 byte Buffer and fill it with\n // our values!\n buf = allocUnsafe(4);\n // `num` here is just what is left after shifting off the 3 other bytes\n // like we did above\n buf[0] = num;\n buf[1] = third;\n buf[2] = second;\n buf[3] = lsb;\n }\n else {\n // since we only have 3 bytes, create a 3 byte Buffer and fill it with\n // our values!\n buf = allocUnsafe(3);\n buf[0] = third;\n buf[1] = second;\n buf[2] = lsb;\n }\n }\n else {\n // since we only have 2 bytes, create a 2 byte Buffer and fill it with\n // our values!\n buf = allocUnsafe(2);\n buf[0] = second;\n buf[1] = lsb;\n }\n }\n else {\n // We only have 1 byte, create a 1 byte Buffer and fill it with our only\n // value, lsb!\n buf = allocUnsafe(1);\n buf[0] = lsb;\n }\n // finally, return our optimally-sized Buffer!\n return buf;\n}\n/**\n * Converts positive whole numbers less than or equal to\n * `Number.MAX_SAFE_INTEGER` to a Buffer. If your value is less than 2**32 you\n * should use `uint32ToBuf` instead.\n *\n * @param num A positive whole number <= `Number.MAX_SAFE_INTEGER`\n * @returns an optimally sized buffer holding `num` in big-endian order (LSB is\n * the _last_ value in the Buffer)\n */\nfunction uintWideToBuf(num) {\n // This function is similar to `uint32ToBuf`, but splits the number into its\n // 32 lowest bits and its 32 highest bits. We have to do this because numeric\n // Bitwise operations can only operate on 32 bit-wide values.\n // There are some differences, but if you first grasp `uint32ToBuf`, you can\n // handle this just fine.\n let buf;\n /** If we are in this function we are probably > 32 bits wide, so we need to\n * first convert this value to BigInt in order to shift off those high bits.\n * Now that I'm documenting this, we could probably just subtract `2**32` from\n * `num` to avoid the conversion overhead (BigInts are slower than numbers) */\n let hi = Number(BigInt(num) >> 32n);\n const hiLsb = hi;\n let offset = 0;\n // the high bits determine the size of the Buffer, so we compute the high bits\n // first\n if ((hi >>>= 8)) {\n const six = hi;\n if ((hi >>>= 8)) {\n const five = hi;\n if ((hi >>>= 8)) {\n buf = allocUnsafe(8);\n buf[0] = hi; // msb\n buf[1] = five;\n buf[2] = six;\n buf[3] = hiLsb;\n offset = 7;\n }\n else {\n buf = allocUnsafe(7);\n buf[0] = five; // msb\n buf[1] = six;\n buf[2] = hiLsb;\n offset = 6;\n }\n }\n else {\n buf = allocUnsafe(6);\n buf[0] = six; // msb\n buf[1] = hiLsb;\n offset = 5;\n }\n }\n else {\n buf = allocUnsafe(5);\n buf[0] = hiLsb; // msb\n offset = 4;\n }\n // set the low bytes:\n let lo = num & MAX_UINT32;\n const lsb = lo;\n if ((lo >>>= 8)) {\n const two = lo;\n if ((lo >>>= 8)) {\n const one = lo;\n buf[offset - 3] = lo >>>= 8;\n buf[offset - 2] = one;\n buf[offset - 1] = two;\n buf[offset] = lsb;\n }\n else {\n buf[offset - 3] = 0;\n buf[offset - 2] = 0;\n buf[offset - 1] = two;\n buf[offset] = lsb;\n }\n }\n else {\n buf[offset - 3] = 0;\n buf[offset - 2] = 0;\n buf[offset - 1] = 0;\n buf[offset] = lsb;\n }\n return buf;\n}\n/**\n * Converts a JavaScript number, treated as a Whole Number (0, 1, 2, 3, 4, ...)\n * less than 64 bits wide, to a Buffer.\n *\n * Numbers that are negative, fractional, or greater than 64 bits wide will\n * return very unexpected results. Numbers that are greater than\n * `Number.MAX_SAFE_INTEGER` will return unexpected results.\n *\n * @param num A positive whole number <= `Number.MAX_SAFE_INTEGER`\n */\nfunction uintToBuffer(num) {\n return num > MAX_UINT32 ? uintWideToBuf(num) : uint32ToBuf(num);\n}\nexports.uintToBuffer = uintToBuffer;\n//# sourceMappingURL=uint-to-buffer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasOwn = void 0;\n/**\n * /**\n * Determines whether an object has a property with the specified name.\n *\n * Safe for use on user-supplied data.\n *\n * @param obj The object that will be checked.\n * @param v A property name.\n * @returns `true` if the object has a property with the specified name,\n * otherwise false.\n */\nexports.hasOwn = {}.hasOwnProperty.call.bind({}.hasOwnProperty);\n//# sourceMappingURL=has-own.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quantity = void 0;\nconst utils_1 = require(\"../../utils\");\nconst json_rpc_base_types_1 = require(\"./json-rpc-base-types\");\n// TODO(perf): rewrite this stuff since it isn't really caching anything\nclass Quantity extends json_rpc_base_types_1.BaseJsonRpcType {\n constructor() {\n super(...arguments);\n this._nullable = false;\n }\n static from(value, nullable = false) {\n if (value instanceof Quantity)\n return value;\n const q = new Quantity(value);\n q._nullable = nullable;\n return q;\n }\n toString() {\n // TODO(perf): memoize this stuff\n if (Buffer.isBuffer(this.value)) {\n let val = this.value.toString(\"hex\").replace(/^(?:0+(.+?))?$/, \"$1\");\n if (val === \"\") {\n if (this._nullable) {\n return null;\n }\n // RPC Quantities must represent `0` as `0x0`\n return \"0x0\";\n }\n return `0x${val}`;\n }\n else if (this.value == null) {\n return \"0x\";\n }\n else {\n return super.toString();\n }\n }\n toBuffer(byteLength = null) {\n // 0x0, 0x00, 0x000, etc should return BUFFER_EMPTY\n if (Buffer.isBuffer(this.value)) {\n return this.value;\n }\n else if (typeof this.value === \"string\" && byteLength == null) {\n let val = this.value.slice(2).replace(/^(?:0+(.+?))?$/, \"$1\");\n if (val === \"\" || val === \"0\") {\n return utils_1.BUFFER_EMPTY;\n }\n }\n else if (this.value === 0 || this.value === 0n) {\n return utils_1.BUFFER_EMPTY;\n }\n return super.toBuffer();\n }\n toBigInt() {\n const value = this.value;\n // TODO(perf): memoize this stuff\n if (Buffer.isBuffer(value)) {\n const bigInt = utils_1.bufferToBigInt(value);\n return bigInt == null ? (this._nullable ? null : 0n) : bigInt;\n }\n else {\n return value == null ? (this._nullable ? null : 0n) : BigInt(value);\n }\n }\n toNumber() {\n // TODO(perf): memoize this stuff\n return typeof this.value === \"number\"\n ? this.value\n : Number(this.toBigInt());\n }\n valueOf() {\n const value = this.value;\n if (value === null) {\n return value;\n }\n else if (value === undefined) {\n return value;\n }\n else {\n return this.toBigInt();\n }\n }\n}\nexports.Quantity = Quantity;\nexports.default = Quantity;\n//# sourceMappingURL=json-rpc-quantity.js.map","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpcErrorCode = exports.makeError = exports.makeResponse = exports.makeRequest = void 0;\nconst jsonrpc = \"2.0\";\nconst makeRequest = (json) => {\n return {\n id: json.id,\n jsonrpc,\n method: json.method,\n params: json.params\n };\n};\nexports.makeRequest = makeRequest;\nconst makeResponse = (id, result) => {\n return {\n id,\n jsonrpc,\n result\n };\n};\nexports.makeResponse = makeResponse;\nconst makeError = (id, error, result) => {\n // Error objects are weird, `message` isn't included in the property names,\n // so it is pulled out separately.\n const details = { message: error.message };\n Object.getOwnPropertyNames(error).forEach(name => {\n if (typeof name === \"string\") {\n details[name] = error[name];\n }\n });\n if (typeof details.code !== \"number\") {\n details.code = -32700; // JSON-RPC Parse error\n }\n if (result !== undefined) {\n return {\n id,\n jsonrpc,\n error: details,\n result\n };\n }\n else {\n return {\n id,\n jsonrpc,\n error: details\n };\n }\n};\nexports.makeError = makeError;\nvar JsonRpcErrorCode;\n(function (JsonRpcErrorCode) {\n /**\n * Invalid JSON was received by the server.\n * An error occurred on the server while parsing the JSON text.\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"PARSE_ERROR\"] = -32700] = \"PARSE_ERROR\";\n /**\n * The JSON sent is not a valid Request object.\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"INVALID_REQUEST\"] = -32600] = \"INVALID_REQUEST\";\n /**\n * The method does not exist / is not available.\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"METHOD_NOT_FOUND\"] = -32601] = \"METHOD_NOT_FOUND\";\n /**\n * Invalid method parameter(s).\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"INVALID_PARAMS\"] = -32602] = \"INVALID_PARAMS\";\n /**\n * Internal JSON-RPC error.\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"INTERNAL_ERROR\"] = -32603] = \"INTERNAL_ERROR\";\n /**\n * Missing or invalid parameters\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"INVALID_INPUT\"] = -32000] = \"INVALID_INPUT\";\n /**\n * Transaction creation failed\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"TRANSACTION_REJECTED\"] = -32003] = \"TRANSACTION_REJECTED\";\n /**\n * \tMethod is not implemented\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"METHOD_NOT_SUPPORTED\"] = -32004] = \"METHOD_NOT_SUPPORTED\";\n /**\n * \tRequest exceeds defined limit\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"LIMIT_EXCEEDED\"] = -32005] = \"LIMIT_EXCEEDED\";\n /**\n * Version of JSON-RPC protocol is not supported\n */\n JsonRpcErrorCode[JsonRpcErrorCode[\"JSON_RPC_VERSION_NOT_SUPPORTED\"] = -32006] = \"JSON_RPC_VERSION_NOT_SUPPORTED\";\n})(JsonRpcErrorCode = exports.JsonRpcErrorCode || (exports.JsonRpcErrorCode = {}));\n//# sourceMappingURL=jsonrpc.js.map","'use strict';\n\nconst anyMap = new WeakMap();\nconst eventsMap = new WeakMap();\nconst producersMap = new WeakMap();\nconst anyProducer = Symbol('anyProducer');\nconst resolvedPromise = Promise.resolve();\n\nconst listenerAdded = Symbol('listenerAdded');\nconst listenerRemoved = Symbol('listenerRemoved');\n\nfunction assertEventName(eventName) {\n\tif (typeof eventName !== 'string' && typeof eventName !== 'symbol') {\n\t\tthrow new TypeError('eventName must be a string or a symbol');\n\t}\n}\n\nfunction assertListener(listener) {\n\tif (typeof listener !== 'function') {\n\t\tthrow new TypeError('listener must be a function');\n\t}\n}\n\nfunction getListeners(instance, eventName) {\n\tconst events = eventsMap.get(instance);\n\tif (!events.has(eventName)) {\n\t\tevents.set(eventName, new Set());\n\t}\n\n\treturn events.get(eventName);\n}\n\nfunction getEventProducers(instance, eventName) {\n\tconst key = typeof eventName === 'string' || typeof eventName === 'symbol' ? eventName : anyProducer;\n\tconst producers = producersMap.get(instance);\n\tif (!producers.has(key)) {\n\t\tproducers.set(key, new Set());\n\t}\n\n\treturn producers.get(key);\n}\n\nfunction enqueueProducers(instance, eventName, eventData) {\n\tconst producers = producersMap.get(instance);\n\tif (producers.has(eventName)) {\n\t\tfor (const producer of producers.get(eventName)) {\n\t\t\tproducer.enqueue(eventData);\n\t\t}\n\t}\n\n\tif (producers.has(anyProducer)) {\n\t\tconst item = Promise.all([eventName, eventData]);\n\t\tfor (const producer of producers.get(anyProducer)) {\n\t\t\tproducer.enqueue(item);\n\t\t}\n\t}\n}\n\nfunction iterator(instance, eventNames) {\n\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\tlet isFinished = false;\n\tlet flush = () => {};\n\tlet queue = [];\n\n\tconst producer = {\n\t\tenqueue(item) {\n\t\t\tqueue.push(item);\n\t\t\tflush();\n\t\t},\n\t\tfinish() {\n\t\t\tisFinished = true;\n\t\t\tflush();\n\t\t}\n\t};\n\n\tfor (const eventName of eventNames) {\n\t\tgetEventProducers(instance, eventName).add(producer);\n\t}\n\n\treturn {\n\t\tasync next() {\n\t\t\tif (!queue) {\n\t\t\t\treturn {done: true};\n\t\t\t}\n\n\t\t\tif (queue.length === 0) {\n\t\t\t\tif (isFinished) {\n\t\t\t\t\tqueue = undefined;\n\t\t\t\t\treturn this.next();\n\t\t\t\t}\n\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tflush = resolve;\n\t\t\t\t});\n\n\t\t\t\treturn this.next();\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: await queue.shift()\n\t\t\t};\n\t\t},\n\n\t\tasync return(value) {\n\t\t\tqueue = undefined;\n\n\t\t\tfor (const eventName of eventNames) {\n\t\t\t\tgetEventProducers(instance, eventName).delete(producer);\n\t\t\t}\n\n\t\t\tflush();\n\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\t{done: true, value: await value} :\n\t\t\t\t{done: true};\n\t\t},\n\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t}\n\t};\n}\n\nfunction defaultMethodNamesOrAssert(methodNames) {\n\tif (methodNames === undefined) {\n\t\treturn allEmitteryMethods;\n\t}\n\n\tif (!Array.isArray(methodNames)) {\n\t\tthrow new TypeError('`methodNames` must be an array of strings');\n\t}\n\n\tfor (const methodName of methodNames) {\n\t\tif (!allEmitteryMethods.includes(methodName)) {\n\t\t\tif (typeof methodName !== 'string') {\n\t\t\t\tthrow new TypeError('`methodNames` element must be a string');\n\t\t\t}\n\n\t\t\tthrow new Error(`${methodName} is not Emittery method`);\n\t\t}\n\t}\n\n\treturn methodNames;\n}\n\nconst isListenerSymbol = symbol => symbol === listenerAdded || symbol === listenerRemoved;\n\nclass Emittery {\n\tstatic mixin(emitteryPropertyName, methodNames) {\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\t\treturn target => {\n\t\t\tif (typeof target !== 'function') {\n\t\t\t\tthrow new TypeError('`target` must be function');\n\t\t\t}\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tif (target.prototype[methodName] !== undefined) {\n\t\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction getEmitteryProperty() {\n\t\t\t\tObject.defineProperty(this, emitteryPropertyName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: new Emittery()\n\t\t\t\t});\n\t\t\t\treturn this[emitteryPropertyName];\n\t\t\t}\n\n\t\t\tObject.defineProperty(target.prototype, emitteryPropertyName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: getEmitteryProperty\n\t\t\t});\n\n\t\t\tconst emitteryMethodCaller = methodName => function (...args) {\n\t\t\t\treturn this[emitteryPropertyName][methodName](...args);\n\t\t\t};\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tObject.defineProperty(target.prototype, methodName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: emitteryMethodCaller(methodName)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn target;\n\t\t};\n\t}\n\n\tconstructor() {\n\t\tanyMap.set(this, new Set());\n\t\teventsMap.set(this, new Map());\n\t\tproducersMap.set(this, new Map());\n\t}\n\n\ton(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).add(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerAdded, {eventName, listener});\n\t\t\t}\n\t\t}\n\n\t\treturn this.off.bind(this, eventNames, listener);\n\t}\n\n\toff(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).delete(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerRemoved, {eventName, listener});\n\t\t\t}\n\t\t}\n\t}\n\n\tonce(eventNames) {\n\t\treturn new Promise(resolve => {\n\t\t\tconst off = this.on(eventNames, data => {\n\t\t\t\toff();\n\t\t\t\tresolve(data);\n\t\t\t});\n\t\t});\n\t}\n\n\tevents(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t}\n\n\t\treturn iterator(this, eventNames);\n\t}\n\n\tasync emit(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tenqueueProducers(this, eventName, eventData);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = isListenerSymbol(eventName) ? [] : [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\tawait Promise.all([\n\t\t\t...staticListeners.map(async listener => {\n\t\t\t\tif (listeners.has(listener)) {\n\t\t\t\t\treturn listener(eventData);\n\t\t\t\t}\n\t\t\t}),\n\t\t\t...staticAnyListeners.map(async listener => {\n\t\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\t\treturn listener(eventName, eventData);\n\t\t\t\t}\n\t\t\t})\n\t\t]);\n\t}\n\n\tasync emitSerial(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (const listener of staticListeners) {\n\t\t\tif (listeners.has(listener)) {\n\t\t\t\tawait listener(eventData);\n\t\t\t}\n\t\t}\n\n\t\tfor (const listener of staticAnyListeners) {\n\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\tawait listener(eventName, eventData);\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\t}\n\n\tonAny(listener) {\n\t\tassertListener(listener);\n\t\tanyMap.get(this).add(listener);\n\t\tthis.emit(listenerAdded, {listener});\n\t\treturn this.offAny.bind(this, listener);\n\t}\n\n\tanyEvent() {\n\t\treturn iterator(this);\n\t}\n\n\toffAny(listener) {\n\t\tassertListener(listener);\n\t\tthis.emit(listenerRemoved, {listener});\n\t\tanyMap.get(this).delete(listener);\n\t}\n\n\tclearListeners(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string' || typeof eventName === 'symbol') {\n\t\t\t\tgetListeners(this, eventName).clear();\n\n\t\t\t\tconst producers = getEventProducers(this, eventName);\n\n\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\tproducer.finish();\n\t\t\t\t}\n\n\t\t\t\tproducers.clear();\n\t\t\t} else {\n\t\t\t\tanyMap.get(this).clear();\n\n\t\t\t\tfor (const listeners of eventsMap.get(this).values()) {\n\t\t\t\t\tlisteners.clear();\n\t\t\t\t}\n\n\t\t\t\tfor (const producers of producersMap.get(this).values()) {\n\t\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\t\tproducer.finish();\n\t\t\t\t\t}\n\n\t\t\t\t\tproducers.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlistenerCount(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tlet count = 0;\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string') {\n\t\t\t\tcount += anyMap.get(this).size + getListeners(this, eventName).size +\n\t\t\t\t\tgetEventProducers(this, eventName).size + getEventProducers(this).size;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (typeof eventName !== 'undefined') {\n\t\t\t\tassertEventName(eventName);\n\t\t\t}\n\n\t\t\tcount += anyMap.get(this).size;\n\n\t\t\tfor (const value of eventsMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\n\t\t\tfor (const value of producersMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tbindMethods(target, methodNames) {\n\t\tif (typeof target !== 'object' || target === null) {\n\t\t\tthrow new TypeError('`target` must be an object');\n\t\t}\n\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\n\t\tfor (const methodName of methodNames) {\n\t\t\tif (target[methodName] !== undefined) {\n\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t}\n\n\t\t\tObject.defineProperty(target, methodName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: this[methodName].bind(this)\n\t\t\t});\n\t\t}\n\t}\n}\n\nconst allEmitteryMethods = Object.getOwnPropertyNames(Emittery.prototype).filter(v => v !== 'constructor');\n\n// Subclass used to encourage TS users to type their events.\nEmittery.Typed = class extends Emittery {};\nObject.defineProperty(Emittery.Typed, 'Typed', {\n\tenumerable: false,\n\tvalue: undefined\n});\n\nObject.defineProperty(Emittery, 'listenerAdded', {\n\tvalue: listenerAdded,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\nObject.defineProperty(Emittery, 'listenerRemoved', {\n\tvalue: listenerRemoved,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\n\nmodule.exports = Emittery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodedError = void 0;\nclass CodedError extends Error {\n constructor(message, code) {\n super(message);\n Error.captureStackTrace(this, this.constructor);\n this.code = code;\n }\n static from(error, code) {\n const codedError = new CodedError(error.message, code);\n codedError.stack = error.stack;\n return codedError;\n }\n}\nexports.CodedError = CodedError;\n//# sourceMappingURL=coded-error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VM_EXCEPTIONS = exports.VM_EXCEPTION = exports.GAS_LIMIT = exports.INTRINSIC_GAS_TOO_LOW = exports.UNDERPRICED = exports.NONCE_TOO_LOW = exports.INVALID_SENDER = void 0;\n/**\n * Returned if the transaction contains an invalid signature.\n */\nexports.INVALID_SENDER = \"invalid sender\";\n/**\n * Returned if the nonce of a transaction is lower than the one present in the local chain.\n */\nexports.NONCE_TOO_LOW = \"nonce too low\";\n/**\n * Returned if a transaction's gas price is below the minimum configured for the transaction pool.\n */\nexports.UNDERPRICED = \"transaction underpriced\";\n/**\n * Returned if the transaction is specified to use less gas than required to start the invocation.\n */\nexports.INTRINSIC_GAS_TOO_LOW = \"intrinsic gas too low\";\n/**\n * Returned if a transaction's requested gas limit exceeds the maximum allowance of the current block.\n */\nexports.GAS_LIMIT = \"exceeds block gas limit\";\n/**\n * Prefix for a single VM Exception occuring when running a transaction or block\n */\nexports.VM_EXCEPTION = \"VM Exception while processing transaction: \";\n/**\n * Prefix for multiple VM Exceptions occuring when running transactions or a block\n */\nexports.VM_EXCEPTIONS = \"Multiple VM Exceptions while processing transactions: : \\n\\n\";\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuntimeError = exports.RETURN_TYPES = void 0;\nconst errors_1 = require(\"./errors\");\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereumjs_abi_1 = require(\"ethereumjs-abi\");\nconst coded_error_1 = require(\"./coded-error\");\nconst utils_2 = require(\"@ganache/utils\");\nconst REVERT_REASON = Buffer.from(\"08c379a0\", \"hex\"); // keccak(\"Error(string)\").slice(0, 4)\nvar RETURN_TYPES;\n(function (RETURN_TYPES) {\n RETURN_TYPES[RETURN_TYPES[\"TRANSACTION_HASH\"] = 0] = \"TRANSACTION_HASH\";\n RETURN_TYPES[RETURN_TYPES[\"RETURN_VALUE\"] = 1] = \"RETURN_VALUE\";\n})(RETURN_TYPES = exports.RETURN_TYPES || (exports.RETURN_TYPES = {}));\nclass RuntimeError extends coded_error_1.CodedError {\n constructor(transactionHash, result, returnType) {\n const execResult = result.execResult;\n const error = execResult.exceptionError.error;\n let message = errors_1.VM_EXCEPTION + error;\n super(message, utils_2.JsonRpcErrorCode.INVALID_INPUT);\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n const returnValue = execResult.returnValue;\n const hash = transactionHash.toString();\n let reason;\n if (returnValue.length > 4 &&\n REVERT_REASON.compare(returnValue, 0, 4) === 0) {\n try {\n // it is possible for the `returnValue` to be gibberish that can't be\n // decoded. See: https://github.com/trufflesuite/ganache-core/pull/452\n reason = ethereumjs_abi_1.rawDecode([\"bytes\"], returnValue.slice(4))[0].toString();\n message += \" \" + reason;\n }\n catch {\n // ignore error since reason string recover is impossible\n reason = null;\n }\n }\n else {\n reason = null;\n }\n this.message = message;\n this.data = {\n hash: hash,\n programCounter: execResult.runState.programCounter,\n result: returnType === RETURN_TYPES.TRANSACTION_HASH\n ? hash\n : utils_1.Data.from(returnValue || \"0x\").toString(),\n reason: reason,\n message: error\n };\n }\n}\nexports.RuntimeError = RuntimeError;\n//# sourceMappingURL=runtime-error.js.map","/* eslint-disable no-useless-escape */\nconst utils = require('ethereumjs-util')\nconst BN = require('bn.js')\n\nvar ABI = function () {\n}\n\n// Convert from short to canonical names\n// FIXME: optimise or make this nicer?\nfunction elementaryName (name) {\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3)\n } else if (name === 'int') {\n return 'int256'\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4)\n } else if (name === 'uint') {\n return 'uint256'\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5)\n } else if (name === 'fixed') {\n return 'fixed128x128'\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6)\n } else if (name === 'ufixed') {\n return 'ufixed128x128'\n }\n return name\n}\n\nABI.eventID = function (name, types) {\n // FIXME: use node.js util.format?\n var sig = name + '(' + types.map(elementaryName).join(',') + ')'\n return utils.keccak256(Buffer.from(sig))\n}\n\nABI.methodID = function (name, types) {\n return ABI.eventID(name, types).slice(0, 4)\n}\n\n// Parse N from type\nfunction parseTypeN (type) {\n return parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10)\n}\n\n// Parse N,M from typex\nfunction parseTypeNxM (type) {\n var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type)\n return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ]\n}\n\n// Parse N in type[] where \"type\" can itself be an array type.\nfunction parseTypeArray (type) {\n var tmp = type.match(/(.*)\\[(.*?)\\]$/)\n if (tmp) {\n return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10)\n }\n return null\n}\n\nfunction parseNumber (arg) {\n var type = typeof arg\n if (type === 'string') {\n if (utils.isHexPrefixed(arg)) {\n return new BN(utils.stripHexPrefix(arg), 16)\n } else {\n return new BN(arg, 10)\n }\n } else if (type === 'number') {\n return new BN(arg)\n } else if (arg.toArray) {\n // assume this is a BN for the moment, replace with BN.isBN soon\n return arg\n } else {\n throw new Error('Argument is not a number')\n }\n}\n\n// someMethod(bytes,uint)\n// someMethod(bytes,uint):(boolean)\nfunction parseSignature (sig) {\n var tmp = /^(\\w+)\\((.*)\\)$/.exec(sig)\n\n if (tmp.length !== 3) {\n throw new Error('Invalid method signature')\n }\n\n var args = /^(.+)\\):\\((.+)$/.exec(tmp[2])\n\n if (args !== null && args.length === 3) {\n return {\n method: tmp[1],\n args: args[1].split(','),\n retargs: args[2].split(',')\n }\n } else {\n var params = tmp[2].split(',')\n if (params.length === 1 && params[0] === '') {\n // Special-case (possibly naive) fixup for functions that take no arguments.\n // TODO: special cases are always bad, but this makes the function return\n // match what the calling functions expect\n params = []\n }\n return {\n method: tmp[1],\n args: params\n }\n }\n}\n\n// Encodes a single item (can be dynamic array)\n// @returns: Buffer\nfunction encodeSingle (type, arg) {\n var size, num, ret, i\n\n if (type === 'address') {\n return encodeSingle('uint160', parseNumber(arg))\n } else if (type === 'bool') {\n return encodeSingle('uint8', arg ? 1 : 0)\n } else if (type === 'string') {\n return encodeSingle('bytes', Buffer.from(arg, 'utf8'))\n } else if (isArray(type)) {\n // this part handles fixed-length ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n if (typeof arg.length === 'undefined') {\n throw new Error('Not an array?')\n }\n size = parseTypeArray(type)\n if (size !== 'dynamic' && size !== 0 && arg.length > size) {\n throw new Error('Elements exceed array size: ' + size)\n }\n ret = []\n type = type.slice(0, type.lastIndexOf('['))\n if (typeof arg === 'string') {\n arg = JSON.parse(arg)\n }\n for (i in arg) {\n ret.push(encodeSingle(type, arg[i]))\n }\n if (size === 'dynamic') {\n var length = encodeSingle('uint256', arg.length)\n ret.unshift(length)\n }\n return Buffer.concat(ret)\n } else if (type === 'bytes') {\n arg = Buffer.from(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, utils.zeros(32 - (arg.length % 32)) ])\n }\n\n return ret\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return utils.setLengthRight(arg, 32)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n if (num < 0) {\n throw new Error('Supplied uint is negative')\n }\n\n return num.toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n return num.toTwos(256).toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('ufixed')) {\n size = parseTypeNxM(type)\n\n num = parseNumber(arg)\n\n if (num < 0) {\n throw new Error('Supplied ufixed is negative')\n }\n\n return encodeSingle('uint256', num.mul(new BN(2).pow(new BN(size[1]))))\n } else if (type.startsWith('fixed')) {\n size = parseTypeNxM(type)\n\n return encodeSingle('int256', parseNumber(arg).mul(new BN(2).pow(new BN(size[1]))))\n }\n\n throw new Error('Unsupported or invalid type: ' + type)\n}\n\n// Decodes a single item (can be dynamic array)\n// @returns: array\n// FIXME: this method will need a lot of attention at checking limits and validation\nfunction decodeSingle (parsedType, data, offset) {\n if (typeof parsedType === 'string') {\n parsedType = parseType(parsedType)\n }\n var size, num, ret, i\n\n if (parsedType.name === 'address') {\n return decodeSingle(parsedType.rawType, data, offset).toArrayLike(Buffer, 'be', 20).toString('hex')\n } else if (parsedType.name === 'bool') {\n return decodeSingle(parsedType.rawType, data, offset).toString() === new BN(1).toString()\n } else if (parsedType.name === 'string') {\n var bytes = decodeSingle(parsedType.rawType, data, offset)\n return Buffer.from(bytes, 'utf8').toString()\n } else if (parsedType.isArray) {\n // this part handles fixed-length arrays ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n ret = []\n size = parsedType.size\n\n if (parsedType.size === 'dynamic') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n offset = offset + 32\n }\n for (i = 0; i < size; i++) {\n var decoded = decodeSingle(parsedType.subArray, data, offset)\n ret.push(decoded)\n offset += parsedType.subArray.memoryUsage\n }\n return ret\n } else if (parsedType.name === 'bytes') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n return data.slice(offset + 32, offset + 32 + size)\n } else if (parsedType.name.startsWith('bytes')) {\n return data.slice(offset, offset + parsedType.size)\n } else if (parsedType.name.startsWith('uint')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be')\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded int exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n return num\n } else if (parsedType.name.startsWith('int')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be').fromTwos(256)\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded uint exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n\n return num\n } else if (parsedType.name.startsWith('ufixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('uint256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n } else if (parsedType.name.startsWith('fixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('int256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n }\n throw new Error('Unsupported or invalid type: ' + parsedType.name)\n}\n\n// Parse the given type\n// @returns: {} containing the type itself, memory usage and (including size and subArray if applicable)\nfunction parseType (type) {\n var size\n var ret\n if (isArray(type)) {\n size = parseTypeArray(type)\n var subArray = type.slice(0, type.lastIndexOf('['))\n subArray = parseType(subArray)\n ret = {\n isArray: true,\n name: type,\n size: size,\n memoryUsage: size === 'dynamic' ? 32 : subArray.memoryUsage * size,\n subArray: subArray\n }\n return ret\n } else {\n var rawType\n switch (type) {\n case 'address':\n rawType = 'uint160'\n break\n case 'bool':\n rawType = 'uint8'\n break\n case 'string':\n rawType = 'bytes'\n break\n }\n ret = {\n rawType: rawType,\n name: type,\n memoryUsage: 32\n }\n\n if ((type.startsWith('bytes') && type !== 'bytes') || type.startsWith('uint') || type.startsWith('int')) {\n ret.size = parseTypeN(type)\n } else if (type.startsWith('ufixed') || type.startsWith('fixed')) {\n ret.size = parseTypeNxM(type)\n }\n\n if (type.startsWith('bytes') && type !== 'bytes' && (ret.size < 1 || ret.size > 32)) {\n throw new Error('Invalid bytes width: ' + ret.size)\n }\n if ((type.startsWith('uint') || type.startsWith('int')) && (ret.size % 8 || ret.size < 8 || ret.size > 256)) {\n throw new Error('Invalid int/uint width: ' + ret.size)\n }\n return ret\n }\n}\n\n// Is a type dynamic?\nfunction isDynamic (type) {\n // FIXME: handle all types? I don't think anything is missing now\n return (type === 'string') || (type === 'bytes') || (parseTypeArray(type) === 'dynamic')\n}\n\n// Is a type an array?\nfunction isArray (type) {\n return type.lastIndexOf(']') === type.length - 1\n}\n\n// Encode a method/event with arguments\n// @types an array of string type names\n// @args an array of the appropriate values\nABI.rawEncode = function (types, values) {\n var output = []\n var data = []\n\n var headLength = 0\n\n types.forEach(function (type) {\n if (isArray(type)) {\n var size = parseTypeArray(type)\n\n if (size !== 'dynamic') {\n headLength += 32 * size\n } else {\n headLength += 32\n }\n } else {\n headLength += 32\n }\n })\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n var cur = encodeSingle(type, value)\n\n // Use the head/tail method for storing dynamic data\n if (isDynamic(type)) {\n output.push(encodeSingle('uint256', headLength))\n data.push(cur)\n headLength += cur.length\n } else {\n output.push(cur)\n }\n }\n\n return Buffer.concat(output.concat(data))\n}\n\nABI.rawDecode = function (types, data) {\n var ret = []\n data = Buffer.from(data)\n var offset = 0\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var parsed = parseType(type, data, offset)\n var decoded = decodeSingle(parsed, data, offset)\n offset += parsed.memoryUsage\n ret.push(decoded)\n }\n return ret\n}\n\nABI.simpleEncode = function (method) {\n var args = Array.prototype.slice.call(arguments).slice(1)\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (args.length !== sig.args.length) {\n throw new Error('Argument count mismatch')\n }\n\n return Buffer.concat([ ABI.methodID(sig.method, sig.args), ABI.rawEncode(sig.args, args) ])\n}\n\nABI.simpleDecode = function (method, data) {\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (!sig.retargs) {\n throw new Error('No return values in method')\n }\n\n return ABI.rawDecode(sig.retargs, data)\n}\n\nfunction stringify (type, value) {\n if (type.startsWith('address') || type.startsWith('bytes')) {\n return '0x' + value.toString('hex')\n } else {\n return value.toString()\n }\n}\n\nABI.stringify = function (types, values) {\n var ret = []\n\n for (var i in types) {\n var type = types[i]\n var value = values[i]\n\n // if it is an array type, concat the items\n if (/^[^\\[]+\\[.*\\]$/.test(type)) {\n value = value.map(function (item) {\n return stringify(type, item)\n }).join(', ')\n } else {\n value = stringify(type, value)\n }\n\n ret.push(value)\n }\n\n return ret\n}\n\nABI.solidityHexValue = function (type, value, bitsize) {\n // pass in bitsize = null if use default bitsize\n var size, num\n if (isArray(type)) {\n var subType = type.replace(/\\[.*?\\]/, '')\n if (!isArray(subType)) {\n var arraySize = parseTypeArray(type)\n if (arraySize !== 'dynamic' && arraySize !== 0 && value.length > arraySize) {\n throw new Error('Elements exceed array size: ' + arraySize)\n }\n }\n var arrayValues = value.map(function (v) {\n return ABI.solidityHexValue(subType, v, 256)\n })\n return Buffer.concat(arrayValues)\n } else if (type === 'bytes') {\n return value\n } else if (type === 'string') {\n return Buffer.from(value, 'utf8')\n } else if (type === 'bool') {\n bitsize = bitsize || 8\n var padding = Array((bitsize) / 4).join('0')\n return Buffer.from(value ? padding + '1' : padding + '0', 'hex')\n } else if (type === 'address') {\n var bytesize = 20\n if (bitsize) {\n bytesize = bitsize / 8\n }\n return utils.setLengthLeft(value, bytesize)\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return utils.setLengthRight(value, size)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n bitsize = bitsize || size\n return num.toArrayLike(Buffer, 'be', bitsize / 8)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n bitsize = bitsize || size\n return num.toTwos(size).toArrayLike(Buffer, 'be', bitsize / 8)\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n}\n\nABI.solidityPack = function (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\n var ret = []\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n ret.push(ABI.solidityHexValue(type, value, null))\n }\n\n return Buffer.concat(ret)\n}\n\nABI.soliditySHA3 = function (types, values) {\n return utils.keccak256(ABI.solidityPack(types, values))\n}\n\nABI.soliditySHA256 = function (types, values) {\n return utils.sha256(ABI.solidityPack(types, values))\n}\n\nABI.solidityRIPEMD160 = function (types, values) {\n return utils.ripemd160(ABI.solidityPack(types, values), true)\n}\n\n// Serpent's users are familiar with this encoding\n// - s: string\n// - b: bytes\n// - b: bytes\n// - i: int256\n// - a: int256[]\n\nfunction isNumeric (c) {\n // FIXME: is this correct? Seems to work\n return (c >= '0') && (c <= '9')\n}\n\n// For a \"documentation\" refer to https://github.com/ethereum/serpent/blob/develop/preprocess.cpp\nABI.fromSerpent = function (sig) {\n var ret = []\n for (var i = 0; i < sig.length; i++) {\n var type = sig[i]\n if (type === 's') {\n ret.push('bytes')\n } else if (type === 'b') {\n var tmp = 'bytes'\n var j = i + 1\n while ((j < sig.length) && isNumeric(sig[j])) {\n tmp += sig[j] - '0'\n j++\n }\n i = j - 1\n ret.push(tmp)\n } else if (type === 'i') {\n ret.push('int256')\n } else if (type === 'a') {\n ret.push('int256[]')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret\n}\n\nABI.toSerpent = function (types) {\n var ret = []\n for (var i = 0; i < types.length; i++) {\n var type = types[i]\n if (type === 'bytes') {\n ret.push('s')\n } else if (type.startsWith('bytes')) {\n ret.push('b' + parseTypeN(type))\n } else if (type === 'int256') {\n ret.push('i')\n } else if (type === 'int256[]') {\n ret.push('a')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret.join('')\n}\n\nmodule.exports = ABI\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar 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 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 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');\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\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","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 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 hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n 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 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 utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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","var isHexPrefixed = require('is-hex-prefixed');\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nisSharedArrayBufferToString.working = (\n typeof SharedArrayBuffer !== 'undefined' &&\n isSharedArrayBufferToString(new SharedArrayBuffer())\n);\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBuffer === 'undefined') {\n return false;\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBuffer;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof global[typedArray] === 'function') {\n\t\t\tvar arr = new global[typedArray]();\n\t\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t\t}\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hash_utils_1 = require(\"./hash-utils\");\nvar createKeccakHash = require(\"keccak\");\nexports.keccak224 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak224\");\n});\nexports.keccak256 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak256\");\n});\nexports.keccak384 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak384\");\n});\nexports.keccak512 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak512\");\n});\n//# sourceMappingURL=keccak.js.map","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilterTypes = void 0;\nvar FilterTypes;\n(function (FilterTypes) {\n FilterTypes[FilterTypes[\"log\"] = 0] = \"log\";\n FilterTypes[FilterTypes[\"block\"] = 1] = \"block\";\n FilterTypes[FilterTypes[\"pendingTransaction\"] = 2] = \"pendingTransaction\";\n})(FilterTypes = exports.FilterTypes || (exports.FilterTypes = {}));\n//# sourceMappingURL=filters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Block = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereum_transaction_1 = require(\"@ganache/ethereum-transaction\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst runtime_block_1 = require(\"./runtime-block\");\nconst utils_2 = require(\"@ganache/utils\");\nconst serialize_1 = require(\"./serialize\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nclass Block {\n constructor(serialized, common) {\n this._common = common;\n if (serialized) {\n const deserialized = rlp_1.decode(serialized);\n this._raw = deserialized[0];\n this._rawTransactions = deserialized[1] || [];\n // TODO: support actual uncle data (needed for forking!)\n // Issue: https://github.com/trufflesuite/ganache-core/issues/786\n // const uncles = deserialized[2];\n const totalDifficulty = deserialized[3];\n this.header = runtime_block_1.makeHeader(this._raw, totalDifficulty);\n this._rawTransactionMetaData = deserialized[4] || [];\n this._size = utils_1.Quantity.from(deserialized[5]).toNumber();\n }\n }\n hash() {\n return (this._hash || (this._hash = utils_1.Data.from(utils_2.keccak(rlp_1.encode(this._raw)), 32)));\n }\n getTransactions() {\n const common = this._common;\n return this._rawTransactions.map((raw, index) => new ethereum_transaction_1.BlockTransaction(raw, this._rawTransactionMetaData[index], this.hash().toBuffer(), this.header.number.toBuffer(), utils_1.Quantity.from(index).toBuffer(), common));\n }\n toJSON(includeFullTransactions = false) {\n const hash = this.hash();\n const txFn = this.getTxFn(includeFullTransactions);\n const hashBuffer = hash.toBuffer();\n const number = this.header.number.toBuffer();\n const common = this._common;\n const jsonTxs = this._rawTransactions.map((raw, index) => {\n const tx = new ethereum_transaction_1.BlockTransaction(raw, this._rawTransactionMetaData[index], hashBuffer, number, utils_1.Quantity.from(index).toBuffer(), common);\n return txFn(tx);\n });\n return {\n hash,\n ...this.header,\n size: utils_1.Quantity.from(this._size),\n transactions: jsonTxs,\n uncles: [] // this.value.uncleHeaders.map(function(uncleHash) {return to.hex(uncleHash)})\n };\n }\n static rawFromJSON(json) {\n const header = [\n utils_1.Data.from(json.parentHash).toBuffer(),\n utils_1.Data.from(json.sha3Uncles).toBuffer(),\n ethereum_address_1.Address.from(json.miner).toBuffer(),\n utils_1.Data.from(json.stateRoot).toBuffer(),\n utils_1.Data.from(json.transactionsRoot).toBuffer(),\n utils_1.Data.from(json.receiptsRoot).toBuffer(),\n utils_1.Data.from(json.logsBloom).toBuffer(),\n utils_1.Quantity.from(json.difficulty).toBuffer(),\n utils_1.Quantity.from(json.number).toBuffer(),\n utils_1.Quantity.from(json.gasLimit).toBuffer(),\n utils_1.Quantity.from(json.gasUsed).toBuffer(),\n utils_1.Quantity.from(json.timestamp).toBuffer(),\n utils_1.Data.from(json.extraData).toBuffer(),\n utils_1.Data.from(json.mixHash).toBuffer(),\n utils_1.Data.from(json.nonce).toBuffer()\n ];\n const totalDifficulty = utils_1.Quantity.from(json.totalDifficulty).toBuffer();\n const txs = [];\n const extraTxs = [];\n json.transactions.forEach(tx => {\n txs.push([\n utils_1.Quantity.from(tx.nonce).toBuffer(),\n utils_1.Quantity.from(tx.gasPrice).toBuffer(),\n utils_1.Quantity.from(tx.gas).toBuffer(),\n tx.to == null ? utils_2.BUFFER_EMPTY : ethereum_address_1.Address.from(tx.to).toBuffer(),\n utils_1.Quantity.from(tx.value).toBuffer(),\n utils_1.Data.from(tx.input).toBuffer(),\n utils_1.Quantity.from(tx.v).toBuffer(),\n utils_1.Quantity.from(tx.r).toBuffer(),\n utils_1.Quantity.from(tx.s).toBuffer()\n ]);\n extraTxs.push([\n utils_1.Quantity.from(tx.from).toBuffer(),\n utils_1.Quantity.from(tx.hash).toBuffer()\n ]);\n });\n return serialize_1.serialize([header, txs, [], totalDifficulty, extraTxs]).serialized;\n }\n getTxFn(include = false) {\n if (include) {\n return (tx) => tx.toJSON();\n }\n else {\n return (tx) => tx.hash;\n }\n }\n static fromParts(rawHeader, txs, totalDifficulty, extraTxs, size, common) {\n const block = new Block(null, common);\n block._raw = rawHeader;\n block._rawTransactions = txs;\n block.header = runtime_block_1.makeHeader(rawHeader, totalDifficulty);\n block._rawTransactionMetaData = extraTxs;\n block._size = size;\n return block;\n }\n}\nexports.Block = Block;\n//# sourceMappingURL=block.js.map","var isHexPrefixed = require('is-hex-prefixed');\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar 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 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 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');\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\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","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 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 hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n 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 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 utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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// NOTE these params may need to be changed at each hardfork\n// they can be tracked here: https://github.com/ethereumjs/ethereumjs-vm/blob/master/packages/common/src/hardforks/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Params = void 0;\nexports.Params = {\n /**\n * Per transaction not creating a contract. NOTE: Not payable on data of calls between transactions.\n */\n TRANSACTION_GAS: 21000n,\n /**\n * Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions.\n */\n TRANSACTION_DATA_NON_ZERO_GAS: new Map([\n [\"constantinople\", 68n],\n [\"byzantium\", 68n],\n [\"petersburg\", 68n],\n [\"istanbul\", 16n],\n [\"muirGlacier\", 16n],\n [\"berlin\", 16n]\n ]),\n /**\n * Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions.\n */\n TRANSACTION_DATA_ZERO_GAS: 4n,\n /**\n * Fee for creation a transaction\n */\n TRANSACTION_CREATION: 32000n\n};\n//# sourceMappingURL=params.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FrozenTransaction = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst base_transaction_1 = require(\"./base-transaction\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\n/**\n * A frozen transaction is a transaction that is part of a block.\n */\nclass FrozenTransaction extends base_transaction_1.BaseTransaction {\n constructor(data, common) {\n super(common);\n this.toJSON = () => {\n return {\n hash: this.hash,\n nonce: this.nonce,\n blockHash: this.blockHash,\n blockNumber: this.blockNumber,\n transactionIndex: this.index,\n from: this.from,\n to: this.to.isNull() ? null : this.to,\n value: this.value,\n gas: this.gas,\n gasPrice: this.gasPrice,\n input: this.data,\n v: this.v,\n r: this.r,\n s: this.s\n };\n };\n if (Buffer.isBuffer(data)) {\n const decoded = rlp_1.decode(data);\n this.setRaw(decoded[0]);\n this.setExtra(decoded[1]);\n }\n else {\n this.setRaw(data[0]);\n this.setExtra(data[1]);\n }\n Object.freeze(this);\n }\n setRaw(raw) {\n const [nonce, gasPrice, gasLimit, to, value, data, v, r, s] = raw;\n this.nonce = utils_1.Quantity.from(nonce);\n this.gasPrice = utils_1.Quantity.from(gasPrice);\n this.gas = utils_1.Quantity.from(gasLimit);\n this.to = to.length === 0 ? utils_1.RPCQUANTITY_EMPTY : ethereum_address_1.Address.from(to);\n this.value = utils_1.Quantity.from(value);\n this.data = utils_1.Data.from(data);\n this.v = utils_1.Quantity.from(v, true);\n this.r = utils_1.Quantity.from(r, true);\n this.s = utils_1.Quantity.from(s, true);\n }\n setExtra(raw) {\n const [from, hash, blockHash, blockNumber, index] = raw;\n this.from = ethereum_address_1.Address.from(from);\n this.hash = utils_1.Data.from(hash, 32);\n this.blockHash = utils_1.Data.from(blockHash, 32);\n this.blockNumber = utils_1.Quantity.from(blockNumber);\n this.index = utils_1.Quantity.from(index);\n }\n}\nexports.FrozenTransaction = FrozenTransaction;\n//# sourceMappingURL=frozen-transaction.js.map","var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : 'node'\nvar arch = os.arch()\nvar platform = os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.path(dir))\n}\n\nload.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n (process.versions && process.versions.electron) ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', platform + '-' + arch)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuntimeBlock = exports.makeHeader = exports.getBlockSize = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst serialize_1 = require(\"./serialize\");\nconst block_1 = require(\"./block\");\n/**\n * BN, but with an extra `buf` property that caches the original Buffer value\n * we pass in.\n */\nclass BnExtra extends ethereumjs_util_1.BN {\n constructor(number) {\n super(number, 10, \"be\");\n this.buf = number;\n }\n}\n/**\n * Returns the size of the serialized data as it would have been calculated had\n * we stored things geth does, i.e., `totalDfficulty` is not usually stored in\n * the block header.\n *\n * @param serialized\n * @param totalDifficulty\n */\nfunction getBlockSize(serialized, totalDifficulty) {\n return serialized.length - totalDifficulty.length;\n}\nexports.getBlockSize = getBlockSize;\nfunction makeHeader(raw, totalDifficulty) {\n return {\n parentHash: utils_1.Data.from(raw[0], 32),\n sha3Uncles: utils_1.Data.from(raw[1], 32),\n miner: utils_1.Data.from(raw[2], 20),\n stateRoot: utils_1.Data.from(raw[3], 32),\n transactionsRoot: utils_1.Data.from(raw[4], 32),\n receiptsRoot: utils_1.Data.from(raw[5], 32),\n logsBloom: utils_1.Data.from(raw[6], 256),\n difficulty: utils_1.Quantity.from(raw[7], false),\n number: utils_1.Quantity.from(raw[8], false),\n gasLimit: utils_1.Quantity.from(raw[9], false),\n gasUsed: utils_1.Quantity.from(raw[10], false),\n timestamp: utils_1.Quantity.from(raw[11], false),\n extraData: utils_1.Data.from(raw[12]),\n mixHash: utils_1.Data.from(raw[13], 32),\n nonce: utils_1.Data.from(raw[14], 8),\n totalDifficulty: utils_1.Quantity.from(totalDifficulty, false)\n };\n}\nexports.makeHeader = makeHeader;\n/**\n * A minimal block that can be used by the EVM to run transactions.\n */\nclass RuntimeBlock {\n constructor(number, parentHash, coinbase, gasLimit, timestamp, difficulty, previousBlockTotalDifficulty) {\n const ts = timestamp.toBuffer();\n const coinbaseBuffer = coinbase.toBuffer();\n this.header = {\n parentHash: parentHash.toBuffer(),\n coinbase: { buf: coinbaseBuffer, toBuffer: () => coinbaseBuffer },\n number: new BnExtra(number.toBuffer()),\n difficulty: new BnExtra(difficulty.toBuffer()),\n totalDifficulty: utils_1.Quantity.from(previousBlockTotalDifficulty.toBigInt() + difficulty.toBigInt()).toBuffer(),\n gasLimit: new BnExtra(gasLimit),\n timestamp: new BnExtra(ts)\n };\n }\n /**\n * Returns the serialization of all block data, the hash of the block header,\n * and a map of the hashed and raw storage keys\n *\n * @param transactionsTrie\n * @param receiptTrie\n * @param bloom\n * @param stateRoot\n * @param gasUsed\n * @param extraData\n * @param transactions\n * @param storageKeys\n */\n finalize(transactionsTrie, receiptTrie, bloom, stateRoot, gasUsed, extraData, transactions, storageKeys) {\n const { header } = this;\n const rawHeader = [\n header.parentHash,\n ethereumjs_util_1.KECCAK256_RLP_ARRAY,\n header.coinbase.buf,\n stateRoot,\n transactionsTrie,\n receiptTrie,\n bloom,\n header.difficulty.buf,\n header.number.buf,\n header.gasLimit.buf,\n gasUsed === 0n ? utils_1.BUFFER_EMPTY : utils_1.Quantity.from(gasUsed).toBuffer(),\n header.timestamp.buf,\n extraData.toBuffer(),\n utils_1.BUFFER_32_ZERO,\n utils_1.BUFFER_8_ZERO // nonce\n ];\n const { totalDifficulty } = header;\n const txs = [];\n const extraTxs = [];\n transactions.forEach(tx => {\n txs.push(tx.raw);\n extraTxs.push([tx.from.toBuffer(), tx.hash.toBuffer()]);\n });\n const { serialized, size } = serialize_1.serialize([\n rawHeader,\n txs,\n [],\n totalDifficulty,\n extraTxs\n ]);\n // make a new block, but pass `null` so it doesn't do the extra\n // deserialization work since we already have everything in a deserialized\n // state here. We'll just set it ourselves by reaching into the \"_private\"\n // fields.\n const block = new block_1.Block(null, null);\n block._raw = rawHeader;\n block._rawTransactions = txs;\n block.header = makeHeader(rawHeader, totalDifficulty);\n block._rawTransactionMetaData = extraTxs;\n block._size = size;\n return {\n block,\n serialized,\n storageKeys,\n transactions\n };\n }\n}\nexports.RuntimeBlock = RuntimeBlock;\n//# sourceMappingURL=runtime-block.js.map","var isHexPrefixed = require('is-hex-prefixed');\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\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 zr = [\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 sl = [\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 sr = [\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\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar 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 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 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');\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\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","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 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 hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n 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 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 utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serialize = void 0;\nconst rlp_1 = require(\"@ganache/rlp\");\nconst utils_1 = require(\"@ganache/utils\");\nfunction serialize(raw) {\n const serializedStart = rlp_1.encodeRange(raw, 0, 3);\n const serializedLength = serializedStart.length;\n const ethereumRawBlockSize = rlp_1.encodeLength(serializedLength, 192).length;\n const size = ethereumRawBlockSize + serializedLength;\n const middle = rlp_1.encodeRange(raw, 3, 2);\n const ending = rlp_1.encode(utils_1.uintToBuffer(size));\n return {\n serialized: rlp_1.digest([serializedStart.output, middle.output, [ending]], serializedLength + middle.length + ending.length),\n size\n };\n}\nexports.serialize = serialize;\n//# sourceMappingURL=serialize.js.map","var isHexPrefixed = require('is-hex-prefixed');\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar 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 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 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');\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\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","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 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 hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n 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 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 utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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 secp256k1 = require('ethereum-cryptography/secp256k1');\n\nvar secp256k1v3 = require('./secp256k1-lib/index');\nvar der = require('./secp256k1-lib/der');\n\n/**\n * Verify an ECDSA privateKey\n * @method privateKeyVerify\n * @param {Buffer} privateKey\n * @return {boolean}\n */\nvar privateKeyVerify = function privateKeyVerify(privateKey) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n return false;\n }\n\n return secp256k1.privateKeyVerify(Uint8Array.from(privateKey));\n};\n\n/**\n * Export a privateKey in DER format\n * @method privateKeyExport\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {boolean}\n */\nvar privateKeyExport = function privateKeyExport(privateKey, compressed) {\n // privateKeyExport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n var publicKey = secp256k1v3.privateKeyExport(privateKey, compressed);\n\n return der.privateKeyExport(privateKey, publicKey, compressed);\n};\n\n/**\n * Import a privateKey in DER format\n * @method privateKeyImport\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\n\nvar privateKeyImport = function privateKeyImport(privateKey) {\n // privateKeyImport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n privateKey = der.privateKeyImport(privateKey);\n if (privateKey !== null && privateKey.length === 32 && privateKeyVerify(privateKey)) {\n return privateKey;\n }\n\n throw new Error(\"couldn't import from DER format\");\n};\n\n/**\n * Negate a privateKey by subtracting it from the order of the curve's base point\n * @method privateKeyNegate\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyNegate = function privateKeyNegate(privateKey) {\n return Buffer.from(secp256k1.privateKeyNegate(Uint8Array.from(privateKey)));\n};\n\n/**\n * Compute the inverse of a privateKey (modulo the order of the curve's base point).\n * @method privateKeyModInverse\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyModInverse = function privateKeyModInverse(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.privateKeyModInverse(Uint8Array.from(privateKey)));\n};\n\n/**\n * Tweak a privateKey by adding tweak to it.\n * @method privateKeyTweakAdd\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakAdd = function privateKeyTweakAdd(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakAdd(Uint8Array.from(privateKey), tweak));\n};\n\n/**\n * Tweak a privateKey by multiplying it by a tweak.\n * @method privateKeyTweakMul\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakMul = function privateKeyTweakMul(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakMul(Uint8Array.from(privateKey), Uint8Array.from(tweak)));\n};\n\n/**\n * Compute the public key for a privateKey.\n * @method publicKeyCreate\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCreate = function publicKeyCreate(privateKey, compressed) {\n return Buffer.from(secp256k1.publicKeyCreate(Uint8Array.from(privateKey), compressed));\n};\n\n/**\n * Convert a publicKey to compressed or uncompressed form.\n * @method publicKeyConvert\n * @param {Buffer} publicKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyConvert = function publicKeyConvert(publicKey, compressed) {\n return Buffer.from(secp256k1.publicKeyConvert(Uint8Array.from(publicKey), compressed));\n};\n\n/**\n * Verify an ECDSA publicKey.\n * @method publicKeyVerify\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar publicKeyVerify = function publicKeyVerify(publicKey) {\n // secp256k1 v4 version throws when publicKey length is not 33 or 65\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(Uint8Array.from(publicKey));\n};\n\n/**\n * Tweak a publicKey by adding tweak times the generator to it.\n * @method publicKeyTweakAdd\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakAdd = function publicKeyTweakAdd(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakAdd(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Tweak a publicKey by multiplying it by a tweak value\n * @method publicKeyTweakMul\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakMul = function publicKeyTweakMul(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakMul(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Add a given publicKeys together.\n * @method publicKeyCombine\n * @param {Array} publicKeys\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCombine = function publicKeyCombine(publicKeys, compressed) {\n var keys = [];\n publicKeys.forEach(function (publicKey) {\n keys.push(Uint8Array.from(publicKey));\n });\n\n return Buffer.from(secp256k1.publicKeyCombine(keys, compressed));\n};\n\n/**\n * Convert a signature to a normalized lower-S form.\n * @method signatureNormalize\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureNormalize = function signatureNormalize(signature) {\n return Buffer.from(secp256k1.signatureNormalize(Uint8Array.from(signature)));\n};\n\n/**\n * Serialize an ECDSA signature in DER format.\n * @method signatureExport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureExport = function signatureExport(signature) {\n return Buffer.from(secp256k1.signatureExport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImport = function signatureImport(signature) {\n return Buffer.from(secp256k1.signatureImport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (not follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImportLax\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImportLax = function signatureImportLax(signature) {\n // signatureImportLax method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure that signature is greater than 0\n if (signature.length === 0) {\n throw new RangeError('signature length is invalid');\n }\n\n var sigObj = der.signatureImportLax(signature);\n if (sigObj === null) {\n throw new Error(\"couldn't parse DER signature\");\n }\n\n return secp256k1v3.signatureImport(sigObj);\n};\n\n/**\n * Create an ECDSA signature. Always return low-S signature.\n * @method sign\n * @param {Buffer} message\n * @param {Buffer} privateKey\n * @param {Object} options\n * @return {Buffer}\n */\nvar sign = function sign(message, privateKey, options) {\n if (options === null) {\n throw new TypeError('options should be an Object');\n }\n\n var signOptions = void 0;\n\n if (options) {\n signOptions = {};\n\n if (options.data === null) {\n throw new TypeError('options.data should be a Buffer');\n }\n\n if (options.data) {\n // validate option.data length\n if (options.data.length !== 32) {\n throw new RangeError('options.data length is invalid');\n }\n\n signOptions.data = new Uint8Array(options.data);\n }\n\n if (options.noncefn === null) {\n throw new TypeError('options.noncefn should be a Function');\n }\n\n if (options.noncefn) {\n // convert option.noncefn function signature\n signOptions.noncefn = function (message, privateKey, algo, data, attempt) {\n var bufferAlgo = algo != null ? Buffer.from(algo) : null;\n var bufferData = data != null ? Buffer.from(data) : null;\n\n var buffer = Buffer.from('');\n\n if (options.noncefn) {\n buffer = options.noncefn(Buffer.from(message), Buffer.from(privateKey), bufferAlgo, bufferData, attempt);\n }\n\n return Uint8Array.from(buffer);\n };\n }\n }\n\n var sig = secp256k1.ecdsaSign(Uint8Array.from(message), Uint8Array.from(privateKey), signOptions);\n\n return {\n signature: Buffer.from(sig.signature),\n recovery: sig.recid\n };\n};\n\n/**\n * Verify an ECDSA signature.\n * @method verify\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar verify = function verify(message, signature, publicKey) {\n // note: secp256k1 v4 verify method has a different argument order\n return secp256k1.ecdsaVerify(Uint8Array.from(signature), Uint8Array.from(message), publicKey);\n};\n\n/**\n * Recover an ECDSA public key from a signature.\n * @method recover\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Number} recid\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar recover = function recover(message, signature, recid, compressed) {\n // note: secp256k1 v4 recover method has a different argument order\n return Buffer.from(secp256k1.ecdsaRecover(Uint8Array.from(signature), recid, Uint8Array.from(message), compressed));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and applied sha256 to compressed public key.\n * @method ecdh\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar ecdh = function ecdh(publicKey, privateKey) {\n // note: secp256k1 v3 doesn't allow optional parameter\n return Buffer.from(secp256k1.ecdh(Uint8Array.from(publicKey), Uint8Array.from(privateKey), {}));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and return public key as result\n * @method ecdhUnsafe\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar ecdhUnsafe = function ecdhUnsafe(publicKey, privateKey, compressed) {\n // ecdhUnsafe method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure valid publicKey length\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n throw new RangeError('public key length is invalid');\n }\n\n // ensure valid privateKey length\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.ecdhUnsafe(Uint8Array.from(publicKey), Uint8Array.from(privateKey), compressed));\n};\n\nmodule.exports = {\n privateKeyVerify: privateKeyVerify,\n privateKeyExport: privateKeyExport,\n privateKeyImport: privateKeyImport,\n privateKeyNegate: privateKeyNegate,\n privateKeyModInverse: privateKeyModInverse,\n privateKeyTweakAdd: privateKeyTweakAdd,\n privateKeyTweakMul: privateKeyTweakMul,\n\n publicKeyCreate: publicKeyCreate,\n publicKeyConvert: publicKeyConvert,\n publicKeyVerify: publicKeyVerify,\n publicKeyTweakAdd: publicKeyTweakAdd,\n publicKeyTweakMul: publicKeyTweakMul,\n publicKeyCombine: publicKeyCombine,\n\n signatureNormalize: signatureNormalize,\n signatureExport: signatureExport,\n signatureImport: signatureImport,\n signatureImportLax: signatureImportLax,\n\n sign: sign,\n verify: verify,\n recover: recover,\n\n ecdh: ecdh,\n ecdhUnsafe: ecdhUnsafe\n};","const utils = require('ethereumjs-util')\nconst BN = require('bn.js')\n\nvar ABI = function () {\n}\n\n// Convert from short to canonical names\n// FIXME: optimise or make this nicer?\nfunction elementaryName (name) {\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3)\n } else if (name === 'int') {\n return 'int256'\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4)\n } else if (name === 'uint') {\n return 'uint256'\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5)\n } else if (name === 'fixed') {\n return 'fixed128x128'\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6)\n } else if (name === 'ufixed') {\n return 'ufixed128x128'\n }\n return name\n}\n\nABI.eventID = function (name, types) {\n // FIXME: use node.js util.format?\n var sig = name + '(' + types.map(elementaryName).join(',') + ')'\n return utils.sha3(new Buffer(sig))\n}\n\nABI.methodID = function (name, types) {\n return ABI.eventID(name, types).slice(0, 4)\n}\n\n// Parse N from type\nfunction parseTypeN (type) {\n return parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10)\n}\n\n// Parse N,M from typex\nfunction parseTypeNxM (type) {\n var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type)\n return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ]\n}\n\n// Parse N in type[] where \"type\" can itself be an array type.\nfunction parseTypeArray (type) {\n var tmp = type.match(/(.*)\\[(.*?)\\]$/)\n if (tmp) {\n return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10)\n }\n return null\n}\n\nfunction parseNumber (arg) {\n var type = typeof arg\n if (type === 'string') {\n if (utils.isHexPrefixed(arg)) {\n return new BN(utils.stripHexPrefix(arg), 16)\n } else {\n return new BN(arg, 10)\n }\n } else if (type === 'number') {\n return new BN(arg)\n } else if (arg.toArray) {\n // assume this is a BN for the moment, replace with BN.isBN soon\n return arg\n } else {\n throw new Error('Argument is not a number')\n }\n}\n\n// someMethod(bytes,uint)\n// someMethod(bytes,uint):(boolean)\nfunction parseSignature (sig) {\n var tmp = /^(\\w+)\\((.+)\\)$/.exec(sig)\n if (tmp.length !== 3) {\n throw new Error('Invalid method signature')\n }\n\n var args = /^(.+)\\):\\((.+)$/.exec(tmp[2])\n\n if (args !== null && args.length === 3) {\n return {\n method: tmp[1],\n args: args[1].split(','),\n retargs: args[2].split(',')\n }\n } else {\n return {\n method: tmp[1],\n args: tmp[2].split(',')\n }\n }\n}\n\n// Encodes a single item (can be dynamic array)\n// @returns: Buffer\nfunction encodeSingle (type, arg) {\n var size, num, ret, i\n\n if (type === 'address') {\n return encodeSingle('uint160', parseNumber(arg))\n } else if (type === 'bool') {\n return encodeSingle('uint8', arg ? 1 : 0)\n } else if (type === 'string') {\n return encodeSingle('bytes', new Buffer(arg, 'utf8'))\n } else if (isArray(type)) {\n // this part handles fixed-length ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n if (typeof arg.length === 'undefined') {\n throw new Error('Not an array?')\n }\n size = parseTypeArray(type)\n if (size !== 'dynamic' && size !== 0 && arg.length > size) {\n throw new Error('Elements exceed array size: ' + size)\n }\n ret = []\n type = type.slice(0, type.lastIndexOf('['))\n if (typeof arg === 'string') {\n arg = JSON.parse(arg)\n }\n for (i in arg) {\n ret.push(encodeSingle(type, arg[i]))\n }\n if (size === 'dynamic') {\n var length = encodeSingle('uint256', arg.length)\n ret.unshift(length)\n }\n return Buffer.concat(ret)\n } else if (type === 'bytes') {\n arg = new Buffer(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, utils.zeros(32 - (arg.length % 32)) ])\n }\n\n return ret\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return utils.setLengthRight(arg, 32)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n if (num < 0) {\n throw new Error('Supplied uint is negative')\n }\n\n return num.toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n return num.toTwos(256).toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('ufixed')) {\n size = parseTypeNxM(type)\n\n num = parseNumber(arg)\n\n if (num < 0) {\n throw new Error('Supplied ufixed is negative')\n }\n\n return encodeSingle('uint256', num.mul(new BN(2).pow(new BN(size[1]))))\n } else if (type.startsWith('fixed')) {\n size = parseTypeNxM(type)\n\n return encodeSingle('int256', parseNumber(arg).mul(new BN(2).pow(new BN(size[1]))))\n }\n\n throw new Error('Unsupported or invalid type: ' + type)\n}\n\n// Decodes a single item (can be dynamic array)\n// @returns: array\n// FIXME: this method will need a lot of attention at checking limits and validation\nfunction decodeSingle (parsedType, data, offset) {\n if (typeof parsedType === 'string') {\n parsedType = parseType(parsedType)\n }\n var size, num, ret, i\n\n if (parsedType.name === 'address') {\n return decodeSingle(parsedType.rawType, data, offset).toArrayLike(Buffer, 'be', 20).toString('hex')\n } else if (parsedType.name === 'bool') {\n return decodeSingle(parsedType.rawType, data, offset).toString() === new BN(1).toString()\n } else if (parsedType.name === 'string') {\n var bytes = decodeSingle(parsedType.rawType, data, offset)\n return new Buffer(bytes, 'utf8').toString()\n } else if (parsedType.isArray) {\n // this part handles fixed-length arrays ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n ret = []\n size = parsedType.size\n\n if (parsedType.size === 'dynamic') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n offset = offset + 32\n }\n for (i = 0; i < size; i++) {\n var decoded = decodeSingle(parsedType.subArray, data, offset)\n ret.push(decoded)\n offset += parsedType.subArray.memoryUsage\n }\n return ret\n } else if (parsedType.name === 'bytes') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n return data.slice(offset + 32, offset + 32 + size)\n } else if (parsedType.name.startsWith('bytes')) {\n return data.slice(offset, offset + parsedType.size)\n } else if (parsedType.name.startsWith('uint')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be')\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded int exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n return num\n } else if (parsedType.name.startsWith('int')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be').fromTwos(256)\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded uint exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n\n return num\n } else if (parsedType.name.startsWith('ufixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('uint256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n } else if (parsedType.name.startsWith('fixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('int256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n }\n throw new Error('Unsupported or invalid type: ' + parsedType.name)\n}\n\n// Parse the given type\n// @returns: {} containing the type itself, memory usage and (including size and subArray if applicable)\nfunction parseType (type) {\n var size\n var ret\n if (isArray(type)) {\n size = parseTypeArray(type)\n var subArray = type.slice(0, type.lastIndexOf('['))\n subArray = parseType(subArray)\n ret = {\n isArray: true,\n name: type,\n size: size,\n memoryUsage: size === 'dynamic' ? 32 : subArray.memoryUsage * size,\n subArray: subArray\n }\n return ret\n } else {\n var rawType\n switch (type) {\n case 'address':\n rawType = 'uint160'\n break\n case 'bool':\n rawType = 'uint8'\n break\n case 'string':\n rawType = 'bytes'\n break\n }\n ret = {\n rawType: rawType,\n name: type,\n memoryUsage: 32\n }\n\n if (type.startsWith('bytes') && type !== 'bytes' || type.startsWith('uint') || type.startsWith('int')) {\n ret.size = parseTypeN(type)\n } else if (type.startsWith('ufixed') || type.startsWith('fixed')) {\n ret.size = parseTypeNxM(type)\n }\n\n if (type.startsWith('bytes') && type !== 'bytes' && (ret.size < 1 || ret.size > 32)) {\n throw new Error('Invalid bytes width: ' + ret.size)\n }\n if ((type.startsWith('uint') || type.startsWith('int')) && (ret.size % 8 || ret.size < 8 || ret.size > 256)) {\n throw new Error('Invalid int/uint width: ' + ret.size)\n }\n return ret\n }\n}\n\n// Is a type dynamic?\nfunction isDynamic (type) {\n // FIXME: handle all types? I don't think anything is missing now\n return (type === 'string') || (type === 'bytes') || (parseTypeArray(type) === 'dynamic')\n}\n\n// Is a type an array?\nfunction isArray (type) {\n return type.lastIndexOf(']') === type.length - 1\n}\n\n// Encode a method/event with arguments\n// @types an array of string type names\n// @args an array of the appropriate values\nABI.rawEncode = function (types, values) {\n var output = []\n var data = []\n\n var headLength = 32 * types.length\n\n for (var i in types) {\n var type = elementaryName(types[i])\n var value = values[i]\n var cur = encodeSingle(type, value)\n\n // Use the head/tail method for storing dynamic data\n if (isDynamic(type)) {\n output.push(encodeSingle('uint256', headLength))\n data.push(cur)\n headLength += cur.length\n } else {\n output.push(cur)\n }\n }\n\n return Buffer.concat(output.concat(data))\n}\n\nABI.rawDecode = function (types, data) {\n var ret = []\n data = new Buffer(data)\n var offset = 0\n for (var i in types) {\n var type = elementaryName(types[i])\n var parsed = parseType(type, data, offset)\n var decoded = decodeSingle(parsed, data, offset)\n offset += parsed.memoryUsage\n ret.push(decoded)\n }\n return ret\n}\n\nABI.simpleEncode = function (method) {\n var args = Array.prototype.slice.call(arguments).slice(1)\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (args.length !== sig.args.length) {\n throw new Error('Argument count mismatch')\n }\n\n return Buffer.concat([ ABI.methodID(sig.method, sig.args), ABI.rawEncode(sig.args, args) ])\n}\n\nABI.simpleDecode = function (method, data) {\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (!sig.retargs) {\n throw new Error('No return values in method')\n }\n\n return ABI.rawDecode(sig.retargs, data)\n}\n\nfunction stringify (type, value) {\n if (type.startsWith('address') || type.startsWith('bytes')) {\n return '0x' + value.toString('hex')\n } else {\n return value.toString()\n }\n}\n\nABI.stringify = function (types, values) {\n var ret = []\n\n for (var i in types) {\n var type = types[i]\n var value = values[i]\n\n // if it is an array type, concat the items\n if (/^[^\\[]+\\[.*\\]$/.test(type)) {\n value = value.map(function (item) {\n return stringify(type, item)\n }).join(', ')\n } else {\n value = stringify(type, value)\n }\n\n ret.push(value)\n }\n\n return ret\n}\n\nABI.solidityPack = function (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\n var size, num\n var ret = []\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n\n if (type === 'bytes') {\n ret.push(value)\n } else if (type === 'string') {\n ret.push(new Buffer(value, 'utf8'))\n } else if (type === 'bool') {\n ret.push(new Buffer(value ? '01' : '00', 'hex'))\n } else if (type === 'address') {\n ret.push(utils.setLengthLeft(value, 20))\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n ret.push(utils.setLengthRight(value, size))\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toArrayLike(Buffer, 'be', size / 8))\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toTwos(size).toArrayLike(Buffer, 'be', size / 8))\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n\n return Buffer.concat(ret)\n}\n\nABI.soliditySHA3 = function (types, values) {\n return utils.sha3(ABI.solidityPack(types, values))\n}\n\nABI.soliditySHA256 = function (types, values) {\n return utils.sha256(ABI.solidityPack(types, values))\n}\n\nABI.solidityRIPEMD160 = function (types, values) {\n return utils.ripemd160(ABI.solidityPack(types, values), true)\n}\n\n// Serpent's users are familiar with this encoding\n// - s: string\n// - b: bytes\n// - b: bytes\n// - i: int256\n// - a: int256[]\n\nfunction isNumeric (c) {\n // FIXME: is this correct? Seems to work\n return (c >= '0') && (c <= '9')\n}\n\n// For a \"documentation\" refer to https://github.com/ethereum/serpent/blob/develop/preprocess.cpp\nABI.fromSerpent = function (sig) {\n var ret = []\n for (var i = 0; i < sig.length; i++) {\n var type = sig[i]\n if (type === 's') {\n ret.push('bytes')\n } else if (type === 'b') {\n var tmp = 'bytes'\n var j = i + 1\n while ((j < sig.length) && isNumeric(sig[j])) {\n tmp += sig[j] - '0'\n j++\n }\n i = j - 1\n ret.push(tmp)\n } else if (type === 'i') {\n ret.push('int256')\n } else if (type === 'a') {\n ret.push('int256[]')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret\n}\n\nABI.toSerpent = function (types) {\n var ret = []\n for (var i = 0; i < types.length; i++) {\n var type = types[i]\n if (type === 'bytes') {\n ret.push('s')\n } else if (type.startsWith('bytes')) {\n ret.push('b' + parseTypeN(type))\n } else if (type === 'int256') {\n ret.push('i')\n } else if (type === 'int256[]') {\n ret.push('a')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret.join('')\n}\n\nmodule.exports = ABI\n","'use strict';\n\nvar secp256k1 = require('ethereum-cryptography/secp256k1');\n\nvar secp256k1v3 = require('./secp256k1-lib/index');\nvar der = require('./secp256k1-lib/der');\n\n/**\n * Verify an ECDSA privateKey\n * @method privateKeyVerify\n * @param {Buffer} privateKey\n * @return {boolean}\n */\nvar privateKeyVerify = function privateKeyVerify(privateKey) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n return false;\n }\n\n return secp256k1.privateKeyVerify(Uint8Array.from(privateKey));\n};\n\n/**\n * Export a privateKey in DER format\n * @method privateKeyExport\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {boolean}\n */\nvar privateKeyExport = function privateKeyExport(privateKey, compressed) {\n // privateKeyExport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n var publicKey = secp256k1v3.privateKeyExport(privateKey, compressed);\n\n return der.privateKeyExport(privateKey, publicKey, compressed);\n};\n\n/**\n * Import a privateKey in DER format\n * @method privateKeyImport\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\n\nvar privateKeyImport = function privateKeyImport(privateKey) {\n // privateKeyImport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n privateKey = der.privateKeyImport(privateKey);\n if (privateKey !== null && privateKey.length === 32 && privateKeyVerify(privateKey)) {\n return privateKey;\n }\n\n throw new Error(\"couldn't import from DER format\");\n};\n\n/**\n * Negate a privateKey by subtracting it from the order of the curve's base point\n * @method privateKeyNegate\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyNegate = function privateKeyNegate(privateKey) {\n return Buffer.from(secp256k1.privateKeyNegate(Uint8Array.from(privateKey)));\n};\n\n/**\n * Compute the inverse of a privateKey (modulo the order of the curve's base point).\n * @method privateKeyModInverse\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyModInverse = function privateKeyModInverse(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.privateKeyModInverse(Uint8Array.from(privateKey)));\n};\n\n/**\n * Tweak a privateKey by adding tweak to it.\n * @method privateKeyTweakAdd\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakAdd = function privateKeyTweakAdd(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakAdd(Uint8Array.from(privateKey), tweak));\n};\n\n/**\n * Tweak a privateKey by multiplying it by a tweak.\n * @method privateKeyTweakMul\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakMul = function privateKeyTweakMul(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakMul(Uint8Array.from(privateKey), Uint8Array.from(tweak)));\n};\n\n/**\n * Compute the public key for a privateKey.\n * @method publicKeyCreate\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCreate = function publicKeyCreate(privateKey, compressed) {\n return Buffer.from(secp256k1.publicKeyCreate(Uint8Array.from(privateKey), compressed));\n};\n\n/**\n * Convert a publicKey to compressed or uncompressed form.\n * @method publicKeyConvert\n * @param {Buffer} publicKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyConvert = function publicKeyConvert(publicKey, compressed) {\n return Buffer.from(secp256k1.publicKeyConvert(Uint8Array.from(publicKey), compressed));\n};\n\n/**\n * Verify an ECDSA publicKey.\n * @method publicKeyVerify\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar publicKeyVerify = function publicKeyVerify(publicKey) {\n // secp256k1 v4 version throws when publicKey length is not 33 or 65\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(Uint8Array.from(publicKey));\n};\n\n/**\n * Tweak a publicKey by adding tweak times the generator to it.\n * @method publicKeyTweakAdd\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakAdd = function publicKeyTweakAdd(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakAdd(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Tweak a publicKey by multiplying it by a tweak value\n * @method publicKeyTweakMul\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakMul = function publicKeyTweakMul(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakMul(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Add a given publicKeys together.\n * @method publicKeyCombine\n * @param {Array} publicKeys\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCombine = function publicKeyCombine(publicKeys, compressed) {\n var keys = [];\n publicKeys.forEach(function (publicKey) {\n keys.push(Uint8Array.from(publicKey));\n });\n\n return Buffer.from(secp256k1.publicKeyCombine(keys, compressed));\n};\n\n/**\n * Convert a signature to a normalized lower-S form.\n * @method signatureNormalize\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureNormalize = function signatureNormalize(signature) {\n return Buffer.from(secp256k1.signatureNormalize(Uint8Array.from(signature)));\n};\n\n/**\n * Serialize an ECDSA signature in DER format.\n * @method signatureExport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureExport = function signatureExport(signature) {\n return Buffer.from(secp256k1.signatureExport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImport = function signatureImport(signature) {\n return Buffer.from(secp256k1.signatureImport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (not follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImportLax\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImportLax = function signatureImportLax(signature) {\n // signatureImportLax method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure that signature is greater than 0\n if (signature.length === 0) {\n throw new RangeError('signature length is invalid');\n }\n\n var sigObj = der.signatureImportLax(signature);\n if (sigObj === null) {\n throw new Error(\"couldn't parse DER signature\");\n }\n\n return secp256k1v3.signatureImport(sigObj);\n};\n\n/**\n * Create an ECDSA signature. Always return low-S signature.\n * @method sign\n * @param {Buffer} message\n * @param {Buffer} privateKey\n * @param {Object} options\n * @return {Buffer}\n */\nvar sign = function sign(message, privateKey, options) {\n if (options === null) {\n throw new TypeError('options should be an Object');\n }\n\n var signOptions = void 0;\n\n if (options) {\n signOptions = {};\n\n if (options.data === null) {\n throw new TypeError('options.data should be a Buffer');\n }\n\n if (options.data) {\n // validate option.data length\n if (options.data.length !== 32) {\n throw new RangeError('options.data length is invalid');\n }\n\n signOptions.data = new Uint8Array(options.data);\n }\n\n if (options.noncefn === null) {\n throw new TypeError('options.noncefn should be a Function');\n }\n\n if (options.noncefn) {\n // convert option.noncefn function signature\n signOptions.noncefn = function (message, privateKey, algo, data, attempt) {\n var bufferAlgo = algo != null ? Buffer.from(algo) : null;\n var bufferData = data != null ? Buffer.from(data) : null;\n\n var buffer = Buffer.from('');\n\n if (options.noncefn) {\n buffer = options.noncefn(Buffer.from(message), Buffer.from(privateKey), bufferAlgo, bufferData, attempt);\n }\n\n return Uint8Array.from(buffer);\n };\n }\n }\n\n var sig = secp256k1.ecdsaSign(Uint8Array.from(message), Uint8Array.from(privateKey), signOptions);\n\n return {\n signature: Buffer.from(sig.signature),\n recovery: sig.recid\n };\n};\n\n/**\n * Verify an ECDSA signature.\n * @method verify\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar verify = function verify(message, signature, publicKey) {\n // note: secp256k1 v4 verify method has a different argument order\n return secp256k1.ecdsaVerify(Uint8Array.from(signature), Uint8Array.from(message), publicKey);\n};\n\n/**\n * Recover an ECDSA public key from a signature.\n * @method recover\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Number} recid\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar recover = function recover(message, signature, recid, compressed) {\n // note: secp256k1 v4 recover method has a different argument order\n return Buffer.from(secp256k1.ecdsaRecover(Uint8Array.from(signature), recid, Uint8Array.from(message), compressed));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and applied sha256 to compressed public key.\n * @method ecdh\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar ecdh = function ecdh(publicKey, privateKey) {\n // note: secp256k1 v3 doesn't allow optional parameter\n return Buffer.from(secp256k1.ecdh(Uint8Array.from(publicKey), Uint8Array.from(privateKey), {}));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and return public key as result\n * @method ecdhUnsafe\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar ecdhUnsafe = function ecdhUnsafe(publicKey, privateKey, compressed) {\n // ecdhUnsafe method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure valid publicKey length\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n throw new RangeError('public key length is invalid');\n }\n\n // ensure valid privateKey length\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.ecdhUnsafe(Uint8Array.from(publicKey), Uint8Array.from(privateKey), compressed));\n};\n\nmodule.exports = {\n privateKeyVerify: privateKeyVerify,\n privateKeyExport: privateKeyExport,\n privateKeyImport: privateKeyImport,\n privateKeyNegate: privateKeyNegate,\n privateKeyModInverse: privateKeyModInverse,\n privateKeyTweakAdd: privateKeyTweakAdd,\n privateKeyTweakMul: privateKeyTweakMul,\n\n publicKeyCreate: publicKeyCreate,\n publicKeyConvert: publicKeyConvert,\n publicKeyVerify: publicKeyVerify,\n publicKeyTweakAdd: publicKeyTweakAdd,\n publicKeyTweakMul: publicKeyTweakMul,\n publicKeyCombine: publicKeyCombine,\n\n signatureNormalize: signatureNormalize,\n signatureExport: signatureExport,\n signatureImport: signatureImport,\n signatureImportLax: signatureImportLax,\n\n sign: sign,\n verify: verify,\n recover: recover,\n\n ecdh: ecdh,\n ecdhUnsafe: ecdhUnsafe\n};","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n","var assert = require('assert')\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = require('crypto')\nvar bs58check = require('bs58check')\nvar secp256k1 = require('secp256k1')\n\nvar MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')\nvar HARDENED_OFFSET = 0x80000000\nvar LEN = 78\n\n// Bitcoin hardcoded by default, can use package `coininfo` for others\nvar BITCOIN_VERSIONS = {private: 0x0488ADE4, public: 0x0488B21E}\n\nfunction HDKey (versions) {\n this.versions = versions || BITCOIN_VERSIONS\n this.depth = 0\n this.index = 0\n this._privateKey = null\n this._publicKey = null\n this.chainCode = null\n this._fingerprint = 0\n this.parentFingerprint = 0\n}\n\nObject.defineProperty(HDKey.prototype, 'fingerprint', { get: function () { return this._fingerprint } })\nObject.defineProperty(HDKey.prototype, 'identifier', { get: function () { return this._identifier } })\nObject.defineProperty(HDKey.prototype, 'pubKeyHash', { get: function () { return this.identifier } })\n\nObject.defineProperty(HDKey.prototype, 'privateKey', {\n get: function () {\n return this._privateKey\n },\n set: function (value) {\n assert.equal(value.length, 32, 'Private key must be 32 bytes.')\n assert(secp256k1.privateKeyVerify(value) === true, 'Invalid private key')\n\n this._privateKey = value\n this._publicKey = Buffer.from(secp256k1.publicKeyCreate(value, true))\n this._identifier = hash160(this.publicKey)\n this._fingerprint = this._identifier.slice(0, 4).readUInt32BE(0)\n }\n})\n\nObject.defineProperty(HDKey.prototype, 'publicKey', {\n get: function () {\n return this._publicKey\n },\n set: function (value) {\n assert(value.length === 33 || value.length === 65, 'Public key must be 33 or 65 bytes.')\n assert(secp256k1.publicKeyVerify(value) === true, 'Invalid public key')\n\n this._publicKey = Buffer.from(secp256k1.publicKeyConvert(value, true)) // force compressed point\n this._identifier = hash160(this.publicKey)\n this._fingerprint = this._identifier.slice(0, 4).readUInt32BE(0)\n this._privateKey = null\n }\n})\n\nObject.defineProperty(HDKey.prototype, 'privateExtendedKey', {\n get: function () {\n if (this._privateKey) return bs58check.encode(serialize(this, this.versions.private, Buffer.concat([Buffer.alloc(1, 0), this.privateKey])))\n else return null\n }\n})\n\nObject.defineProperty(HDKey.prototype, 'publicExtendedKey', {\n get: function () {\n return bs58check.encode(serialize(this, this.versions.public, this.publicKey))\n }\n})\n\nHDKey.prototype.derive = function (path) {\n if (path === 'm' || path === 'M' || path === \"m'\" || path === \"M'\") {\n return this\n }\n\n var entries = path.split('/')\n var hdkey = this\n entries.forEach(function (c, i) {\n if (i === 0) {\n assert(/^[mM]{1}/.test(c), 'Path must start with \"m\" or \"M\"')\n return\n }\n\n var hardened = (c.length > 1) && (c[c.length - 1] === \"'\")\n var childIndex = parseInt(c, 10) // & (HARDENED_OFFSET - 1)\n assert(childIndex < HARDENED_OFFSET, 'Invalid index')\n if (hardened) childIndex += HARDENED_OFFSET\n\n hdkey = hdkey.deriveChild(childIndex)\n })\n\n return hdkey\n}\n\nHDKey.prototype.deriveChild = function (index) {\n var isHardened = index >= HARDENED_OFFSET\n var indexBuffer = Buffer.allocUnsafe(4)\n indexBuffer.writeUInt32BE(index, 0)\n\n var data\n\n if (isHardened) { // Hardened child\n assert(this.privateKey, 'Could not derive hardened child key')\n\n var pk = this.privateKey\n var zb = Buffer.alloc(1, 0)\n pk = Buffer.concat([zb, pk])\n\n // data = 0x00 || ser256(kpar) || ser32(index)\n data = Buffer.concat([pk, indexBuffer])\n } else { // Normal child\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n data = Buffer.concat([this.publicKey, indexBuffer])\n }\n\n var I = crypto.createHmac('sha512', this.chainCode).update(data).digest()\n var IL = I.slice(0, 32)\n var IR = I.slice(32)\n\n var hd = new HDKey(this.versions)\n\n // Private parent key -> private child key\n if (this.privateKey) {\n // ki = parse256(IL) + kpar (mod n)\n try {\n hd.privateKey = Buffer.from(secp256k1.privateKeyTweakAdd(Buffer.from(this.privateKey), IL))\n // throw if IL >= n || (privateKey + IL) === 0\n } catch (err) {\n // In case parse256(IL) >= n or ki == 0, one should proceed with the next value for i\n return this.deriveChild(index + 1)\n }\n // Public parent key -> public child key\n } else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n try {\n hd.publicKey = Buffer.from(secp256k1.publicKeyTweakAdd(Buffer.from(this.publicKey), IL, true))\n // throw if IL >= n || (g**IL + publicKey) is infinity\n } catch (err) {\n // In case parse256(IL) >= n or Ki is the point at infinity, one should proceed with the next value for i\n return this.deriveChild(index + 1)\n }\n }\n\n hd.chainCode = IR\n hd.depth = this.depth + 1\n hd.parentFingerprint = this.fingerprint// .readUInt32BE(0)\n hd.index = index\n\n return hd\n}\n\nHDKey.prototype.sign = function (hash) {\n return Buffer.from(secp256k1.ecdsaSign(hash, this.privateKey).signature)\n}\n\nHDKey.prototype.verify = function (hash, signature) {\n return secp256k1.ecdsaVerify(\n Uint8Array.from(signature),\n Uint8Array.from(hash),\n Uint8Array.from(this.publicKey)\n )\n}\n\nHDKey.prototype.wipePrivateData = function () {\n if (this._privateKey) crypto.randomBytes(this._privateKey.length).copy(this._privateKey)\n this._privateKey = null\n return this\n}\n\nHDKey.prototype.toJSON = function () {\n return {\n xpriv: this.privateExtendedKey,\n xpub: this.publicExtendedKey\n }\n}\n\nHDKey.fromMasterSeed = function (seedBuffer, versions) {\n var I = crypto.createHmac('sha512', MASTER_SECRET).update(seedBuffer).digest()\n var IL = I.slice(0, 32)\n var IR = I.slice(32)\n\n var hdkey = new HDKey(versions)\n hdkey.chainCode = IR\n hdkey.privateKey = IL\n\n return hdkey\n}\n\nHDKey.fromExtendedKey = function (base58key, versions) {\n // => version(4) || depth(1) || fingerprint(4) || index(4) || chain(32) || key(33)\n versions = versions || BITCOIN_VERSIONS\n var hdkey = new HDKey(versions)\n\n var keyBuffer = bs58check.decode(base58key)\n\n var version = keyBuffer.readUInt32BE(0)\n assert(version === versions.private || version === versions.public, 'Version mismatch: does not match private or public')\n\n hdkey.depth = keyBuffer.readUInt8(4)\n hdkey.parentFingerprint = keyBuffer.readUInt32BE(5)\n hdkey.index = keyBuffer.readUInt32BE(9)\n hdkey.chainCode = keyBuffer.slice(13, 45)\n\n var key = keyBuffer.slice(45)\n if (key.readUInt8(0) === 0) { // private\n assert(version === versions.private, 'Version mismatch: version does not match private')\n hdkey.privateKey = key.slice(1) // cut off first 0x0 byte\n } else {\n assert(version === versions.public, 'Version mismatch: version does not match public')\n hdkey.publicKey = key\n }\n\n return hdkey\n}\n\nHDKey.fromJSON = function (obj) {\n return HDKey.fromExtendedKey(obj.xpriv)\n}\n\nfunction serialize (hdkey, version, key) {\n // => version(4) || depth(1) || fingerprint(4) || index(4) || chain(32) || key(33)\n var buffer = Buffer.allocUnsafe(LEN)\n\n buffer.writeUInt32BE(version, 0)\n buffer.writeUInt8(hdkey.depth, 4)\n\n var fingerprint = hdkey.depth ? hdkey.parentFingerprint : 0x00000000\n buffer.writeUInt32BE(fingerprint, 5)\n buffer.writeUInt32BE(hdkey.index, 9)\n\n hdkey.chainCode.copy(buffer, 13)\n key.copy(buffer, 45)\n\n return buffer\n}\n\nfunction hash160 (buf) {\n var sha = crypto.createHash('sha256').update(buf).digest()\n return crypto.createHash('ripemd160').update(sha).digest()\n}\n\nHDKey.HARDENED_OFFSET = HARDENED_OFFSET\nmodule.exports = HDKey\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar 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 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 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');\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\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","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 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 hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n 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 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 utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","'use strict'\n\nvar createHash = require('create-hash')\nvar bs58checkBase = require('./base')\n\n// SHA256(SHA256(buffer))\nfunction sha256x2 (buffer) {\n var tmp = createHash('sha256').update(buffer).digest()\n return createHash('sha256').update(tmp).digest()\n}\n\nmodule.exports = bs58checkBase(sha256x2)\n","'use strict'\n\nvar base58 = require('bs58')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (checksumFn) {\n // Encode a buffer as a base58-check encoded string\n function encode (payload) {\n var checksum = checksumFn(payload)\n\n return base58.encode(Buffer.concat([\n payload,\n checksum\n ], payload.length + 4))\n }\n\n function decodeRaw (buffer) {\n var payload = buffer.slice(0, -4)\n var checksum = buffer.slice(-4)\n var newChecksum = checksumFn(payload)\n\n if (checksum[0] ^ newChecksum[0] |\n checksum[1] ^ newChecksum[1] |\n checksum[2] ^ newChecksum[2] |\n checksum[3] ^ newChecksum[3]) return\n\n return payload\n }\n\n // Decode a base58-check encoded string to a buffer, no result if checksum is wrong\n function decodeUnsafe (string) {\n var buffer = base58.decodeUnsafe(string)\n if (!buffer) return\n\n return decodeRaw(buffer)\n }\n\n function decode (string) {\n var buffer = base58.decode(string)\n var payload = decodeRaw(buffer, checksumFn)\n if (!payload) throw new Error('Invalid checksum')\n return payload\n }\n\n return {\n encode: encode,\n decode: decode,\n decodeUnsafe: decodeUnsafe\n }\n}\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseFilter = exports.parseFilterRange = exports.parseFilterDetails = void 0;\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nfunction parseFilterDetails(filter) {\n // `filter.address` may be a single address or an array\n const addresses = filter.address\n ? (Array.isArray(filter.address)\n ? filter.address\n : [filter.address]).map(a => ethereum_address_1.Address.from(a.toLowerCase()).toBuffer())\n : [];\n const topics = filter.topics ? filter.topics : [];\n return { addresses, topics };\n}\nexports.parseFilterDetails = parseFilterDetails;\nfunction parseFilterRange(filter, blockchain) {\n const latestBlock = blockchain.blocks.latest.header.number;\n const fromBlock = blockchain.blocks.getEffectiveNumber(filter.fromBlock || ethereum_utils_1.Tag.LATEST);\n const latestBlockNumber = latestBlock.toNumber();\n const toBlock = blockchain.blocks.getEffectiveNumber(filter.toBlock || ethereum_utils_1.Tag.LATEST);\n let toBlockNumber;\n // don't search after the \"latest\" block, unless it's \"pending\", of course.\n if (toBlock > latestBlock) {\n toBlockNumber = latestBlockNumber;\n }\n else {\n toBlockNumber = toBlock.toNumber();\n }\n return {\n fromBlock,\n toBlock,\n toBlockNumber\n };\n}\nexports.parseFilterRange = parseFilterRange;\nfunction parseFilter(filter = { address: [], topics: [] }, blockchain) {\n const { addresses, topics } = parseFilterDetails(filter);\n const { fromBlock, toBlock, toBlockNumber } = parseFilterRange(filter, blockchain);\n return {\n addresses,\n fromBlock,\n toBlock,\n toBlockNumber,\n topics\n };\n}\nexports.parseFilter = parseFilter;\n//# sourceMappingURL=filter-parsing.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChainOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nconst HARDFORKS = [\n \"constantinople\",\n \"byzantium\",\n \"petersburg\",\n \"istanbul\",\n \"muirGlacier\",\n \"berlin\"\n];\nexports.ChainOptions = {\n allowUnlimitedContractSize: {\n normalize: helpers_1.normalize,\n cliDescription: \"Allows unlimited contract sizes while debugging. Setting this to `true` will cause ganache to behave differently than production environments.\",\n default: () => false,\n legacyName: \"allowUnlimitedContractSize\",\n cliType: \"boolean\"\n },\n asyncRequestProcessing: {\n normalize: helpers_1.normalize,\n cliDescription: \"When set to `false` only one request will be processed at a time.\",\n default: () => true,\n legacyName: \"asyncRequestProcessing\",\n cliType: \"boolean\"\n },\n chainId: {\n normalize: helpers_1.normalize,\n cliDescription: \"The currently configured chain id.\",\n default: () => 1337,\n legacyName: \"chainId\",\n cliType: \"number\"\n },\n networkId: {\n normalize: helpers_1.normalize,\n cliDescription: \"The id of the network returned by the RPC method `net_version`.\",\n default: () => Date.now(),\n defaultDescription: \"System time at process start or Network ID of forked blockchain if configured.\",\n legacyName: \"network_id\",\n cliAliases: [\"i\", \"networkId\"],\n cliType: \"number\"\n },\n time: {\n normalize: rawInput => {\n if (typeof rawInput === \"string\") {\n return new Date(rawInput);\n }\n else {\n return rawInput;\n }\n },\n cliDescription: \"Date that the first block should start.\",\n legacyName: \"time\",\n cliAliases: [\"t\", \"time\"],\n cliType: \"number\"\n },\n hardfork: {\n normalize: helpers_1.normalize,\n cliDescription: \"Set the hardfork rules for the EVM.\",\n default: () => \"berlin\",\n legacyName: \"hardfork\",\n cliAliases: [\"k\", \"hardfork\"],\n cliType: \"string\",\n cliChoices: HARDFORKS\n },\n vmErrorsOnRPCResponse: {\n normalize: helpers_1.normalize,\n cliDescription: \"Whether to report runtime errors from EVM code as RPC errors.\",\n default: () => false,\n legacyName: \"vmErrorsOnRPCResponse\",\n cliType: \"boolean\"\n }\n};\n//# sourceMappingURL=chain-options.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DatabaseOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nexports.DatabaseOptions = {\n db: {\n normalize: helpers_1.normalize,\n cliDescription: \"Specify an alternative database instance, like MemDOWN\",\n disableInCLI: true,\n legacyName: \"db\",\n conflicts: [\"dbPath\"]\n },\n dbPath: {\n normalize: helpers_1.normalize,\n cliDescription: \"Specify a path to a directory to save the chain database.\",\n legacyName: \"db_path\",\n cliAliases: [\"db\", \"db_path\"],\n cliType: \"string\",\n conflicts: [\"db\"]\n }\n};\n//# sourceMappingURL=database-options.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggingOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nconst logger = { log: console.log };\nexports.LoggingOptions = {\n debug: {\n normalize: helpers_1.normalize,\n cliDescription: \"Set to `true` to log EVM opcodes.\",\n default: () => false,\n legacyName: \"debug\",\n cliType: \"boolean\"\n },\n logger: {\n normalize: helpers_1.normalize,\n cliDescription: \"An object, like `console`, that implements a `log` function.\",\n disableInCLI: true,\n default: () => logger,\n legacyName: \"logger\"\n },\n verbose: {\n normalize: helpers_1.normalize,\n cliDescription: \"Set to `true` to log all RPC requests and responses.\",\n default: () => false,\n legacyName: \"verbose\",\n cliAliases: [\"v\", \"verbose\"],\n cliType: \"boolean\"\n },\n quiet: {\n normalize: helpers_1.normalize,\n cliDescription: \"Set to `true` to disable logging.\",\n default: () => false,\n cliAliases: [\"q\", \"quiet\"],\n cliType: \"boolean\"\n }\n};\n//# sourceMappingURL=logging-options.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MinerOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\n/**\n * Attempts to convert strings that don't start with `0x` to a BigInt\n *\n * @param str a string that represents a bigint, number, or hex number\n */\nconst toBigIntOrString = (str) => {\n if (str.startsWith(\"0x\")) {\n return str;\n }\n else {\n return BigInt(str);\n }\n};\nexports.MinerOptions = {\n blockTime: {\n normalize: rawInput => {\n if (rawInput < 0) {\n throw new Error(\"miner.blockTime must be 0 or a positive number.\");\n }\n return rawInput;\n },\n cliDescription: 'Sets the `blockTime` in seconds for automatic mining. A blockTime of `0` enables \"instamine mode\", where new executable transactions will be mined instantly.',\n default: () => 0,\n legacyName: \"blockTime\",\n cliAliases: [\"b\", \"blockTime\"],\n cliType: \"number\"\n },\n gasPrice: {\n normalize: utils_1.Quantity.from,\n cliDescription: \"Sets the default gas price in WEI for transactions if not otherwise specified.\",\n default: () => utils_1.Quantity.from(2000000000),\n legacyName: \"gasPrice\",\n cliAliases: [\"g\", \"gasPrice\"],\n cliType: \"string\",\n cliCoerce: toBigIntOrString\n },\n blockGasLimit: {\n normalize: utils_1.Quantity.from,\n cliDescription: \"Sets the block gas limit in WEI.\",\n default: () => utils_1.Quantity.from(12000000),\n legacyName: \"gasLimit\",\n cliAliases: [\"l\", \"gasLimit\"],\n cliType: \"string\",\n cliCoerce: toBigIntOrString\n },\n defaultTransactionGasLimit: {\n normalize: rawType => rawType === \"estimate\" ? utils_1.RPCQUANTITY_EMPTY : utils_1.Quantity.from(rawType),\n cliDescription: 'Sets the default transaction gas limit in WEI. Set to \"estimate\" to use an estimate (slows down transaction execution by 40%+).',\n default: () => utils_1.Quantity.from(90000),\n cliType: \"string\",\n cliCoerce: toBigIntOrString\n },\n difficulty: {\n normalize: utils_1.Quantity.from,\n cliDescription: \"Sets the block difficulty.\",\n default: () => utils_1.RPCQUANTITY_ONE,\n cliType: \"number\"\n },\n callGasLimit: {\n normalize: utils_1.Quantity.from,\n cliDescription: \"Sets the transaction gas limit in WEI for `eth_call` and `eth_estimateGas` calls.\",\n default: () => utils_1.Quantity.from(Number.MAX_SAFE_INTEGER),\n legacyName: \"callGasLimit\",\n cliType: \"string\",\n cliCoerce: toBigIntOrString\n },\n legacyInstamine: {\n normalize: helpers_1.normalize,\n cliDescription: \"Enables legacy instamine mode, where transactions are fully mined before the transaction's hash is returned to the caller.\",\n default: () => false,\n legacyName: \"legacyInstamine\",\n cliType: \"boolean\"\n },\n coinbase: {\n normalize: rawType => {\n return typeof rawType === \"number\" ? rawType : ethereum_address_1.Address.from(rawType);\n },\n cliDescription: \"Sets the address where mining rewards will go.\",\n default: () => ethereum_address_1.Address.from(utils_1.ACCOUNT_ZERO)\n },\n extraData: {\n normalize: (extra) => {\n const bytes = utils_1.Data.from(extra);\n if (bytes.toBuffer().length > 32) {\n throw new Error(`extra exceeds max length. ${bytes.toBuffer().length} > 32`);\n }\n return bytes;\n },\n cliDescription: \"Set the extraData block header field a miner can include.\",\n default: () => utils_1.Data.from(utils_1.BUFFER_EMPTY),\n cliType: \"string\"\n }\n};\n//# sourceMappingURL=miner-options.js.map","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/czech.json');\n wordlists.czech = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForkOptions = void 0;\nconst helpers_1 = require(\"./helpers\");\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst url_1 = require(\"url\");\nconst { version } = { \"version\": \"0.1.1-internal.1341\" };\n// we aren't going to treat block numbers as a bigint, so we don't want to\n// accept block numbers we can't add to\nconst MAX_BLOCK_NUMBER = Math.floor(Number.MAX_SAFE_INTEGER / 2);\nconst reColonSplit = /:\\s?(?:.+)/;\nfunction coerceHeaders(headers, input) {\n // split *1* time on the first colon, this also ignores leading whitespace\n // from the value per RFC7230\n const [name, value] = input.split(reColonSplit);\n headers.push({ name, value });\n return headers;\n}\nconst ALLOWED_PROTOCOLS = [\"ws:\", \"wss:\", \"http:\", \"https:\"];\nconst arrayToOxfordList = (arr, conjunction = \"and\") => {\n const last = arr.pop();\n switch (arr.length) {\n case 0:\n return \"\";\n case 1:\n return last;\n case 2:\n return arr[0] + ` ${conjunction} ` + last;\n default:\n return arr.join(\", \") + `, ${conjunction} ` + last;\n }\n};\nexports.ForkOptions = {\n // url's definition _must_ come before blockNumber, username, and password\n // as the defaults are processed in order, and they rely on the `fork.url`\n url: {\n normalize: rawInput => {\n if (typeof rawInput !== \"string\")\n return;\n let url = new url_1.URL(rawInput);\n const path = url.pathname + url.search;\n const lastIndex = path.lastIndexOf(\"@\");\n // pull the blockNumber out of the URL\n if (lastIndex !== -1) {\n // remove everything after the last @\n url = new url_1.URL(path.substr(0, lastIndex), url);\n const blockNumber = path.substr(lastIndex + 1);\n if (blockNumber && blockNumber !== ethereum_utils_1.Tag.LATEST) {\n // don't use parseInt because strings like `\"123abc\"` parse\n // to `123`, and there is probably an error on the user's side we'd\n // want to uncover.\n const asNum = blockNumber - 0;\n // don't allow invalid, negative, or decimals\n if (isNaN(asNum) ||\n asNum < 0 ||\n (asNum | 0) !== asNum ||\n asNum > MAX_BLOCK_NUMBER) {\n console.warn(`Ignoring invalid block number in fork url: \"${blockNumber}\". Block number must be an integer from [0 - ${MAX_BLOCK_NUMBER}].`);\n }\n else {\n url._blockNumber = asNum;\n }\n }\n if (!ALLOWED_PROTOCOLS.includes(url.protocol)) {\n throw new Error(`Invalid protocol for fork url: ${url.protocol}. Supported protocols are: ${arrayToOxfordList(ALLOWED_PROTOCOLS)}.`);\n }\n }\n return url;\n },\n cliDescription: `Fork from another currently running Ethereum client at a given block. Input should be the URL of the node, e.g. \\`\"http://localhost:1337\"\\`. You can optionally specify the block to fork from using an @ sign: \\`\"http://localhost:1337@8675309\"\\`.\n\nYou can specify Basic Authentication credentials in the URL as well. e.g., \\`\"wss://user:password@example.com/\"\\`. If you need to use an Infura Project Secret, you would use it like this: \\`\"wss://:{YOUR-PROJECT-SECRET}@mainnet.infura.com/...\"\\`\n\nAlternatively, you can use the \\`fork.username\\` and \\`fork.password\\` options.`,\n legacyName: \"fork\",\n cliAliases: [\"f\", \"fork\"]\n },\n provider: {\n normalize: rawInput => {\n // if rawInput is a string it will be handled by the `url` handler\n if (typeof rawInput === \"string\")\n return;\n return rawInput;\n },\n cliDescription: \"Specify an EIP-1193 provider to use instead of a url.\",\n disableInCLI: true,\n legacyName: \"fork\"\n },\n blockNumber: {\n normalize: helpers_1.normalize,\n cliDescription: \"Block number the provider should fork from.\",\n legacyName: \"fork_block_number\",\n default: ({ url, provider }) => {\n if (url) {\n // use the url's _blockNumber, if present, otherwise use \"latest\"\n if (url._blockNumber) {\n return url._blockNumber;\n }\n else {\n return ethereum_utils_1.Tag.LATEST;\n }\n }\n else if (provider) {\n return ethereum_utils_1.Tag.LATEST;\n }\n else {\n return;\n }\n },\n defaultDescription: `\"${ethereum_utils_1.Tag.LATEST}\"`\n //implies: [\"url\"]\n },\n username: {\n normalize: helpers_1.normalize,\n cliDescription: `* Username to use for Basic Authentication. Does not require setting \\`fork.password\\`.\n \nWhen combined with \\`fork.password\\`, is shorthand for \\`fork: { headers: { \"Authorization\": \"Basic {ENCODED-BASIC-HEADER}\" } }\\`\n\nIf the \\`fork.headers\\` option specifies an \"Authorization\" header, it will be be inserted _after_ this Basic token.`,\n default: ({ url }) => {\n // use the url's username, if present\n if (url) {\n if (url.username) {\n return url.username;\n }\n }\n },\n defaultDescription: \"\"\n //implies: [\"url\"]\n },\n password: {\n normalize: helpers_1.normalize,\n cliDescription: `Password to use for Basic Authentication. Does not require setting \\`fork.username\\`.\n\nWhen combined with \\`fork.username\\`, is shorthand for \\`fork: { headers: { \"Authorization\": \"Basic {ENCODED-BASIC-HEADER}\" } }\\`\n\nIf the \\`fork.headers\\` option specifies an \"Authorization\" header, it will be be inserted _after_ this Basic token.`,\n default: ({ url }) => {\n // use the url's password, if present\n if (url) {\n if (url.password) {\n return url.password;\n }\n }\n },\n defaultDescription: \"\"\n //implies: [\"url\"]\n },\n jwt: {\n normalize: helpers_1.normalize,\n cliDescription: `_Encoded_ JSON Web Token (JWT) used for authenticating to some servers.\n\nShorthand for \\`fork: { headers: { \"Authorization\": \"Bearer {YOUR-ENCODED-JWT}\" } }\\`\n\n If the \\`fork.headers\\` option specifies an \"Authorization\" header, it will be be inserted _after_ the JWT Bearer token.`\n //implies: [\"url\"]\n },\n userAgent: {\n normalize: helpers_1.normalize,\n cliDescription: `The User-Agent header sent to the fork on each request.\n\nSent as Api-User-Agent when used in the browser.\n \nWill be overridden by a \\`\"User-Agent\"\\` defined in the \\`fork.headers\\` option, if provided.`,\n default: () => {\n return `Ganache/${version} (https://www.trufflesuite.com/ganache; ganachetrufflesuite.com)`;\n }\n // implies: [\"url\"]\n },\n origin: {\n normalize: helpers_1.normalize,\n cliDescription: `The Origin header sent to the fork on each request.\n\nIgnored in the browser.\n\nWill be overridden by an \\`\"Origin\"\\` value defined in the \\`fork.headers\\` option, if provided.`\n //implies: [\"url\"]\n },\n headers: {\n normalize: helpers_1.normalize,\n cliDescription: `Headers to supply on each request to the forked provider.\n\nHeaders set here override headers set by other options, unless otherwise specified.\n\nDefaults to: \\`[\"User-Agent: Ganache/VERSION (https://www.trufflesuite.com/ganache; ganachetrufflesuite.com)\"]\\``,\n cliType: \"array:string\",\n implies: [\"url\"],\n cliCoerce: rawInput => rawInput.reduce(coerceHeaders, [])\n },\n requestsPerSecond: {\n normalize(rawValue) {\n if (rawValue < 0) {\n throw new Error(`fork.requestsPerSecond is invalid: \"${rawValue}\"; must be a positive number`);\n }\n return rawValue;\n },\n default: () => 0,\n cliDescription: \"Restrict the number of requests per second sent to the fork provider. `0` means no limit is applied.\",\n cliType: \"number\"\n //implies: [\"url\"]\n }\n};\n//# sourceMappingURL=fork-options.js.map","var levelup = require('levelup')\nvar encode = require('encoding-down')\n\nfunction packager (leveldown) {\n function Level (location, options, callback) {\n if (typeof location === 'function') {\n callback = location\n } else if (typeof options === 'function') {\n callback = options\n }\n\n if (!isObject(options)) {\n options = isObject(location) ? location : {}\n }\n\n return levelup(encode(leveldown(location, options), options), options, callback)\n }\n\n function isObject (o) {\n return typeof o === 'object' && o !== null\n }\n\n ['destroy', 'repair'].forEach(function (m) {\n if (typeof leveldown[m] === 'function') {\n Level[m] = function () {\n leveldown[m].apply(leveldown, arguments)\n }\n }\n })\n\n Level.errors = levelup.errors\n\n return Level\n}\n\nmodule.exports = packager\n","var AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar inherits = require('inherits')\nvar DeferredIterator = require('./deferred-iterator')\nvar deferrables = 'put get del batch clear'.split(' ')\nvar optionalDeferrables = 'approximateSize compactRange'.split(' ')\n\nfunction DeferredLevelDOWN (db) {\n AbstractLevelDOWN.call(this, db.supports || {})\n\n // TODO (future major): remove this fallback; db must have manifest that\n // declares approximateSize and compactRange in additionalMethods.\n optionalDeferrables.forEach(function (m) {\n if (typeof db[m] === 'function' && !this.supports.additionalMethods[m]) {\n this.supports.additionalMethods[m] = true\n }\n }, this)\n\n this._db = db\n this._operations = []\n closed(this)\n}\n\ninherits(DeferredLevelDOWN, AbstractLevelDOWN)\n\nDeferredLevelDOWN.prototype.type = 'deferred-leveldown'\n\nDeferredLevelDOWN.prototype._open = function (options, callback) {\n var self = this\n\n this._db.open(options, function (err) {\n if (err) return callback(err)\n\n self._operations.forEach(function (op) {\n if (op.iterator) {\n op.iterator.setDb(self._db)\n } else {\n self._db[op.method].apply(self._db, op.args)\n }\n })\n self._operations = []\n\n open(self)\n callback()\n })\n}\n\nDeferredLevelDOWN.prototype._close = function (callback) {\n var self = this\n\n this._db.close(function (err) {\n if (err) return callback(err)\n closed(self)\n callback()\n })\n}\n\nfunction open (self) {\n deferrables.concat('iterator').forEach(function (m) {\n self['_' + m] = function () {\n return this._db[m].apply(this._db, arguments)\n }\n })\n Object.keys(self.supports.additionalMethods).forEach(function (m) {\n self[m] = function () {\n return this._db[m].apply(this._db, arguments)\n }\n })\n}\n\nfunction closed (self) {\n deferrables.forEach(function (m) {\n self['_' + m] = function () {\n this._operations.push({ method: m, args: arguments })\n }\n })\n Object.keys(self.supports.additionalMethods).forEach(function (m) {\n self[m] = function () {\n this._operations.push({ method: m, args: arguments })\n }\n })\n self._iterator = function (options) {\n var it = new DeferredIterator(self, options)\n this._operations.push({ iterator: it })\n return it\n }\n}\n\nDeferredLevelDOWN.prototype._serializeKey = function (key) {\n return key\n}\n\nDeferredLevelDOWN.prototype._serializeValue = function (value) {\n return value\n}\n\nmodule.exports = DeferredLevelDOWN\nmodule.exports.DeferredIterator = DeferredIterator\n","exports.AbstractLevelDOWN = require('./abstract-leveldown')\nexports.AbstractIterator = require('./abstract-iterator')\nexports.AbstractChainedBatch = require('./abstract-chained-batch')\n","var xtend = require('xtend')\nvar supports = require('level-supports')\nvar Buffer = require('buffer').Buffer\nvar AbstractIterator = require('./abstract-iterator')\nvar AbstractChainedBatch = require('./abstract-chained-batch')\nvar nextTick = require('./next-tick')\nvar hasOwnProperty = Object.prototype.hasOwnProperty\nvar rangeOptions = 'start end gt gte lt lte'.split(' ')\n\nfunction AbstractLevelDOWN (manifest) {\n this.status = 'new'\n\n // TODO (next major): make this mandatory\n this.supports = supports(manifest, {\n status: true\n })\n}\n\nAbstractLevelDOWN.prototype.open = function (options, callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('open() requires a callback argument')\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n this.status = 'opening'\n this._open(options, function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'open'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._open = function (options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.close = function (callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof callback !== 'function') {\n throw new Error('close() requires a callback argument')\n }\n\n this.status = 'closing'\n this._close(function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'closed'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._close = function (callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.get = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('get() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.asBuffer = options.asBuffer !== false\n\n this._get(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._get = function (key, options, callback) {\n nextTick(function () { callback(new Error('NotFound')) })\n}\n\nAbstractLevelDOWN.prototype.put = function (key, value, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('put() requires a callback argument')\n }\n\n var err = this._checkKey(key) || this._checkValue(value)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n value = this._serializeValue(value)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._put(key, value, options, callback)\n}\n\nAbstractLevelDOWN.prototype._put = function (key, value, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.del = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('del() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._del(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._del = function (key, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.batch = function (array, options, callback) {\n if (!arguments.length) return this._chainedBatch()\n\n if (typeof options === 'function') callback = options\n\n if (typeof array === 'function') callback = array\n\n if (typeof callback !== 'function') {\n throw new Error('batch(array) requires a callback argument')\n }\n\n if (!Array.isArray(array)) {\n return nextTick(callback, new Error('batch(array) requires an array argument'))\n }\n\n if (array.length === 0) {\n return nextTick(callback)\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n var serialized = new Array(array.length)\n\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] !== 'object' || array[i] === null) {\n return nextTick(callback, new Error('batch(array) element must be an object and not `null`'))\n }\n\n var e = xtend(array[i])\n\n if (e.type !== 'put' && e.type !== 'del') {\n return nextTick(callback, new Error(\"`type` must be 'put' or 'del'\"))\n }\n\n var err = this._checkKey(e.key)\n if (err) return nextTick(callback, err)\n\n e.key = this._serializeKey(e.key)\n\n if (e.type === 'put') {\n var valueErr = this._checkValue(e.value)\n if (valueErr) return nextTick(callback, valueErr)\n\n e.value = this._serializeValue(e.value)\n }\n\n serialized[i] = e\n }\n\n this._batch(serialized, options, callback)\n}\n\nAbstractLevelDOWN.prototype._batch = function (array, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.clear = function (options, callback) {\n if (typeof options === 'function') {\n callback = options\n } else if (typeof callback !== 'function') {\n throw new Error('clear() requires a callback argument')\n }\n\n options = cleanRangeOptions(this, options)\n options.reverse = !!options.reverse\n options.limit = 'limit' in options ? options.limit : -1\n\n this._clear(options, callback)\n}\n\nAbstractLevelDOWN.prototype._clear = function (options, callback) {\n // Avoid setupIteratorOptions, would serialize range options a second time.\n options.keys = true\n options.values = false\n options.keyAsBuffer = true\n options.valueAsBuffer = true\n\n var iterator = this._iterator(options)\n var emptyOptions = {}\n var self = this\n\n var next = function (err) {\n if (err) {\n return iterator.end(function () {\n callback(err)\n })\n }\n\n iterator.next(function (err, key) {\n if (err) return next(err)\n if (key === undefined) return iterator.end(callback)\n\n // This could be optimized by using a batch, but the default _clear\n // is not meant to be fast. Implementations have more room to optimize\n // if they override _clear. Note: using _del bypasses key serialization.\n self._del(key, emptyOptions, next)\n })\n }\n\n next()\n}\n\nAbstractLevelDOWN.prototype._setupIteratorOptions = function (options) {\n options = cleanRangeOptions(this, options)\n\n options.reverse = !!options.reverse\n options.keys = options.keys !== false\n options.values = options.values !== false\n options.limit = 'limit' in options ? options.limit : -1\n options.keyAsBuffer = options.keyAsBuffer !== false\n options.valueAsBuffer = options.valueAsBuffer !== false\n\n return options\n}\n\nfunction cleanRangeOptions (db, options) {\n var result = {}\n\n for (var k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n\n var opt = options[k]\n\n if (isRangeOption(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n opt = db._serializeKey(opt)\n }\n\n result[k] = opt\n }\n\n return result\n}\n\nfunction isRangeOption (k) {\n return rangeOptions.indexOf(k) !== -1\n}\n\nAbstractLevelDOWN.prototype.iterator = function (options) {\n if (typeof options !== 'object' || options === null) options = {}\n options = this._setupIteratorOptions(options)\n return this._iterator(options)\n}\n\nAbstractLevelDOWN.prototype._iterator = function (options) {\n return new AbstractIterator(this)\n}\n\nAbstractLevelDOWN.prototype._chainedBatch = function () {\n return new AbstractChainedBatch(this)\n}\n\nAbstractLevelDOWN.prototype._serializeKey = function (key) {\n return key\n}\n\nAbstractLevelDOWN.prototype._serializeValue = function (value) {\n return value\n}\n\nAbstractLevelDOWN.prototype._checkKey = function (key) {\n if (key === null || key === undefined) {\n return new Error('key cannot be `null` or `undefined`')\n } else if (Buffer.isBuffer(key) && key.length === 0) {\n return new Error('key cannot be an empty Buffer')\n } else if (key === '') {\n return new Error('key cannot be an empty String')\n } else if (Array.isArray(key) && key.length === 0) {\n return new Error('key cannot be an empty Array')\n }\n}\n\nAbstractLevelDOWN.prototype._checkValue = function (value) {\n if (value === null || value === undefined) {\n return new Error('value cannot be `null` or `undefined`')\n }\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractLevelDOWN.prototype._nextTick = nextTick\n\nmodule.exports = AbstractLevelDOWN\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar inherits = require('inherits')\n\nfunction DeferredIterator (db, options) {\n AbstractIterator.call(this, db)\n\n this._options = options\n this._iterator = null\n this._operations = []\n}\n\ninherits(DeferredIterator, AbstractIterator)\n\nDeferredIterator.prototype.setDb = function (db) {\n var it = this._iterator = db.iterator(this._options)\n this._operations.forEach(function (op) {\n it[op.method].apply(it, op.args)\n })\n}\n\nDeferredIterator.prototype._operation = function (method, args) {\n if (this._iterator) return this._iterator[method].apply(this._iterator, args)\n this._operations.push({ method: method, args: args })\n}\n\n'next end'.split(' ').forEach(function (m) {\n DeferredIterator.prototype['_' + m] = function () {\n this._operation(m, arguments)\n }\n})\n\n// Must defer seek() rather than _seek() because it requires db._serializeKey to be available\nDeferredIterator.prototype.seek = function () {\n this._operation('seek', arguments)\n}\n\nmodule.exports = DeferredIterator\n","var inherits = require('inherits')\nvar Readable = require('readable-stream').Readable\nvar extend = require('xtend')\n\nmodule.exports = ReadStream\ninherits(ReadStream, Readable)\n\nfunction ReadStream (iterator, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(iterator, options)\n options = options || {}\n Readable.call(this, extend(options, {\n objectMode: true\n }))\n this._iterator = iterator\n this._options = options\n this.on('end', this.destroy.bind(this, null, null))\n}\n\nReadStream.prototype._read = function () {\n var self = this\n var options = this._options\n if (this.destroyed) return\n\n this._iterator.next(function (err, key, value) {\n if (self.destroyed) return\n if (err) return self.destroy(err)\n\n if (key === undefined && value === undefined) {\n self.push(null)\n } else if (options.keys !== false && options.values === false) {\n self.push(key)\n } else if (options.keys === false && options.values !== false) {\n self.push(value)\n } else {\n self.push({ key: key, value: value })\n }\n })\n}\n\nReadStream.prototype._destroy = function (err, callback) {\n this._iterator.end(function (err2) {\n callback(err || err2)\n })\n}\n","var WriteError = require('level-errors').WriteError\nvar promisify = require('./promisify')\nvar getCallback = require('./common').getCallback\nvar getOptions = require('./common').getOptions\n\nfunction Batch (levelup) {\n // TODO (next major): remove this._levelup alias\n this.db = this._levelup = levelup\n this.batch = levelup.db.batch()\n this.ops = []\n this.length = 0\n}\n\nBatch.prototype.put = function (key, value) {\n try {\n this.batch.put(key, value)\n } catch (e) {\n throw new WriteError(e)\n }\n\n this.ops.push({ type: 'put', key: key, value: value })\n this.length++\n\n return this\n}\n\nBatch.prototype.del = function (key) {\n try {\n this.batch.del(key)\n } catch (err) {\n throw new WriteError(err)\n }\n\n this.ops.push({ type: 'del', key: key })\n this.length++\n\n return this\n}\n\nBatch.prototype.clear = function () {\n try {\n this.batch.clear()\n } catch (err) {\n throw new WriteError(err)\n }\n\n this.ops = []\n this.length = 0\n\n return this\n}\n\nBatch.prototype.write = function (options, callback) {\n var levelup = this._levelup\n var ops = this.ops\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n options = getOptions(options)\n\n try {\n this.batch.write(options, function (err) {\n if (err) { return callback(new WriteError(err)) }\n levelup.emit('batch', ops)\n callback()\n })\n } catch (err) {\n throw new WriteError(err)\n }\n\n return promise\n}\n\nmodule.exports = Batch\n","var prr = require('prr')\n\nfunction init (type, message, cause) {\n if (!!message && typeof message != 'string') {\n message = message.message || message.name\n }\n prr(this, {\n type : type\n , name : type\n // can be passed just a 'cause'\n , cause : typeof message != 'string' ? message : cause\n , message : message\n }, 'ewr')\n}\n\n// generic prototype, not intended to be actually used - helpful for `instanceof`\nfunction CustomError (message, cause) {\n Error.call(this)\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, this.constructor)\n init.call(this, 'CustomError', message, cause)\n}\n\nCustomError.prototype = new Error()\n\nfunction createError (errno, type, proto) {\n var err = function (message, cause) {\n init.call(this, type, message, cause)\n //TODO: the specificity here is stupid, errno should be available everywhere\n if (type == 'FilesystemError') {\n this.code = this.cause.code\n this.path = this.cause.path\n this.errno = this.cause.errno\n this.message =\n (errno.errno[this.cause.errno]\n ? errno.errno[this.cause.errno].description\n : this.cause.message)\n + (this.cause.path ? ' [' + this.cause.path + ']' : '')\n }\n Error.call(this)\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, err)\n }\n err.prototype = !!proto ? new proto() : new CustomError()\n return err\n}\n\nmodule.exports = function (errno) {\n var ce = function (type, proto) {\n return createError(errno, type, proto)\n }\n return {\n CustomError : CustomError\n , FilesystemError : ce('FilesystemError')\n , createError : ce\n }\n}\n","var xtend = require('xtend')\nvar supports = require('level-supports')\nvar Buffer = require('buffer').Buffer\nvar AbstractIterator = require('./abstract-iterator')\nvar AbstractChainedBatch = require('./abstract-chained-batch')\nvar nextTick = require('./next-tick')\nvar hasOwnProperty = Object.prototype.hasOwnProperty\nvar rangeOptions = 'start end gt gte lt lte'.split(' ')\n\nfunction AbstractLevelDOWN (manifest) {\n this.status = 'new'\n\n // TODO (next major): make this mandatory\n this.supports = supports(manifest, {\n status: true\n })\n}\n\nAbstractLevelDOWN.prototype.open = function (options, callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('open() requires a callback argument')\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n this.status = 'opening'\n this._open(options, function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'open'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._open = function (options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.close = function (callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof callback !== 'function') {\n throw new Error('close() requires a callback argument')\n }\n\n this.status = 'closing'\n this._close(function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'closed'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._close = function (callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.get = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('get() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.asBuffer = options.asBuffer !== false\n\n this._get(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._get = function (key, options, callback) {\n nextTick(function () { callback(new Error('NotFound')) })\n}\n\nAbstractLevelDOWN.prototype.put = function (key, value, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('put() requires a callback argument')\n }\n\n var err = this._checkKey(key) || this._checkValue(value)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n value = this._serializeValue(value)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._put(key, value, options, callback)\n}\n\nAbstractLevelDOWN.prototype._put = function (key, value, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.del = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('del() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._del(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._del = function (key, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.batch = function (array, options, callback) {\n if (!arguments.length) return this._chainedBatch()\n\n if (typeof options === 'function') callback = options\n\n if (typeof array === 'function') callback = array\n\n if (typeof callback !== 'function') {\n throw new Error('batch(array) requires a callback argument')\n }\n\n if (!Array.isArray(array)) {\n return nextTick(callback, new Error('batch(array) requires an array argument'))\n }\n\n if (array.length === 0) {\n return nextTick(callback)\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n var serialized = new Array(array.length)\n\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] !== 'object' || array[i] === null) {\n return nextTick(callback, new Error('batch(array) element must be an object and not `null`'))\n }\n\n var e = xtend(array[i])\n\n if (e.type !== 'put' && e.type !== 'del') {\n return nextTick(callback, new Error(\"`type` must be 'put' or 'del'\"))\n }\n\n var err = this._checkKey(e.key)\n if (err) return nextTick(callback, err)\n\n e.key = this._serializeKey(e.key)\n\n if (e.type === 'put') {\n var valueErr = this._checkValue(e.value)\n if (valueErr) return nextTick(callback, valueErr)\n\n e.value = this._serializeValue(e.value)\n }\n\n serialized[i] = e\n }\n\n this._batch(serialized, options, callback)\n}\n\nAbstractLevelDOWN.prototype._batch = function (array, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.clear = function (options, callback) {\n if (typeof options === 'function') {\n callback = options\n } else if (typeof callback !== 'function') {\n throw new Error('clear() requires a callback argument')\n }\n\n options = cleanRangeOptions(this, options)\n options.reverse = !!options.reverse\n options.limit = 'limit' in options ? options.limit : -1\n\n this._clear(options, callback)\n}\n\nAbstractLevelDOWN.prototype._clear = function (options, callback) {\n // Avoid setupIteratorOptions, would serialize range options a second time.\n options.keys = true\n options.values = false\n options.keyAsBuffer = true\n options.valueAsBuffer = true\n\n var iterator = this._iterator(options)\n var emptyOptions = {}\n var self = this\n\n var next = function (err) {\n if (err) {\n return iterator.end(function () {\n callback(err)\n })\n }\n\n iterator.next(function (err, key) {\n if (err) return next(err)\n if (key === undefined) return iterator.end(callback)\n\n // This could be optimized by using a batch, but the default _clear\n // is not meant to be fast. Implementations have more room to optimize\n // if they override _clear. Note: using _del bypasses key serialization.\n self._del(key, emptyOptions, next)\n })\n }\n\n next()\n}\n\nAbstractLevelDOWN.prototype._setupIteratorOptions = function (options) {\n options = cleanRangeOptions(this, options)\n\n options.reverse = !!options.reverse\n options.keys = options.keys !== false\n options.values = options.values !== false\n options.limit = 'limit' in options ? options.limit : -1\n options.keyAsBuffer = options.keyAsBuffer !== false\n options.valueAsBuffer = options.valueAsBuffer !== false\n\n return options\n}\n\nfunction cleanRangeOptions (db, options) {\n var result = {}\n\n for (var k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n\n var opt = options[k]\n\n if (isRangeOption(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n opt = db._serializeKey(opt)\n }\n\n result[k] = opt\n }\n\n return result\n}\n\nfunction isRangeOption (k) {\n return rangeOptions.indexOf(k) !== -1\n}\n\nAbstractLevelDOWN.prototype.iterator = function (options) {\n if (typeof options !== 'object' || options === null) options = {}\n options = this._setupIteratorOptions(options)\n return this._iterator(options)\n}\n\nAbstractLevelDOWN.prototype._iterator = function (options) {\n return new AbstractIterator(this)\n}\n\nAbstractLevelDOWN.prototype._chainedBatch = function () {\n return new AbstractChainedBatch(this)\n}\n\nAbstractLevelDOWN.prototype._serializeKey = function (key) {\n return key\n}\n\nAbstractLevelDOWN.prototype._serializeValue = function (value) {\n return value\n}\n\nAbstractLevelDOWN.prototype._checkKey = function (key) {\n if (key === null || key === undefined) {\n return new Error('key cannot be `null` or `undefined`')\n } else if (Buffer.isBuffer(key) && key.length === 0) {\n return new Error('key cannot be an empty Buffer')\n } else if (key === '') {\n return new Error('key cannot be an empty String')\n } else if (Array.isArray(key) && key.length === 0) {\n return new Error('key cannot be an empty Array')\n }\n}\n\nAbstractLevelDOWN.prototype._checkValue = function (value) {\n if (value === null || value === undefined) {\n return new Error('value cannot be `null` or `undefined`')\n }\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractLevelDOWN.prototype._nextTick = nextTick\n\nmodule.exports = AbstractLevelDOWN\n","var encodings = require('./lib/encodings')\n\nmodule.exports = Codec\n\nfunction Codec (opts) {\n if (!(this instanceof Codec)) {\n return new Codec(opts)\n }\n this.opts = opts || {}\n this.encodings = encodings\n}\n\nCodec.prototype._encoding = function (encoding) {\n if (typeof encoding === 'string') encoding = encodings[encoding]\n if (!encoding) encoding = encodings.id\n return encoding\n}\n\nCodec.prototype._keyEncoding = function (opts, batchOpts) {\n return this._encoding((batchOpts && batchOpts.keyEncoding) ||\n (opts && opts.keyEncoding) ||\n this.opts.keyEncoding)\n}\n\nCodec.prototype._valueEncoding = function (opts, batchOpts) {\n return this._encoding((batchOpts && (batchOpts.valueEncoding || batchOpts.encoding)) ||\n (opts && (opts.valueEncoding || opts.encoding)) ||\n (this.opts.valueEncoding || this.opts.encoding))\n}\n\nCodec.prototype.encodeKey = function (key, opts, batchOpts) {\n return this._keyEncoding(opts, batchOpts).encode(key)\n}\n\nCodec.prototype.encodeValue = function (value, opts, batchOpts) {\n return this._valueEncoding(opts, batchOpts).encode(value)\n}\n\nCodec.prototype.decodeKey = function (key, opts) {\n return this._keyEncoding(opts).decode(key)\n}\n\nCodec.prototype.decodeValue = function (value, opts) {\n return this._valueEncoding(opts).decode(value)\n}\n\nCodec.prototype.encodeBatch = function (ops, opts) {\n var self = this\n\n return ops.map(function (_op) {\n var op = {\n type: _op.type,\n key: self.encodeKey(_op.key, opts, _op)\n }\n if (self.keyAsBuffer(opts, _op)) op.keyEncoding = 'binary'\n if (_op.prefix) op.prefix = _op.prefix\n if ('value' in _op) {\n op.value = self.encodeValue(_op.value, opts, _op)\n if (self.valueAsBuffer(opts, _op)) op.valueEncoding = 'binary'\n }\n return op\n })\n}\n\nvar ltgtKeys = ['lt', 'gt', 'lte', 'gte', 'start', 'end']\n\nCodec.prototype.encodeLtgt = function (ltgt) {\n var self = this\n var ret = {}\n Object.keys(ltgt).forEach(function (key) {\n ret[key] = ltgtKeys.indexOf(key) > -1\n ? self.encodeKey(ltgt[key], ltgt)\n : ltgt[key]\n })\n return ret\n}\n\nCodec.prototype.createStreamDecoder = function (opts) {\n var self = this\n\n if (opts.keys && opts.values) {\n return function (key, value) {\n return {\n key: self.decodeKey(key, opts),\n value: self.decodeValue(value, opts)\n }\n }\n } else if (opts.keys) {\n return function (key) {\n return self.decodeKey(key, opts)\n }\n } else if (opts.values) {\n return function (_, value) {\n return self.decodeValue(value, opts)\n }\n } else {\n return function () {}\n }\n}\n\nCodec.prototype.keyAsBuffer = function (opts) {\n return this._keyEncoding(opts).buffer\n}\n\nCodec.prototype.valueAsBuffer = function (opts) {\n return this._valueEncoding(opts).buffer\n}\n","var inherits = require('inherits')\nvar AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar ltgt = require('ltgt')\nvar createRBT = require('functional-red-black-tree')\nvar Buffer = require('safe-buffer').Buffer\n\n// In Node, use global.setImmediate. In the browser, use a consistent\n// microtask library to give consistent microtask experience to all browsers\nvar setImmediate = require('./immediate')\nvar NONE = {}\n\n// TODO (perf): replace ltgt.compare with a simpler, buffer-only comparator\nfunction gt (value) {\n return ltgt.compare(value, this._upperBound) > 0\n}\n\nfunction gte (value) {\n return ltgt.compare(value, this._upperBound) >= 0\n}\n\nfunction lt (value) {\n return ltgt.compare(value, this._upperBound) < 0\n}\n\nfunction lte (value) {\n return ltgt.compare(value, this._upperBound) <= 0\n}\n\nfunction MemIterator (db, options) {\n AbstractIterator.call(this, db)\n this._limit = options.limit\n\n if (this._limit === -1) this._limit = Infinity\n\n var tree = db._store\n\n this.keyAsBuffer = options.keyAsBuffer !== false\n this.valueAsBuffer = options.valueAsBuffer !== false\n this._reverse = options.reverse\n this._options = options\n this._done = 0\n\n if (!this._reverse) {\n this._incr = 'next'\n this._lowerBound = ltgt.lowerBound(options, NONE)\n this._upperBound = ltgt.upperBound(options, NONE)\n\n if (this._lowerBound === NONE) {\n this._tree = tree.begin\n } else if (ltgt.lowerBoundInclusive(options)) {\n this._tree = tree.ge(this._lowerBound)\n } else {\n this._tree = tree.gt(this._lowerBound)\n }\n\n if (this._upperBound !== NONE) {\n if (ltgt.upperBoundInclusive(options)) {\n this._test = lte\n } else {\n this._test = lt\n }\n }\n } else {\n this._incr = 'prev'\n this._lowerBound = ltgt.upperBound(options, NONE)\n this._upperBound = ltgt.lowerBound(options, NONE)\n\n if (this._lowerBound === NONE) {\n this._tree = tree.end\n } else if (ltgt.upperBoundInclusive(options)) {\n this._tree = tree.le(this._lowerBound)\n } else {\n this._tree = tree.lt(this._lowerBound)\n }\n\n if (this._upperBound !== NONE) {\n if (ltgt.lowerBoundInclusive(options)) {\n this._test = gte\n } else {\n this._test = gt\n }\n }\n }\n}\n\ninherits(MemIterator, AbstractIterator)\n\nMemIterator.prototype._next = function (callback) {\n var key\n var value\n\n if (this._done++ >= this._limit) return setImmediate(callback)\n if (!this._tree.valid) return setImmediate(callback)\n\n key = this._tree.key\n value = this._tree.value\n\n if (!this._test(key)) return setImmediate(callback)\n\n if (!this.keyAsBuffer) {\n key = key.toString()\n }\n\n if (!this.valueAsBuffer) {\n value = value.toString()\n }\n\n this._tree[this._incr]()\n\n setImmediate(function callNext () {\n callback(null, key, value)\n })\n}\n\nMemIterator.prototype._test = function () {\n return true\n}\n\nMemIterator.prototype._outOfRange = function (target) {\n if (!this._test(target)) {\n return true\n } else if (this._lowerBound === NONE) {\n return false\n } else if (!this._reverse) {\n if (ltgt.lowerBoundInclusive(this._options)) {\n return ltgt.compare(target, this._lowerBound) < 0\n } else {\n return ltgt.compare(target, this._lowerBound) <= 0\n }\n } else {\n if (ltgt.upperBoundInclusive(this._options)) {\n return ltgt.compare(target, this._lowerBound) > 0\n } else {\n return ltgt.compare(target, this._lowerBound) >= 0\n }\n }\n}\n\nMemIterator.prototype._seek = function (target) {\n if (target.length === 0) {\n throw new Error('cannot seek() to an empty target')\n }\n\n if (this._outOfRange(target)) {\n this._tree = this.db._store.end\n this._tree.next()\n } else if (this._reverse) {\n this._tree = this.db._store.le(target)\n } else {\n this._tree = this.db._store.ge(target)\n }\n}\n\nfunction MemDOWN () {\n if (!(this instanceof MemDOWN)) return new MemDOWN()\n\n AbstractLevelDOWN.call(this, {\n bufferKeys: true,\n snapshots: true,\n permanence: false,\n seek: true,\n clear: true\n })\n\n this._store = createRBT(ltgt.compare)\n}\n\ninherits(MemDOWN, AbstractLevelDOWN)\n\nMemDOWN.prototype._open = function (options, callback) {\n var self = this\n setImmediate(function callNext () {\n callback(null, self)\n })\n}\n\nMemDOWN.prototype._serializeKey = function (key) {\n return Buffer.isBuffer(key) ? key : Buffer.from(String(key))\n}\n\nMemDOWN.prototype._serializeValue = function (value) {\n return Buffer.isBuffer(value) ? value : Buffer.from(String(value))\n}\n\nMemDOWN.prototype._put = function (key, value, options, callback) {\n var iter = this._store.find(key)\n\n if (iter.valid) {\n this._store = iter.update(value)\n } else {\n this._store = this._store.insert(key, value)\n }\n\n setImmediate(callback)\n}\n\nMemDOWN.prototype._get = function (key, options, callback) {\n var value = this._store.get(key)\n\n if (typeof value === 'undefined') {\n // 'NotFound' error, consistent with LevelDOWN API\n return setImmediate(function callNext () {\n callback(new Error('NotFound'))\n })\n }\n\n if (!options.asBuffer) {\n value = value.toString()\n }\n\n setImmediate(function callNext () {\n callback(null, value)\n })\n}\n\nMemDOWN.prototype._del = function (key, options, callback) {\n this._store = this._store.remove(key)\n setImmediate(callback)\n}\n\nMemDOWN.prototype._batch = function (array, options, callback) {\n var i = -1\n var key\n var value\n var iter\n var len = array.length\n var tree = this._store\n\n while (++i < len) {\n key = array[i].key\n iter = tree.find(key)\n\n if (array[i].type === 'put') {\n value = array[i].value\n tree = iter.valid ? iter.update(value) : tree.insert(key, value)\n } else {\n tree = iter.remove()\n }\n }\n\n this._store = tree\n\n setImmediate(callback)\n}\n\nMemDOWN.prototype._iterator = function (options) {\n return new MemIterator(this, options)\n}\n\nmodule.exports = MemDOWN.default = MemDOWN\n// Exposed for unit tests only\nmodule.exports.MemIterator = MemIterator\n","exports.AbstractLevelDOWN = require('./abstract-leveldown')\nexports.AbstractIterator = require('./abstract-iterator')\nexports.AbstractChainedBatch = require('./abstract-chained-batch')\n","var xtend = require('xtend')\nvar supports = require('level-supports')\nvar Buffer = require('buffer').Buffer\nvar AbstractIterator = require('./abstract-iterator')\nvar AbstractChainedBatch = require('./abstract-chained-batch')\nvar nextTick = require('./next-tick')\nvar hasOwnProperty = Object.prototype.hasOwnProperty\nvar rangeOptions = 'start end gt gte lt lte'.split(' ')\n\nfunction AbstractLevelDOWN (manifest) {\n this.status = 'new'\n\n // TODO (next major): make this mandatory\n this.supports = supports(manifest, {\n status: true\n })\n}\n\nAbstractLevelDOWN.prototype.open = function (options, callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('open() requires a callback argument')\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n this.status = 'opening'\n this._open(options, function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'open'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._open = function (options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.close = function (callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof callback !== 'function') {\n throw new Error('close() requires a callback argument')\n }\n\n this.status = 'closing'\n this._close(function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'closed'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._close = function (callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.get = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('get() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.asBuffer = options.asBuffer !== false\n\n this._get(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._get = function (key, options, callback) {\n nextTick(function () { callback(new Error('NotFound')) })\n}\n\nAbstractLevelDOWN.prototype.put = function (key, value, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('put() requires a callback argument')\n }\n\n var err = this._checkKey(key) || this._checkValue(value)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n value = this._serializeValue(value)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._put(key, value, options, callback)\n}\n\nAbstractLevelDOWN.prototype._put = function (key, value, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.del = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('del() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._del(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._del = function (key, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.batch = function (array, options, callback) {\n if (!arguments.length) return this._chainedBatch()\n\n if (typeof options === 'function') callback = options\n\n if (typeof array === 'function') callback = array\n\n if (typeof callback !== 'function') {\n throw new Error('batch(array) requires a callback argument')\n }\n\n if (!Array.isArray(array)) {\n return nextTick(callback, new Error('batch(array) requires an array argument'))\n }\n\n if (array.length === 0) {\n return nextTick(callback)\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n var serialized = new Array(array.length)\n\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] !== 'object' || array[i] === null) {\n return nextTick(callback, new Error('batch(array) element must be an object and not `null`'))\n }\n\n var e = xtend(array[i])\n\n if (e.type !== 'put' && e.type !== 'del') {\n return nextTick(callback, new Error(\"`type` must be 'put' or 'del'\"))\n }\n\n var err = this._checkKey(e.key)\n if (err) return nextTick(callback, err)\n\n e.key = this._serializeKey(e.key)\n\n if (e.type === 'put') {\n var valueErr = this._checkValue(e.value)\n if (valueErr) return nextTick(callback, valueErr)\n\n e.value = this._serializeValue(e.value)\n }\n\n serialized[i] = e\n }\n\n this._batch(serialized, options, callback)\n}\n\nAbstractLevelDOWN.prototype._batch = function (array, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.clear = function (options, callback) {\n if (typeof options === 'function') {\n callback = options\n } else if (typeof callback !== 'function') {\n throw new Error('clear() requires a callback argument')\n }\n\n options = cleanRangeOptions(this, options)\n options.reverse = !!options.reverse\n options.limit = 'limit' in options ? options.limit : -1\n\n this._clear(options, callback)\n}\n\nAbstractLevelDOWN.prototype._clear = function (options, callback) {\n // Avoid setupIteratorOptions, would serialize range options a second time.\n options.keys = true\n options.values = false\n options.keyAsBuffer = true\n options.valueAsBuffer = true\n\n var iterator = this._iterator(options)\n var emptyOptions = {}\n var self = this\n\n var next = function (err) {\n if (err) {\n return iterator.end(function () {\n callback(err)\n })\n }\n\n iterator.next(function (err, key) {\n if (err) return next(err)\n if (key === undefined) return iterator.end(callback)\n\n // This could be optimized by using a batch, but the default _clear\n // is not meant to be fast. Implementations have more room to optimize\n // if they override _clear. Note: using _del bypasses key serialization.\n self._del(key, emptyOptions, next)\n })\n }\n\n next()\n}\n\nAbstractLevelDOWN.prototype._setupIteratorOptions = function (options) {\n options = cleanRangeOptions(this, options)\n\n options.reverse = !!options.reverse\n options.keys = options.keys !== false\n options.values = options.values !== false\n options.limit = 'limit' in options ? options.limit : -1\n options.keyAsBuffer = options.keyAsBuffer !== false\n options.valueAsBuffer = options.valueAsBuffer !== false\n\n return options\n}\n\nfunction cleanRangeOptions (db, options) {\n var result = {}\n\n for (var k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n\n var opt = options[k]\n\n if (isRangeOption(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n opt = db._serializeKey(opt)\n }\n\n result[k] = opt\n }\n\n return result\n}\n\nfunction isRangeOption (k) {\n return rangeOptions.indexOf(k) !== -1\n}\n\nAbstractLevelDOWN.prototype.iterator = function (options) {\n if (typeof options !== 'object' || options === null) options = {}\n options = this._setupIteratorOptions(options)\n return this._iterator(options)\n}\n\nAbstractLevelDOWN.prototype._iterator = function (options) {\n return new AbstractIterator(this)\n}\n\nAbstractLevelDOWN.prototype._chainedBatch = function () {\n return new AbstractChainedBatch(this)\n}\n\nAbstractLevelDOWN.prototype._serializeKey = function (key) {\n return key\n}\n\nAbstractLevelDOWN.prototype._serializeValue = function (value) {\n return value\n}\n\nAbstractLevelDOWN.prototype._checkKey = function (key) {\n if (key === null || key === undefined) {\n return new Error('key cannot be `null` or `undefined`')\n } else if (Buffer.isBuffer(key) && key.length === 0) {\n return new Error('key cannot be an empty Buffer')\n } else if (key === '') {\n return new Error('key cannot be an empty String')\n } else if (Array.isArray(key) && key.length === 0) {\n return new Error('key cannot be an empty Array')\n }\n}\n\nAbstractLevelDOWN.prototype._checkValue = function (value) {\n if (value === null || value === undefined) {\n return new Error('value cannot be `null` or `undefined`')\n }\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractLevelDOWN.prototype._nextTick = nextTick\n\nmodule.exports = AbstractLevelDOWN\n","/* global indexedDB */\n\n'use strict'\n\nmodule.exports = Level\n\nvar AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar inherits = require('inherits')\nvar Iterator = require('./iterator')\nvar serialize = require('./util/serialize')\nvar deserialize = require('./util/deserialize')\nvar support = require('./util/support')\nvar clear = require('./util/clear')\nvar createKeyRange = require('./util/key-range')\n\nvar DEFAULT_PREFIX = 'level-js-'\n\nfunction Level (location, opts) {\n if (!(this instanceof Level)) return new Level(location, opts)\n\n AbstractLevelDOWN.call(this, {\n bufferKeys: support.bufferKeys(indexedDB),\n snapshots: true,\n permanence: true,\n clear: true\n })\n\n opts = opts || {}\n\n if (typeof location !== 'string') {\n throw new Error('constructor requires a location string argument')\n }\n\n this.location = location\n this.prefix = opts.prefix == null ? DEFAULT_PREFIX : opts.prefix\n this.version = parseInt(opts.version || 1, 10)\n}\n\ninherits(Level, AbstractLevelDOWN)\n\nLevel.prototype.type = 'level-js'\n\nLevel.prototype._open = function (options, callback) {\n var req = indexedDB.open(this.prefix + this.location, this.version)\n var self = this\n\n req.onerror = function () {\n callback(req.error || new Error('unknown error'))\n }\n\n req.onsuccess = function () {\n self.db = req.result\n callback()\n }\n\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result\n\n if (!db.objectStoreNames.contains(self.location)) {\n db.createObjectStore(self.location)\n }\n }\n}\n\nLevel.prototype.store = function (mode) {\n var transaction = this.db.transaction([this.location], mode)\n return transaction.objectStore(this.location)\n}\n\nLevel.prototype.await = function (request, callback) {\n var transaction = request.transaction\n\n // Take advantage of the fact that a non-canceled request error aborts\n // the transaction. I.e. no need to listen for \"request.onerror\".\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback(null, request.result)\n }\n}\n\nLevel.prototype._get = function (key, options, callback) {\n var store = this.store('readonly')\n\n try {\n var req = store.get(key)\n } catch (err) {\n return this._nextTick(callback, err)\n }\n\n this.await(req, function (err, value) {\n if (err) return callback(err)\n\n if (value === undefined) {\n // 'NotFound' error, consistent with LevelDOWN API\n return callback(new Error('NotFound'))\n }\n\n callback(null, deserialize(value, options.asBuffer))\n })\n}\n\nLevel.prototype._del = function (key, options, callback) {\n var store = this.store('readwrite')\n\n try {\n var req = store.delete(key)\n } catch (err) {\n return this._nextTick(callback, err)\n }\n\n this.await(req, callback)\n}\n\nLevel.prototype._put = function (key, value, options, callback) {\n var store = this.store('readwrite')\n\n try {\n // Will throw a DataError or DataCloneError if the environment\n // does not support serializing the key or value respectively.\n var req = store.put(value, key)\n } catch (err) {\n return this._nextTick(callback, err)\n }\n\n this.await(req, callback)\n}\n\nLevel.prototype._serializeKey = function (key) {\n return serialize(key, this.supports.bufferKeys)\n}\n\nLevel.prototype._serializeValue = function (value) {\n return serialize(value, true)\n}\n\nLevel.prototype._iterator = function (options) {\n return new Iterator(this, this.location, options)\n}\n\nLevel.prototype._batch = function (operations, options, callback) {\n if (operations.length === 0) return this._nextTick(callback)\n\n var store = this.store('readwrite')\n var transaction = store.transaction\n var index = 0\n var error\n\n transaction.onabort = function () {\n callback(error || transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n callback()\n }\n\n // Wait for a request to complete before making the next, saving CPU.\n function loop () {\n var op = operations[index++]\n var key = op.key\n\n try {\n var req = op.type === 'del' ? store.delete(key) : store.put(op.value, key)\n } catch (err) {\n error = err\n transaction.abort()\n return\n }\n\n if (index < operations.length) {\n req.onsuccess = loop\n }\n }\n\n loop()\n}\n\nLevel.prototype._clear = function (options, callback) {\n try {\n var keyRange = createKeyRange(options)\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just do nothing.\n return this._nextTick(callback)\n }\n\n if (options.limit >= 0) {\n // IDBObjectStore#delete(range) doesn't have such an option.\n // Fall back to cursor-based implementation.\n return clear(this, this.location, keyRange, options, callback)\n }\n\n try {\n var store = this.store('readwrite')\n var req = keyRange ? store.delete(keyRange) : store.clear()\n } catch (err) {\n return this._nextTick(callback, err)\n }\n\n this.await(req, callback)\n}\n\nLevel.prototype._close = function (callback) {\n this.db.close()\n this._nextTick(callback)\n}\n\n// NOTE: remove in a next major release\nLevel.prototype.upgrade = function (callback) {\n if (this.status !== 'open') {\n return this._nextTick(callback, new Error('cannot upgrade() before open()'))\n }\n\n var it = this.iterator()\n var batchOptions = {}\n var self = this\n\n it._deserializeKey = it._deserializeValue = identity\n next()\n\n function next (err) {\n if (err) return finish(err)\n it.next(each)\n }\n\n function each (err, key, value) {\n if (err || key === undefined) {\n return finish(err)\n }\n\n var newKey = self._serializeKey(deserialize(key, true))\n var newValue = self._serializeValue(deserialize(value, true))\n\n // To bypass serialization on the old key, use _batch() instead of batch().\n // NOTE: if we disable snapshotting (#86) this could lead to a loop of\n // inserting and then iterating those same entries, because the new keys\n // possibly sort after the old keys.\n self._batch([\n { type: 'del', key: key },\n { type: 'put', key: newKey, value: newValue }\n ], batchOptions, next)\n }\n\n function finish (err) {\n it.end(function (err2) {\n callback(err || err2)\n })\n }\n\n function identity (data) {\n return data\n }\n}\n\nLevel.destroy = function (location, prefix, callback) {\n if (typeof prefix === 'function') {\n callback = prefix\n prefix = DEFAULT_PREFIX\n }\n var request = indexedDB.deleteDatabase(prefix + location)\n request.onsuccess = function () {\n callback()\n }\n request.onerror = function (err) {\n callback(err)\n }\n}\n","exports.AbstractLevelDOWN = require('./abstract-leveldown')\nexports.AbstractIterator = require('./abstract-iterator')\nexports.AbstractChainedBatch = require('./abstract-chained-batch')\n","var xtend = require('xtend')\nvar supports = require('level-supports')\nvar Buffer = require('buffer').Buffer\nvar AbstractIterator = require('./abstract-iterator')\nvar AbstractChainedBatch = require('./abstract-chained-batch')\nvar nextTick = require('./next-tick')\nvar hasOwnProperty = Object.prototype.hasOwnProperty\nvar rangeOptions = 'start end gt gte lt lte'.split(' ')\n\nfunction AbstractLevelDOWN (manifest) {\n this.status = 'new'\n\n // TODO (next major): make this mandatory\n this.supports = supports(manifest, {\n status: true\n })\n}\n\nAbstractLevelDOWN.prototype.open = function (options, callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('open() requires a callback argument')\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.createIfMissing = options.createIfMissing !== false\n options.errorIfExists = !!options.errorIfExists\n\n this.status = 'opening'\n this._open(options, function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'open'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._open = function (options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.close = function (callback) {\n var self = this\n var oldStatus = this.status\n\n if (typeof callback !== 'function') {\n throw new Error('close() requires a callback argument')\n }\n\n this.status = 'closing'\n this._close(function (err) {\n if (err) {\n self.status = oldStatus\n return callback(err)\n }\n self.status = 'closed'\n callback()\n })\n}\n\nAbstractLevelDOWN.prototype._close = function (callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.get = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('get() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n options.asBuffer = options.asBuffer !== false\n\n this._get(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._get = function (key, options, callback) {\n nextTick(function () { callback(new Error('NotFound')) })\n}\n\nAbstractLevelDOWN.prototype.put = function (key, value, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('put() requires a callback argument')\n }\n\n var err = this._checkKey(key) || this._checkValue(value)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n value = this._serializeValue(value)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._put(key, value, options, callback)\n}\n\nAbstractLevelDOWN.prototype._put = function (key, value, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.del = function (key, options, callback) {\n if (typeof options === 'function') callback = options\n\n if (typeof callback !== 'function') {\n throw new Error('del() requires a callback argument')\n }\n\n var err = this._checkKey(key)\n if (err) return nextTick(callback, err)\n\n key = this._serializeKey(key)\n\n if (typeof options !== 'object' || options === null) options = {}\n\n this._del(key, options, callback)\n}\n\nAbstractLevelDOWN.prototype._del = function (key, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.batch = function (array, options, callback) {\n if (!arguments.length) return this._chainedBatch()\n\n if (typeof options === 'function') callback = options\n\n if (typeof array === 'function') callback = array\n\n if (typeof callback !== 'function') {\n throw new Error('batch(array) requires a callback argument')\n }\n\n if (!Array.isArray(array)) {\n return nextTick(callback, new Error('batch(array) requires an array argument'))\n }\n\n if (array.length === 0) {\n return nextTick(callback)\n }\n\n if (typeof options !== 'object' || options === null) options = {}\n\n var serialized = new Array(array.length)\n\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] !== 'object' || array[i] === null) {\n return nextTick(callback, new Error('batch(array) element must be an object and not `null`'))\n }\n\n var e = xtend(array[i])\n\n if (e.type !== 'put' && e.type !== 'del') {\n return nextTick(callback, new Error(\"`type` must be 'put' or 'del'\"))\n }\n\n var err = this._checkKey(e.key)\n if (err) return nextTick(callback, err)\n\n e.key = this._serializeKey(e.key)\n\n if (e.type === 'put') {\n var valueErr = this._checkValue(e.value)\n if (valueErr) return nextTick(callback, valueErr)\n\n e.value = this._serializeValue(e.value)\n }\n\n serialized[i] = e\n }\n\n this._batch(serialized, options, callback)\n}\n\nAbstractLevelDOWN.prototype._batch = function (array, options, callback) {\n nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.clear = function (options, callback) {\n if (typeof options === 'function') {\n callback = options\n } else if (typeof callback !== 'function') {\n throw new Error('clear() requires a callback argument')\n }\n\n options = cleanRangeOptions(this, options)\n options.reverse = !!options.reverse\n options.limit = 'limit' in options ? options.limit : -1\n\n this._clear(options, callback)\n}\n\nAbstractLevelDOWN.prototype._clear = function (options, callback) {\n // Avoid setupIteratorOptions, would serialize range options a second time.\n options.keys = true\n options.values = false\n options.keyAsBuffer = true\n options.valueAsBuffer = true\n\n var iterator = this._iterator(options)\n var emptyOptions = {}\n var self = this\n\n var next = function (err) {\n if (err) {\n return iterator.end(function () {\n callback(err)\n })\n }\n\n iterator.next(function (err, key) {\n if (err) return next(err)\n if (key === undefined) return iterator.end(callback)\n\n // This could be optimized by using a batch, but the default _clear\n // is not meant to be fast. Implementations have more room to optimize\n // if they override _clear. Note: using _del bypasses key serialization.\n self._del(key, emptyOptions, next)\n })\n }\n\n next()\n}\n\nAbstractLevelDOWN.prototype._setupIteratorOptions = function (options) {\n options = cleanRangeOptions(this, options)\n\n options.reverse = !!options.reverse\n options.keys = options.keys !== false\n options.values = options.values !== false\n options.limit = 'limit' in options ? options.limit : -1\n options.keyAsBuffer = options.keyAsBuffer !== false\n options.valueAsBuffer = options.valueAsBuffer !== false\n\n return options\n}\n\nfunction cleanRangeOptions (db, options) {\n var result = {}\n\n for (var k in options) {\n if (!hasOwnProperty.call(options, k)) continue\n\n var opt = options[k]\n\n if (isRangeOption(k)) {\n // Note that we don't reject nullish and empty options here. While\n // those types are invalid as keys, they are valid as range options.\n opt = db._serializeKey(opt)\n }\n\n result[k] = opt\n }\n\n return result\n}\n\nfunction isRangeOption (k) {\n return rangeOptions.indexOf(k) !== -1\n}\n\nAbstractLevelDOWN.prototype.iterator = function (options) {\n if (typeof options !== 'object' || options === null) options = {}\n options = this._setupIteratorOptions(options)\n return this._iterator(options)\n}\n\nAbstractLevelDOWN.prototype._iterator = function (options) {\n return new AbstractIterator(this)\n}\n\nAbstractLevelDOWN.prototype._chainedBatch = function () {\n return new AbstractChainedBatch(this)\n}\n\nAbstractLevelDOWN.prototype._serializeKey = function (key) {\n return key\n}\n\nAbstractLevelDOWN.prototype._serializeValue = function (value) {\n return value\n}\n\nAbstractLevelDOWN.prototype._checkKey = function (key) {\n if (key === null || key === undefined) {\n return new Error('key cannot be `null` or `undefined`')\n } else if (Buffer.isBuffer(key) && key.length === 0) {\n return new Error('key cannot be an empty Buffer')\n } else if (key === '') {\n return new Error('key cannot be an empty String')\n } else if (Array.isArray(key) && key.length === 0) {\n return new Error('key cannot be an empty Array')\n }\n}\n\nAbstractLevelDOWN.prototype._checkValue = function (value) {\n if (value === null || value === undefined) {\n return new Error('value cannot be `null` or `undefined`')\n }\n}\n\n// Expose browser-compatible nextTick for dependents\nAbstractLevelDOWN.prototype._nextTick = nextTick\n\nmodule.exports = AbstractLevelDOWN\n","'use strict'\n\n// For (old) browser support\nvar xtend = require('xtend')\nvar assign = require('xtend/mutable')\n\nmodule.exports = function supports () {\n var manifest = xtend.apply(null, arguments)\n\n return assign(manifest, {\n // Features of abstract-leveldown\n bufferKeys: manifest.bufferKeys || false,\n snapshots: manifest.snapshots || false,\n permanence: manifest.permanence || false,\n seek: manifest.seek || false,\n clear: manifest.clear || false,\n\n // Features of abstract-leveldown that levelup doesn't have\n status: manifest.status || false,\n\n // Features of disk-based implementations\n createIfMissing: manifest.createIfMissing || false,\n errorIfExists: manifest.errorIfExists || false,\n\n // Features of level(up) that abstract-leveldown doesn't have yet\n deferredOpen: manifest.deferredOpen || false,\n openCallback: manifest.openCallback || false,\n promises: manifest.promises || false,\n streams: manifest.streams || false,\n encodings: manifest.encodings || false,\n\n // Methods that are not part of abstract-leveldown or levelup\n additionalMethods: xtend(manifest.additionalMethods)\n })\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict';\nvar types = [\n require('./nextTick'),\n require('./queueMicrotask'),\n require('./mutation.js'),\n require('./messageChannel'),\n require('./stateChange'),\n require('./timeout')\n];\nvar draining;\nvar currentQueue;\nvar queueIndex = -1;\nvar queue = [];\nvar scheduled = false;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n nextTick();\n }\n}\n\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n if (draining) {\n return;\n }\n scheduled = false;\n draining = true;\n var len = queue.length;\n var timeout = setTimeout(cleanUpNextTick);\n while (len) {\n currentQueue = queue;\n queue = [];\n while (currentQueue && ++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n queueIndex = -1;\n draining = false;\n clearTimeout(timeout);\n}\nvar scheduleDrain;\nvar i = -1;\nvar len = types.length;\nwhile (++i < len) {\n if (types[i] && types[i].test && types[i].test()) {\n scheduleDrain = types[i].install(nextTick);\n break;\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n var fun = this.fun;\n var array = this.array;\n switch (array.length) {\n case 0:\n return fun();\n case 1:\n return fun(array[0]);\n case 2:\n return fun(array[0], array[1]);\n case 3:\n return fun(array[0], array[1], array[2]);\n default:\n return fun.apply(null, array);\n }\n\n};\nmodule.exports = immediate;\nfunction immediate(task) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(task, args));\n if (!scheduled && !draining) {\n scheduled = true;\n scheduleDrain();\n }\n}\n","'use strict'\n\nvar inherits = require('inherits')\nvar AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar createKeyRange = require('./util/key-range')\nvar deserialize = require('./util/deserialize')\nvar noop = function () {}\n\nmodule.exports = Iterator\n\nfunction Iterator (db, location, options) {\n AbstractIterator.call(this, db)\n\n this._limit = options.limit\n this._count = 0\n this._callback = null\n this._cache = []\n this._completed = false\n this._aborted = false\n this._error = null\n this._transaction = null\n\n this._keys = options.keys\n this._values = options.values\n this._keyAsBuffer = options.keyAsBuffer\n this._valueAsBuffer = options.valueAsBuffer\n\n if (this._limit === 0) {\n this._completed = true\n return\n }\n\n try {\n var keyRange = createKeyRange(options)\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just return 0 results.\n this._completed = true\n return\n }\n\n this.createIterator(location, keyRange, options.reverse)\n}\n\ninherits(Iterator, AbstractIterator)\n\nIterator.prototype.createIterator = function (location, keyRange, reverse) {\n var self = this\n var transaction = this.db.db.transaction([location], 'readonly')\n var store = transaction.objectStore(location)\n var req = store.openCursor(keyRange, reverse ? 'prev' : 'next')\n\n req.onsuccess = function (ev) {\n var cursor = ev.target.result\n if (cursor) self.onItem(cursor)\n }\n\n this._transaction = transaction\n\n // If an error occurs (on the request), the transaction will abort.\n transaction.onabort = function () {\n self.onAbort(self._transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n self.onComplete()\n }\n}\n\nIterator.prototype.onItem = function (cursor) {\n this._cache.push(cursor.key, cursor.value)\n\n if (this._limit <= 0 || ++this._count < this._limit) {\n cursor.continue()\n }\n\n this.maybeNext()\n}\n\nIterator.prototype.onAbort = function (err) {\n this._aborted = true\n this._error = err\n this.maybeNext()\n}\n\nIterator.prototype.onComplete = function () {\n this._completed = true\n this.maybeNext()\n}\n\nIterator.prototype.maybeNext = function () {\n if (this._callback) {\n this._next(this._callback)\n this._callback = null\n }\n}\n\nIterator.prototype._next = function (callback) {\n if (this._aborted) {\n // The error should be picked up by either next() or end().\n var err = this._error\n this._error = null\n this._nextTick(callback, err)\n } else if (this._cache.length > 0) {\n var key = this._cache.shift()\n var value = this._cache.shift()\n\n if (this._keys && key !== undefined) {\n key = this._deserializeKey(key, this._keyAsBuffer)\n } else {\n key = undefined\n }\n\n if (this._values && value !== undefined) {\n value = this._deserializeValue(value, this._valueAsBuffer)\n } else {\n value = undefined\n }\n\n this._nextTick(callback, null, key, value)\n } else if (this._completed) {\n this._nextTick(callback)\n } else {\n this._callback = callback\n }\n}\n\n// Exposed for the v4 to v5 upgrade utility\nIterator.prototype._deserializeKey = deserialize\nIterator.prototype._deserializeValue = deserialize\n\nIterator.prototype._end = function (callback) {\n if (this._aborted || this._completed) {\n return this._nextTick(callback, this._error)\n }\n\n // Don't advance the cursor anymore, and the transaction will complete\n // on its own in the next tick. This approach is much cleaner than calling\n // transaction.abort() with its unpredictable event order.\n this.onItem = noop\n this.onAbort = callback\n this.onComplete = callback\n}\n","'use strict'\n\nvar Buffer = require('buffer').Buffer\n// Returns either a Uint8Array or Buffer (doesn't matter to\n// IndexedDB, because Buffer is a subclass of Uint8Array)\nvar str2bin = (function () {\n if (global.TextEncoder) {\n var encoder = new TextEncoder('utf-8')\n return encoder.encode.bind(encoder)\n } else {\n return Buffer.from\n }\n})()\n\nmodule.exports = function (data, asBuffer) {\n if (asBuffer) {\n return Buffer.isBuffer(data) ? data : str2bin(String(data))\n } else {\n return String(data)\n }\n}\n","'use strict'\n\nvar Buffer = require('buffer').Buffer\n\nexports.test = function (key) {\n return function test (impl) {\n try {\n impl.cmp(key, 0)\n return true\n } catch (err) {\n return false\n }\n }\n}\n\n// Detect binary key support (IndexedDB Second Edition)\nexports.bufferKeys = exports.test(Buffer.alloc(0))\n","'use strict'\n\nmodule.exports = function clear (db, location, keyRange, options, callback) {\n if (options.limit === 0) return db._nextTick(callback)\n\n var transaction = db.db.transaction([location], 'readwrite')\n var store = transaction.objectStore(location)\n var count = 0\n\n transaction.oncomplete = function () {\n callback()\n }\n\n transaction.onabort = function () {\n callback(transaction.error || new Error('aborted by user'))\n }\n\n // A key cursor is faster (skips reading values) but not supported by IE\n var method = store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n var direction = options.reverse ? 'prev' : 'next'\n\n store[method](keyRange, direction).onsuccess = function (ev) {\n var cursor = ev.target.result\n\n if (cursor) {\n // Wait for a request to complete before continuing, saving CPU.\n store.delete(cursor.key).onsuccess = function () {\n if (options.limit <= 0 || ++count < options.limit) {\n cursor.continue()\n }\n }\n }\n }\n}\n","var inherits = require('inherits')\nvar abstract = require('abstract-leveldown')\nvar wrap = require('level-option-wrap')\nvar reachdown = require('reachdown')\nvar matchdown = require('./matchdown')\n\nvar rangeOptions = 'start end gt gte lt lte'.split(' ')\nvar defaultClear = abstract.AbstractLevelDOWN.prototype._clear\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction concat (prefix, key, force) {\n if (typeof key === 'string' && (force || key.length)) return prefix + key\n if (Buffer.isBuffer(key) && (force || key.length)) {\n return Buffer.concat([Buffer.from(prefix), key])\n }\n return key\n}\n\nfunction SubIterator (db, ite, prefix) {\n this.iterator = ite\n this.prefix = prefix\n\n abstract.AbstractIterator.call(this, db)\n}\n\ninherits(SubIterator, abstract.AbstractIterator)\n\nSubIterator.prototype._next = function (cb) {\n if (maybeError(this.db.leveldown, cb)) return\n\n var self = this\n this.iterator.next(function (err, key, value) {\n if (err) return cb(err)\n if (key) key = key.slice(self.prefix.length)\n cb(err, key, value)\n })\n}\n\nSubIterator.prototype._seek = function (key) {\n this.iterator.seek(concat(this.prefix, key))\n}\n\nSubIterator.prototype._end = function (cb) {\n if (maybeError(this.db.leveldown, cb)) return\n this.iterator.end(cb)\n}\n\nfunction SubDown (db, prefix, opts) {\n if (!(this instanceof SubDown)) return new SubDown(db, prefix, opts)\n if (typeof opts === 'string') opts = { separator: opts }\n if (!opts) opts = {}\n\n var separator = opts.separator\n\n if (!prefix) prefix = ''\n if (!separator) separator = '!'\n if (prefix[0] === separator) prefix = prefix.slice(1)\n if (prefix[prefix.length - 1] === separator) prefix = prefix.slice(0, -1)\n\n var code = separator.charCodeAt(0) + 1\n var ceiling = String.fromCharCode(code)\n\n Buffer.from(prefix).forEach(function (byte) {\n if (byte <= code) {\n throw new RangeError('Prefix must sort after ' + code)\n }\n })\n\n this.db = db\n this.prefix = separator + prefix + separator\n this._beforeOpen = opts.open\n\n var self = this\n var manifest = db.supports || {}\n\n // The parent db must open itself or be (re)opened by the user because a\n // sublevel can't (shouldn't) initiate state changes on the rest of the db.\n if (!manifest.deferredOpen && !reachdown.is(db, 'levelup')) {\n throw new Error('Parent database must support deferredOpen')\n }\n\n var subdb = reachdown(db, 'subleveldown')\n\n if (subdb) {\n // Old subleveldown doesn't know its prefix and leveldown until opened\n if (!subdb.prefix || !subdb.leveldown) {\n throw new Error('Incompatible with subleveldown < 5.0.0')\n }\n\n this.prefix = subdb.prefix + this.prefix\n this.leveldown = subdb.leveldown\n } else {\n this.leveldown = reachdown(db, matchdown, false)\n }\n\n if (reachdown.is(this.leveldown, 'deferred-leveldown')) {\n // Old deferred-leveldown doesn't expose its underlying db until opened\n throw new Error('Incompatible with deferred-leveldown < 2.0.0')\n } else if (!this.leveldown.status) {\n // Old abstract-leveldown doesn't have a status property\n throw new Error('Incompatible with abstract-leveldown < 2.4.0')\n }\n\n this._wrap = {\n gt: function (x) {\n return concat(self.prefix, x || '', true)\n },\n lt: function (x) {\n if (!x || isEmptyBuffer(x)) {\n return self.prefix.slice(0, -1) + ceiling\n } else {\n return concat(self.prefix, x)\n }\n }\n }\n\n abstract.AbstractLevelDOWN.call(this)\n}\n\ninherits(SubDown, abstract.AbstractLevelDOWN)\n\nSubDown.prototype.type = 'subleveldown'\n\n// TODO: remove _open() once abstract-leveldown supports deferredOpen,\n// because that means we can always do operations on this.leveldown.\n// Alternatively have the sublevel follow the open state of this.db.\nSubDown.prototype._open = function (opts, cb) {\n var self = this\n\n // TODO: make _isOpening public in levelup or add a method like\n // ready(cb) which waits for - but does not initiate - a state change.\n var m = typeof this.db.isOpening === 'function' ? 'isOpening' : '_isOpening'\n\n if (this.db[m]()) {\n this.db.once('open', onopen)\n } else {\n this._nextTick(onopen)\n }\n\n function onopen () {\n if (!self.db.isOpen()) return cb(new Error('Parent database is not open'))\n if (self.leveldown.status !== 'open') return cb(new Error('Inner database is not open'))\n\n // TODO: add hooks to abstract-leveldown\n if (self._beforeOpen) return self._beforeOpen(cb)\n\n cb()\n }\n}\n\nSubDown.prototype._serializeKey = function (key) {\n return Buffer.isBuffer(key) ? key : String(key)\n}\n\nSubDown.prototype._put = function (key, value, opts, cb) {\n if (maybeError(this.leveldown, cb)) return\n this.leveldown.put(concat(this.prefix, key), value, opts, cb)\n}\n\nSubDown.prototype._get = function (key, opts, cb) {\n if (maybeError(this.leveldown, cb)) return\n this.leveldown.get(concat(this.prefix, key), opts, cb)\n}\n\nSubDown.prototype._del = function (key, opts, cb) {\n if (maybeError(this.leveldown, cb)) return\n this.leveldown.del(concat(this.prefix, key), opts, cb)\n}\n\nSubDown.prototype._batch = function (operations, opts, cb) {\n if (maybeError(this.leveldown, cb)) return\n\n // No need to make a copy of the array, abstract-leveldown does that\n for (var i = 0; i < operations.length; i++) {\n operations[i].key = concat(this.prefix, operations[i].key)\n }\n\n this.leveldown.batch(operations, opts, cb)\n}\n\nSubDown.prototype._clear = function (opts, cb) {\n if (maybeError(this.leveldown, cb)) return\n\n if (typeof this.leveldown.clear === 'function') {\n // Prefer optimized implementation of clear()\n opts = addRestOptions(wrap(opts, this._wrap), opts)\n this.leveldown.clear(opts, cb)\n } else {\n // Fall back to iterator-based implementation\n defaultClear.call(this, opts, cb)\n }\n}\n\nfunction addRestOptions (target, opts) {\n for (var k in opts) {\n if (hasOwnProperty.call(opts, k) && !isRangeOption(k)) {\n target[k] = opts[k]\n }\n }\n\n return target\n}\n\nfunction isRangeOption (k) {\n return rangeOptions.indexOf(k) !== -1\n}\n\nfunction isEmptyBuffer (key) {\n return Buffer.isBuffer(key) && key.length === 0\n}\n\n// Before any operation, check if the inner db is open. Needed\n// because we don't follow open state of the parent db atm.\n// TODO: move to abstract-leveldown\nfunction maybeError (leveldown, callback) {\n if (leveldown.status !== 'open') {\n // Same error message as levelup\n // TODO: use require('level-errors').ReadError\n process.nextTick(callback, new Error('Database is not open'))\n return true\n }\n\n return false\n}\n\n// TODO (refactor): use addRestOptions instead\nfunction extend (xopts, opts) {\n xopts.keys = opts.keys\n xopts.values = opts.values\n xopts.createIfMissing = opts.createIfMissing\n xopts.errorIfExists = opts.errorIfExists\n xopts.keyEncoding = opts.keyEncoding\n xopts.valueEncoding = opts.valueEncoding\n xopts.compression = opts.compression\n xopts.db = opts.db\n xopts.limit = opts.limit\n xopts.keyAsBuffer = opts.keyAsBuffer\n xopts.valueAsBuffer = opts.valueAsBuffer\n xopts.reverse = opts.reverse\n xopts.fillCache = opts.fillCache\n return xopts\n}\n\nfunction fixRange (opts) {\n return (!opts.reverse || (!opts.end && !opts.start)) ? opts : { start: opts.end, end: opts.start }\n}\n\nSubDown.prototype._iterator = function (opts) {\n var xopts = extend(wrap(fixRange(opts), this._wrap), opts)\n return new SubIterator(this, this.leveldown.iterator(xopts), this.prefix)\n}\n\nmodule.exports = SubDown\n","var defined = require('defined');\n\nmodule.exports = function (opts, prefix) {\n if (!opts) opts = {};\n if (!prefix) prefix = {};\n var xopts = {};\n var gte = defined(prefix.gte, prefix.ge, prefix.start);\n var lte = defined(prefix.lte, prefix.le, prefix.end);\n var ogte = defined(opts.gte, opts.ge, opts.start);\n var olte = defined(opts.lte, opts.le, opts.end);\n \n if (prefix.gt) {\n if (ogte !== undefined) {\n xopts.gte = prefix.gt(ogte);\n }\n else xopts.gt = prefix.gt(opts.gt);\n }\n else if (gte) {\n if (ogte !== undefined) {\n xopts.gte = gte(ogte);\n }\n else xopts.gt = gte(opts.gt);\n }\n \n if (prefix.lt) {\n if (olte !== undefined) {\n xopts.lte = prefix.lt(olte);\n }\n else xopts.lt = prefix.lt(opts.lt);\n }\n else if (lte) {\n if (olte !== undefined) {\n xopts.lte = lte(olte);\n }\n else xopts.lt = lte(opts.lt);\n }\n \n if (prefix.limit !== undefined) {\n xopts.limit = prefix.limit(opts.limit);\n }\n else if (opts.limit !== undefined) {\n xopts.limit = opts.limit;\n }\n return xopts;\n};\n","module.exports = function () {\n for (var i = 0; i < arguments.length; i++) {\n if (arguments[i] !== undefined) return arguments[i];\n }\n};\n","'use strict'\n\nfunction reachdown (db, visit, strict) {\n return walk(db, visitor(visit), !!visit && strict !== false)\n}\n\nfunction walk (db, visit, strict) {\n if (visit(db, type(db))) return db\n if (isAbstract(db.db)) return walk(db.db, visit, strict)\n if (isAbstract(db._db)) return walk(db._db, visit, strict)\n if (isLevelup(db.db)) return walk(db.db, visit, strict)\n if (strict) return null\n\n return db\n}\n\nfunction isAbstract (db) {\n // Loose by design, for when node_modules contains multiple versions of abstract-leveldown.\n return isObject(db) && typeof db._batch === 'function' && typeof db._iterator === 'function'\n}\n\nfunction visitor (v) {\n return typeof v === 'function' ? v : v ? typeVisitor(v) : none\n}\n\nfunction typeVisitor (wanted) {\n return function (db, type) {\n return type ? type === wanted : false\n }\n}\n\nfunction none () {\n return false\n}\n\nfunction type (db) {\n if (db.type) return db.type\n\n // Feature-detect older versions (that don't have a type property)\n if (isLevelup(db)) return 'levelup' // For levelup < 4.3.0\n if (isEncdown(db)) return 'encoding-down' // For < 6.3.0\n if (isDeferred(db)) return 'deferred-leveldown' // For < 5.2.1\n}\n\nfunction isLevelup (db) {\n return isObject(db) && /^levelup$/i.test(db)\n}\n\nfunction isEncdown (db) {\n return isObject(db) && isObject(db.codec) && isObject(db.codec.encodings)\n}\n\nfunction isDeferred (db) {\n return isObject(db) && Array.isArray(db._operations) && Array.isArray(db._iterators)\n}\n\nfunction isObject (o) {\n return typeof o === 'object' && o !== null\n}\n\nfunction is (db, visit) {\n return !!visitor(visit)(db, type(db))\n}\n\nreachdown.is = is\nmodule.exports = reachdown\n","module.exports = function matchdown (db, type) {\n // Skip layers that we handle ourselves\n if (type === 'levelup') return false\n if (type === 'encoding-down') return false\n if (type === 'deferred-leveldown') return false\n if (type === 'subleveldown') return false\n\n return true\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccessLists = void 0;\nvar ethereumjs_util_1 = require(\"ethereumjs-util\");\nvar types_1 = require(\"./types\");\nvar AccessLists = /** @class */ (function () {\n function AccessLists() {\n }\n AccessLists.getAccessListData = function (accessList) {\n var AccessListJSON;\n var bufferAccessList;\n if (accessList && types_1.isAccessList(accessList)) {\n AccessListJSON = accessList;\n var newAccessList = [];\n for (var i = 0; i < accessList.length; i++) {\n var item = accessList[i];\n var addressBuffer = ethereumjs_util_1.toBuffer(item.address);\n var storageItems = [];\n for (var index = 0; index < item.storageKeys.length; index++) {\n storageItems.push(ethereumjs_util_1.toBuffer(item.storageKeys[index]));\n }\n newAccessList.push([addressBuffer, storageItems]);\n }\n bufferAccessList = newAccessList;\n }\n else {\n bufferAccessList = accessList !== null && accessList !== void 0 ? accessList : [];\n // build the JSON\n var json = [];\n for (var i = 0; i < bufferAccessList.length; i++) {\n var data = bufferAccessList[i];\n var address = ethereumjs_util_1.bufferToHex(data[0]);\n var storageKeys = [];\n for (var item = 0; item < data[1].length; item++) {\n storageKeys.push(ethereumjs_util_1.bufferToHex(data[1][item]));\n }\n var jsonItem = {\n address: address,\n storageKeys: storageKeys,\n };\n json.push(jsonItem);\n }\n AccessListJSON = json;\n }\n return {\n AccessListJSON: AccessListJSON,\n accessList: bufferAccessList,\n };\n };\n AccessLists.verifyAccessList = function (accessList) {\n for (var key = 0; key < accessList.length; key++) {\n var accessListItem = accessList[key];\n var address = accessListItem[0];\n var storageSlots = accessListItem[1];\n if (accessListItem[2] !== undefined) {\n throw new Error('Access list item cannot have 3 elements. It can only have an address, and an array of storage slots.');\n }\n if (address.length != 20) {\n throw new Error('Invalid EIP-2930 transaction: address length should be 20 bytes');\n }\n for (var storageSlot = 0; storageSlot < storageSlots.length; storageSlot++) {\n if (storageSlots[storageSlot].length != 32) {\n throw new Error('Invalid EIP-2930 transaction: storage slot length should be 32 bytes');\n }\n }\n }\n };\n AccessLists.getAccessListJSON = function (accessList) {\n var accessListJSON = [];\n for (var index = 0; index < accessList.length; index++) {\n var item = accessList[index];\n var JSONItem = {\n address: '0x' + ethereumjs_util_1.setLengthLeft(item[0], 20).toString('hex'),\n storageKeys: [],\n };\n var storageSlots = item[1];\n for (var slot = 0; slot < storageSlots.length; slot++) {\n var storageSlot = storageSlots[slot];\n JSONItem.storageKeys.push('0x' + ethereumjs_util_1.setLengthLeft(storageSlot, 32).toString('hex'));\n }\n accessListJSON.push(JSONItem);\n }\n return accessListJSON;\n };\n AccessLists.getDataFeeEIP2930 = function (accessList, common) {\n var accessListStorageKeyCost = common.param('gasPrices', 'accessListStorageKeyCost');\n var accessListAddressCost = common.param('gasPrices', 'accessListAddressCost');\n var slots = 0;\n for (var index = 0; index < accessList.length; index++) {\n var item = accessList[index];\n var storageSlots = item[1];\n slots += storageSlots.length;\n }\n var addresses = accessList.length;\n return addresses * accessListAddressCost + slots * accessListStorageKeyCost;\n };\n return AccessLists;\n}());\nexports.AccessLists = AccessLists;\n//# sourceMappingURL=util.js.map","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashToNumberKey = exports.numberToHashKey = exports.bodyKey = exports.headerKey = exports.tdKey = exports.bufBE8 = exports.CLIQUE_BLOCK_SIGNERS_KEY = exports.CLIQUE_VOTES_KEY = exports.CLIQUE_SIGNERS_KEY = exports.HEAD_BLOCK_KEY = exports.HEAD_HEADER_KEY = exports.HEADS_KEY = void 0;\n// Geth compatible DB keys\nvar HEADS_KEY = 'heads';\nexports.HEADS_KEY = HEADS_KEY;\n/**\n * Current canonical head for light sync\n */\nvar HEAD_HEADER_KEY = 'LastHeader';\nexports.HEAD_HEADER_KEY = HEAD_HEADER_KEY;\n/**\n * Current canonical head for full sync\n */\nvar HEAD_BLOCK_KEY = 'LastBlock';\nexports.HEAD_BLOCK_KEY = HEAD_BLOCK_KEY;\n/**\n * Cique signers\n */\nvar CLIQUE_SIGNERS_KEY = 'CliqueSigners';\nexports.CLIQUE_SIGNERS_KEY = CLIQUE_SIGNERS_KEY;\n/**\n * Clique votes\n */\nvar CLIQUE_VOTES_KEY = 'CliqueVotes';\nexports.CLIQUE_VOTES_KEY = CLIQUE_VOTES_KEY;\n/**\n * Cique block signers (snapshot)\n */\nvar CLIQUE_BLOCK_SIGNERS_KEY = 'CliqueBlockSignersSnapshot';\nexports.CLIQUE_BLOCK_SIGNERS_KEY = CLIQUE_BLOCK_SIGNERS_KEY;\n/**\n * headerPrefix + number + hash -> header\n */\nvar HEADER_PREFIX = Buffer.from('h');\n/**\n * headerPrefix + number + hash + tdSuffix -> td\n */\nvar TD_SUFFIX = Buffer.from('t');\n/**\n * headerPrefix + number + numSuffix -> hash\n */\nvar NUM_SUFFIX = Buffer.from('n');\n/**\n * blockHashPrefix + hash -> number\n */\nvar BLOCK_HASH_PEFIX = Buffer.from('H');\n/**\n * bodyPrefix + number + hash -> block body\n */\nvar BODY_PREFIX = Buffer.from('b');\n// Utility functions\n/**\n * Convert BN to big endian Buffer\n */\nvar bufBE8 = function (n) { return n.toArrayLike(Buffer, 'be', 8); };\nexports.bufBE8 = bufBE8;\nvar tdKey = function (n, hash) { return Buffer.concat([HEADER_PREFIX, bufBE8(n), hash, TD_SUFFIX]); };\nexports.tdKey = tdKey;\nvar headerKey = function (n, hash) { return Buffer.concat([HEADER_PREFIX, bufBE8(n), hash]); };\nexports.headerKey = headerKey;\nvar bodyKey = function (n, hash) { return Buffer.concat([BODY_PREFIX, bufBE8(n), hash]); };\nexports.bodyKey = bodyKey;\nvar numberToHashKey = function (n) { return Buffer.concat([HEADER_PREFIX, bufBE8(n), NUM_SUFFIX]); };\nexports.numberToHashKey = numberToHashKey;\nvar hashToNumberKey = function (hash) { return Buffer.concat([BLOCK_HASH_PEFIX, hash]); };\nexports.hashToNumberKey = hashToNumberKey;\n//# sourceMappingURL=constants.js.map","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('./export');\nvar global = require('../internals/global');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar fails = require('../internals/fails');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar defineProperty = require('../internals/object-define-property').f;\nvar forEach = require('../internals/array-iteration').forEach;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n\n if (!DESCRIPTORS || typeof NativeConstructor != 'function'\n || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n ) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else {\n Constructor = wrapper(function (target, iterable) {\n setInternalState(anInstance(target, Constructor, CONSTRUCTOR_NAME), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {\n createNonEnumerableProperty(Constructor.prototype, KEY, function (a, b) {\n var collection = getInternalState(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = collection[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n\n IS_WEAK || defineProperty(Constructor.prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).collection.size;\n }\n });\n }\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: true }, exported);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key]) target[key] = src[key];\n else redefine(target, key, src[key], options);\n } return target;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.genesisStateByName = exports.genesisStateById = void 0;\nconst genesisStates = {\n names: {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '5': 'goerli',\n '34180983699157880': 'yolov3',\n '7822': 'aleut',\n '1642': 'baikal',\n },\n mainnet: require('./mainnet.json'),\n ropsten: require('./ropsten.json'),\n rinkeby: require('./rinkeby.json'),\n kovan: require('./kovan.json'),\n goerli: require('./goerli.json'),\n yolov3: require('./yolov3.json'),\n aleut: require('./aleut.json'),\n baikal: require('./baikal.json'),\n};\n/**\n * Returns the genesis state by network ID\n * @param id ID of the network (e.g. 1)\n * @returns Dictionary with genesis accounts\n */\nfunction genesisStateById(id) {\n return genesisStates[genesisStates['names'][id]];\n}\nexports.genesisStateById = genesisStateById;\n/**\n * Returns the genesis state by network name\n * @param name Name of the network (e.g. 'mainnet')\n * @returns Dictionary with genesis accounts\n */\nfunction genesisStateByName(name) {\n return genesisStates[name];\n}\nexports.genesisStateByName = genesisStateByName;\n//# sourceMappingURL=index.js.map","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","'use strict';\n\nvar define = require('define-properties');\nvar util = require('util');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\n/* eslint-disable no-unused-vars */\nvar boundPromisify = function promisify(orig) {\n/* eslint-enable no-unused-vars */\n\treturn polyfill.apply(util, arguments);\n};\ndefine(boundPromisify, {\n\tcustom: polyfill.custom,\n\tcustomPromisifyArgs: polyfill.customPromisifyArgs,\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundPromisify;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar bound = callBind(getPolyfill(), Object);\n\ndefine(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsExtensible = require('./IsExtensible');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty\n\nmodule.exports = function CreateDataProperty(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar oldDesc = OrdinaryGetOwnProperty(O, P);\n\tvar extensible = !oldDesc || IsExtensible(O);\n\tvar immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);\n\tif (immutable || !extensible) {\n\t\treturn false;\n\t}\n\treturn DefineOwnProperty(\n\t\tIsDataDescriptor,\n\t\tSameValue,\n\t\tFromPropertyDescriptor,\n\t\tO,\n\t\tP,\n\t\t{\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Value]]': V,\n\t\t\t'[[Writable]]': true\n\t\t}\n\t);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\n// eslint-disable-next-line max-params\nmodule.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {\n\tif (!$defineProperty) {\n\t\tif (!IsDataDescriptor(desc)) {\n\t\t\t// ES3 does not support getters/setters\n\t\t\treturn false;\n\t\t}\n\t\tif (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// fallback for ES3\n\t\tif (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {\n\t\t\t// a non-enumerable existing property\n\t\t\treturn false;\n\t\t}\n\n\t\t// property does not exist at all, or exists but is enumerable\n\t\tvar V = desc['[[Value]]'];\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tO[P] = V; // will use [[Define]]\n\t\treturn SameValue(O[P], V);\n\t}\n\t$defineProperty(O, P, FromPropertyDescriptor(desc));\n\treturn true;\n};\n","'use strict';\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor\n\nmodule.exports = function FromPropertyDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn Desc;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tvar obj = {};\n\tif ('[[Value]]' in Desc) {\n\t\tobj.value = Desc['[[Value]]'];\n\t}\n\tif ('[[Writable]]' in Desc) {\n\t\tobj.writable = Desc['[[Writable]]'];\n\t}\n\tif ('[[Get]]' in Desc) {\n\t\tobj.get = Desc['[[Get]]'];\n\t}\n\tif ('[[Set]]' in Desc) {\n\t\tobj.set = Desc['[[Set]]'];\n\t}\n\tif ('[[Enumerable]]' in Desc) {\n\t\tobj.enumerable = Desc['[[Enumerable]]'];\n\t}\n\tif ('[[Configurable]]' in Desc) {\n\t\tobj.configurable = Desc['[[Configurable]]'];\n\t}\n\treturn obj;\n};\n","'use strict';\n\n// https://262.ecma-international.org/5.1/#sec-8\n\nmodule.exports = function Type(x) {\n\tif (x === null) {\n\t\treturn 'Null';\n\t}\n\tif (typeof x === 'undefined') {\n\t\treturn 'Undefined';\n\t}\n\tif (typeof x === 'function' || typeof x === 'object') {\n\t\treturn 'Object';\n\t}\n\tif (typeof x === 'number') {\n\t\treturn 'Number';\n\t}\n\tif (typeof x === 'boolean') {\n\t\treturn 'Boolean';\n\t}\n\tif (typeof x === 'string') {\n\t\treturn 'String';\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = require('../helpers/getOwnPropertyDescriptor');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\nvar has = require('has');\n\nvar IsArray = require('./IsArray');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar IsRegExp = require('./IsRegExp');\nvar ToPropertyDescriptor = require('./ToPropertyDescriptor');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty\n\nmodule.exports = function OrdinaryGetOwnProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: O must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P must be a Property Key');\n\t}\n\tif (!has(O, P)) {\n\t\treturn void 0;\n\t}\n\tif (!$gOPD) {\n\t\t// ES3 / IE 8 fallback\n\t\tvar arrayLength = IsArray(O) && P === 'length';\n\t\tvar regexLastIndex = IsRegExp(O) && P === 'lastIndex';\n\t\treturn {\n\t\t\t'[[Configurable]]': !(arrayLength || regexLastIndex),\n\t\t\t'[[Enumerable]]': $isEnumerable(O, P),\n\t\t\t'[[Value]]': O[P],\n\t\t\t'[[Writable]]': true\n\t\t};\n\t}\n\treturn ToPropertyDescriptor($gOPD(O, P));\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\n\n// eslint-disable-next-line global-require\nvar toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isarray\n\nmodule.exports = $Array.isArray || function IsArray(argument) {\n\treturn toStr(argument) === '[object Array]';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $match = GetIntrinsic('%Symbol.match%', true);\n\nvar hasRegExpMatcher = require('is-regex');\n\nvar ToBoolean = require('./ToBoolean');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isregexp\n\nmodule.exports = function IsRegExp(argument) {\n\tif (!argument || typeof argument !== 'object') {\n\t\treturn false;\n\t}\n\tif ($match) {\n\t\tvar isRegExp = argument[$match];\n\t\tif (typeof isRegExp !== 'undefined') {\n\t\t\treturn ToBoolean(isRegExp);\n\t\t}\n\t}\n\treturn hasRegExpMatcher(argument);\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasSymbols = require('has-symbols/shams')();\nvar hasToStringTag = hasSymbols && !!Symbol.toStringTag;\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar has = require('has');\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Type = require('./Type');\nvar ToBoolean = require('./ToBoolean');\nvar IsCallable = require('./IsCallable');\n\n// https://262.ecma-international.org/5.1/#sec-8.10.5\n\nmodule.exports = function ToPropertyDescriptor(Obj) {\n\tif (Type(Obj) !== 'Object') {\n\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t}\n\n\tvar desc = {};\n\tif (has(Obj, 'enumerable')) {\n\t\tdesc['[[Enumerable]]'] = ToBoolean(Obj.enumerable);\n\t}\n\tif (has(Obj, 'configurable')) {\n\t\tdesc['[[Configurable]]'] = ToBoolean(Obj.configurable);\n\t}\n\tif (has(Obj, 'value')) {\n\t\tdesc['[[Value]]'] = Obj.value;\n\t}\n\tif (has(Obj, 'writable')) {\n\t\tdesc['[[Writable]]'] = ToBoolean(Obj.writable);\n\t}\n\tif (has(Obj, 'get')) {\n\t\tvar getter = Obj.get;\n\t\tif (typeof getter !== 'undefined' && !IsCallable(getter)) {\n\t\t\tthrow new $TypeError('getter must be a function');\n\t\t}\n\t\tdesc['[[Get]]'] = getter;\n\t}\n\tif (has(Obj, 'set')) {\n\t\tvar setter = Obj.set;\n\t\tif (typeof setter !== 'undefined' && !IsCallable(setter)) {\n\t\t\tthrow new $TypeError('setter must be a function');\n\t\t}\n\t\tdesc['[[Set]]'] = setter;\n\t}\n\n\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t}\n\treturn desc;\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.11\n\nmodule.exports = require('is-callable');\n","'use strict';\n\nvar has = require('has');\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor\n\nmodule.exports = function IsDataDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar isPrimitive = require('../helpers/isPrimitive');\n\nvar $preventExtensions = $Object.preventExtensions;\nvar $isExtensible = $Object.isExtensible;\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o\n\nmodule.exports = $preventExtensions\n\t? function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj) && $isExtensible(obj);\n\t}\n\t: function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj);\n\t};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar $isNaN = require('../helpers/isNaN');\n\n// http://262.ecma-international.org/5.1/#sec-9.12\n\nmodule.exports = function SameValue(x, y) {\n\tif (x === y) { // 0 === -0, but they are not identical.\n\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\treturn true;\n\t}\n\treturn $isNaN(x) && $isNaN(y);\n};\n","'use strict';\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar RequireObjectCoercible = require('./RequireObjectCoercible');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toobject\n\nmodule.exports = function ToObject(value) {\n\tRequireObjectCoercible(value);\n\treturn $Object(value);\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimGetOwnPropertyDescriptors() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ getOwnPropertyDescriptors: polyfill },\n\t\t{ getOwnPropertyDescriptors: function () { return Object.getOwnPropertyDescriptors !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar util = require('util');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimUtilPromisify() {\n\tvar polyfill = getPolyfill();\n\tif (polyfill !== util.promisify) {\n\t\tObject.defineProperty(util, 'promisify', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: polyfill,\n\t\t\twritable: true\n\t\t});\n\t}\n\treturn polyfill;\n};\n","const crypto = require('crypto')\nconst mclCreateModule = require('./mcl_c.js')\nconst mclSetupFactory = require('./mcl')\n\nconst getRandomValues = crypto.randomFillSync\nconst mcl = mclSetupFactory(mclCreateModule, getRandomValues)\n\nmodule.exports = mcl\n","\nvar Module = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(Module) {\n Module = Module || {};\n\nnull;\n\nvar Module = typeof Module !== \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = {};\n\nvar key;\n\nfor (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n}\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = function(status, toThrow) {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = false;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar ENVIRONMENT_IS_NODE = false;\n\nvar ENVIRONMENT_IS_SHELL = false;\n\nENVIRONMENT_IS_WEB = typeof window === \"object\";\n\nENVIRONMENT_IS_WORKER = typeof importScripts === \"function\";\n\nENVIRONMENT_IS_NODE = typeof process === \"object\" && typeof process.versions === \"object\" && typeof process.versions.node === \"string\";\n\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nvar nodeFS;\n\nvar nodePath;\n\nif (ENVIRONMENT_IS_NODE) {\n if (ENVIRONMENT_IS_WORKER) {\n// scriptDirectory = require(\"path\").dirname(scriptDirectory) + \"/\";\n } else {\n scriptDirectory = __dirname + \"/\";\n }\n read_ = function shell_read(filename, binary) {\n var ret = tryParseAsDataURI(filename);\n if (ret) {\n return binary ? ret : ret.toString();\n }\n// if (!nodeFS) nodeFS = require(\"fs\");\n// if (!nodePath) nodePath = require(\"path\");\n filename = nodePath[\"normalize\"](filename);\n return nodeFS[\"readFileSync\"](filename, binary ? null : \"utf8\");\n };\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n assert(ret.buffer);\n return ret;\n };\n if (process[\"argv\"].length > 1) {\n thisProgram = process[\"argv\"][1].replace(/\\\\/g, \"/\");\n }\n arguments_ = process[\"argv\"].slice(2);\n quit_ = function(status) {\n process[\"exit\"](status);\n };\n Module[\"inspect\"] = function() {\n return \"[Emscripten Module object]\";\n };\n} else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != \"undefined\") {\n read_ = function shell_read(f) {\n var data = tryParseAsDataURI(f);\n if (data) {\n return intArrayToString(data);\n }\n return read(f);\n };\n }\n readBinary = function readBinary(f) {\n var data;\n data = tryParseAsDataURI(f);\n if (data) {\n return data;\n }\n if (typeof readbuffer === \"function\") {\n return new Uint8Array(readbuffer(f));\n }\n data = read(f, \"binary\");\n assert(typeof data === \"object\");\n return data;\n };\n if (typeof scriptArgs != \"undefined\") {\n arguments_ = scriptArgs;\n } else if (typeof arguments != \"undefined\") {\n arguments_ = arguments;\n }\n if (typeof quit === \"function\") {\n quit_ = function(status) {\n quit(status);\n };\n }\n if (typeof print !== \"undefined\") {\n if (typeof console === \"undefined\") console = {};\n console.log = print;\n console.warn = console.error = typeof printErr !== \"undefined\" ? printErr : print;\n }\n} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = function shell_read(url) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n } catch (err) {\n var data = tryParseAsDataURI(url);\n if (data) {\n return intArrayToString(data);\n }\n throw err;\n }\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function readBinary(url) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n } catch (err) {\n var data = tryParseAsDataURI(url);\n if (data) {\n return data;\n }\n throw err;\n }\n };\n }\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n var data = tryParseAsDataURI(url);\n if (data) {\n onload(data.buffer);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = function(title) {\n document.title = title;\n };\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nfor (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n}\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime;\n\nif (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n\nif (typeof WebAssembly !== \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar wasmTable;\n\nvar ABORT = false;\n\nvar EXITSTATUS = 0;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n}\n\nvar WASM_PAGE_SIZE = 65536;\n\nvar buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n}\n\nvar INITIAL_INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 16777216;\n\nif (Module[\"wasmMemory\"]) {\n wasmMemory = Module[\"wasmMemory\"];\n} else {\n wasmMemory = new WebAssembly.Memory({\n \"initial\": INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE,\n \"maximum\": INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE\n });\n}\n\nif (wasmMemory) {\n buffer = wasmMemory.buffer;\n}\n\nINITIAL_INITIAL_MEMORY = buffer.byteLength;\n\nupdateGlobalBufferAndViews(buffer);\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nModule[\"preloadedImages\"] = {};\n\nModule[\"preloadedAudios\"] = {};\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what += \"\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what = \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nfunction hasPrefix(str, prefix) {\n return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return hasPrefix(filename, dataURIPrefix);\n}\n\nvar fileURIPrefix = \"file://\";\n\nfunction isFileURI(filename) {\n return hasPrefix(filename, fileURIPrefix);\n}\n\nvar wasmBinaryFile = \"data:application/octet-stream;base64,AGFzbQEAAAABZg9gBH9/f38AYAN/f38AYAJ/fwBgAX8AYAF/AX9gA39/fwF/YAR/f39/AX9gAn9/AX9gBn9/f39/fwBgBX9/f39/AGAAAGAAAX9gBX9/f39/AX9gB39/f39/f38AYAZ/f39/f38BfwIdBAFhAWIABQFhAWMABAFhAWQABQFhAWECAYACgAIDnwSdBAUAAgIBCQEBAQEBAQMCAgICAgIBAAAFAQICDQEOAgEEAQcCAgEGAQgDBAEFAwMCAQACAAIJAgUEAQEGAQEBAQACAgMDCQEBAQEIBQIJBgcBCQcCCQAFAQAAAQQBBAwGAAIBAAICAgIEAQAFAAUGBQkABQYGBwMBAAAAAQEJAAcCAwIBAgIBCQIBAAACBAcCAAcCBAQAAAEABAABBQAAAQACCwACAQACAQACAQACAQEACQUFCgAFAAABAQAAAgEBAQABAgEBAAAFAAABAQAAAQEBBQUAAQIBAQAAAAMEAwQEAAkCAgcCAQICAQECAgICAAwCAQEBAQEBBAICAAIBAgIGAAYAAAMCAwMKCgEKAQEKCgIKCgoKBAcEBAcDAQUFAwcHBQQEBAQEBwQFBQUFBQMDBQUGBgMDAgkGCQYGCQYJBgkABgYJCQkJAQICCwEAAQICAAIBAAAGAAAGAAABAQEBAQEBAgICAgICBQYEBAcFAQYDAQEBBAECAgIDBQYBAQUCBAQHBwcHAAQFBgMBAQEBAQICAAIFBgEFBAQHBwcHBAQBBAUGAwcHAgcHBwcBAQEBAQICAQEBAQICAgQBAQEBAgICBQYDBQIBAQQBAQQEBAIEBAcEBQUFBQAFBQYDBAsDAQcHCwsLBggGAAgIBgICBwsDBAUBAQEFAAEFBgYCBwcEAgIBAAEBAgEBAAAFBQAABAEBAAECAQEAAwYEBwFwAaEBoQEGCQF/AUGwhsICCweaB6IBAWUBAAFmALYBAWcA9wMBaAD2AwFpAPUDAWoA9AMBawDqAwFsAOkDAW0ApAEBbgCkAQFvAOgDAXAA5wMBcQDmAwFyAOQDAXMA4wMBdADiAwF1AOEDAXYAowEBdwCjAQF4AOADAXkA3wMBegDeAwFBANwDAUIA2gMBQwDZAwFEANgDAUUA1wMBRgDWAwFHANUDAUgA0wMBSQDSAwFKANEDAUsAzgMBTADLAwFNAMoDAU4AyAMBTwDHAwFQAMYDAVEAxQMBUgDEAwFTAMMDAVQAwgMBVQDBAwFWAMADAVcAvgMBWAC9AwFZALwDAVoAuwMBXwC6AwEkALkDAmFhALgDAmJhALcDAmNhALYDAmRhADgCZWEAtAMCZmEAswMCZ2EAsgMCaGEAsQMCaWEAsAMCamEArQMCa2EAqgMCbGEAqQMCbWEAqAMCbmEApwMCb2EApgMCcGEAogMCcWEAngMCcmEAnQMCc2EAnAMCdGEAmgMCdWEAmQMCdmEAmAMCd2EAlgMCeGEAlQMCeWEAlAMCemEAkgMCQWEAkQMCQmEAkAMCQ2EAjwMCRGEAjgMCRWEAjQMCRmEAjAMCR2EAigMCSGEAhgMCSWEAhQMCSmEAgwMCS2EAgAMCTGEA/wICTWEA/QICTmEA/AICT2EA+wICUGEA+gICUWEA+AICUmEA9wICU2EA9gICVGEA9QICVWEAkQECVmEAkQECV2EA9AICWGEA8gICWWEA8QICWmEA8AICX2EA7wICJGEA7gICYWIA7QICYmIA6wICY2IA6gICZGIA6QICZWIA5wICZmIA5gICZ2IA5AICaGIA4wICaWIA4gICamIA4QICa2IA4AICbGIA3wICbWIA3AICbmIA2QICb2IA1wICcGIA1gICcWIA0gICcmIA0QICc2IAzwICdGIAzgICdWIAzAICdmIAywICd2IAyQICeGIAxwICeWIAwwICemIAwQICQWIAvwICQmIAvgICQ2IAvAICRGIAuQICRWIAuAICRmIAhwECR2IAhwECSGIAtwICSWIAtgICSmIAtQICS2IAtAICTGIAswICTWIAsQICTmIAsAICT2IArwICUGIArgICUWIArAICUmIAqwICU2IAqgICVGIAqQICVWIApwICVmIApgICV2IApQICWGIApAICWWIAoQICWmIAoAICX2IAngICJGIAnQICYWMAnAICYmMAmwICY2MAmgICZGMAmQIJswIBAEEBC6ABvwGeBJUEigSCBP4DsQH5A6UB7gPlA6UB3QPUA8kDvwO1A6wDpQOaAZcDkwOaAYsDhAP+AvkC8wLsAuUCjAHVAtACjAHFAroCsgKoAp8ClAKOAoAB/gH4AYAB8gHsAekB4wHdAS453AHbAdoB2QHYAdcB1gHVAdQBxgLTAdIB0QFz0AHPAc4BzQHMAcsBygFxyQHIAccBxgHFAcQB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KAIAEQEACwJAIANBwABxDQBBlcYBLQAARQ0AIAAgAEHowwFBmLYBQbzFASgCABEAAAsgAUEBOgAACyAKQZADaiQAC4sEAQR/IwBBwAFrIgIkAAJAAkBBtLcBKAIAQQFGBEAgACABRgRAIABB4ABqIQMMAwsgACABQajFASgCABECACAAQTBqIAFBMGpBqMUBKAIAEQIADAELIAAgAUcEQCAAIAFBqMUBKAIAEQIACyAAQTBqIAFBMGpBmLYBQbDFASgCABEBAAsgAUHgAGohAyAAQeAAaiEEAkBBtLcBKAIAQQFGBEAgACABRg0CIABB4ABqIAFB4ABqQajFASgCABECACAAQZABaiABQZABakGoxQEoAgARAgAMAQsgACABRwRAIAQgA0GoxQEoAgARAgALIABBkAFqIAFBkAFqQZi2AUGwxQEoAgARAQALIAQhAwsgAUHAAWohBCAAQcABaiEFAkBBtLcBKAIAQQFGBEAgACABRg0BIAUgBEGoxQEoAgARAgAgAEHwAWogAUHwAWpBqMUBKAIAEQIADAELIAAgAUcEQCAFIARBqMUBKAIAEQIACyAAQfABaiABQfABakGYtgFBsMUBKAIAEQEACyACIABB0LABQYjFASgCABEBACAAIAJBmLYBQezFASgCABEBACAAQTBqIAJB4ABqIgBBmLYBQezFASgCABEBACACIANBsLEBQYjFASgCABEBACADIAJBmLYBQezFASgCABEBACADQTBqIABBmLYBQezFASgCABEBACACQcABaiQAC+gIAQJ/IwBBwAFrIgMkAEG0twEoAgAhAgJAAkACQAJAAkACQCAAIAFHBEAgACABQajFASgCABECACACQQFHDQEgAEEwaiABQTBqQajFASgCABECAAwCCyACQQFGDQUgAEEwaiABQTBqQZi2AUGwxQEoAgARAQBBtLcBKAIAQQFHDQIMBQsgAEEwaiABQTBqQZi2AUGwxQEoAgARAQALQbS3ASgCACECIABB4ABqIAFB4ABqQajFASgCABECACACQQFGDQEgAEGQAWogAUGQAWpBmLYBQbDFASgCABEBAAwCCyAAQZABaiABQZABakGYtgFBsMUBKAIAEQEAQbS3ASgCAEEBRg0CIABB8AFqIAFB8AFqQZi2AUGwxQEoAgARAQBBtLcBKAIAQQFGDQIgAEHQAmogAUHQAmpBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNAiAAQbADaiABQbADakGYtgFBsMUBKAIAEQEAQbS3ASgCAEEBRg0CIABBkARqIAFBkARqQZi2AUGwxQEoAgARAQAMAgsgAEGQAWogAUGQAWpBqMUBKAIAEQIAC0G0twEoAgAhAiAAQcABaiABQcABakGoxQEoAgARAgACQCACQQFHBEAgAEHwAWogAUHwAWpBmLYBQbDFASgCABEBAAwBCyAAQfABaiABQfABakGoxQEoAgARAgALQbS3ASgCACECIABBoAJqIAFBoAJqQajFASgCABECAAJAIAJBAUcEQCAAQdACaiABQdACakGYtgFBsMUBKAIAEQEADAELIABB0AJqIAFB0AJqQajFASgCABECAAtBtLcBKAIAIQIgAEGAA2ogAUGAA2pBqMUBKAIAEQIAAkAgAkEBRwRAIABBsANqIAFBsANqQZi2AUGwxQEoAgARAQAMAQsgAEGwA2ogAUGwA2pBqMUBKAIAEQIAC0G0twEoAgAhAiAAQeADaiABQeADakGoxQEoAgARAgAgAkEBRwRAIABBkARqIAFBkARqQZi2AUGwxQEoAgARAQAMAQsgAEGQBGogAUGQBGpBqMUBKAIAEQIACyADIABB4ABqIgFBsOEBQYjFASgCABEBACABIANBmLYBQezFASgCABEBACAAQZABaiADQeAAaiIBQZi2AUHsxQEoAgARAQAgAyAAQcABaiICQZDiAUGIxQEoAgARAQAgAiADQZi2AUHsxQEoAgARAQAgAEHwAWogAUGYtgFB7MUBKAIAEQEAIAMgAEGgAmoiAkHw4gFBiMUBKAIAEQEAIAIgA0GYtgFB7MUBKAIAEQEAIABB0AJqIAFBmLYBQezFASgCABEBACADIABBgANqIgJB0OMBQYjFASgCABEBACACIANBmLYBQezFASgCABEBACAAQbADaiABQZi2AUHsxQEoAgARAQAgAyAAQeADaiICQbDkAUGIxQEoAgARAQAgAiADQZi2AUHsxQEoAgARAQAgAEGQBGogAUGYtgFB7MUBKAIAEQEAIANBwAFqJAALuQkBDX8jAEHAE2siAyQAIANB4A9qIAEgAUGgAmoiBEGYtgFBtMUBKAIAEQAAIANBkBBqIAFBMGogAUHQAmpBmLYBQbTFASgCABEAACADQcAQaiABQeAAaiABQYADakGYtgFBtMUBKAIAEQAAIANB8BBqIAFBkAFqIAFBsANqQZi2AUG0xQEoAgARAAAgA0GgEWogAUHAAWogAUHgA2pBmLYBQbTFASgCABEAACADQdARaiABQfABaiABQZAEakGYtgFBtMUBKAIAEQAAIANBwA1qIAIgAkGgAmoiBUGYtgFBtMUBKAIAEQAAIANB8A1qIAJBMGogAkHQAmpBmLYBQbTFASgCABEAACADQaAOaiACQeAAaiACQYADakGYtgFBtMUBKAIAEQAAIANB0A5qIAJBkAFqIAJBsANqQZi2AUG0xQEoAgARAAAgA0GAD2ogAkHAAWogAkHgA2pBmLYBQbTFASgCABEAACADQbAPaiACQfABaiACQZAEakGYtgFBtMUBKAIAEQAAIANBwARqIAEgAhA7IAMgBCAFEDsgA0GAEmogA0GAA2oiB0GQxQEoAgARAgAgA0GADGoiASADQcABaiIIIANBwAdqIglBmLYBQeTFASgCABEAACADQeAMaiICIANBoAJqIgogA0GgCGoiC0GYtgFB5MUBKAIAEQAAIANBwApqIgQgAyADQYAGaiIMQZi2AUHkxQEoAgARAAAgA0GgC2oiBSADQeAAaiINIANB4AZqIg5BmLYBQeTFASgCABEAACADQYAJaiADQYASaiADQcAEakGYtgFB5MUBKAIAEQAAIANB4AlqIgYgA0HgEmogA0GgBWoiD0GYtgFB5MUBKAIAEQAAIAAgA0GACWpBmLYBQezFASgCABEBACAAQTBqIAZBmLYBQezFASgCABEBACAAQeAAaiAEQZi2AUHsxQEoAgARAQAgAEGQAWogBUGYtgFB7MUBKAIAEQEAIABBwAFqIAFBmLYBQezFASgCABEBACAAQfABaiACQZi2AUHsxQEoAgARAQAgA0GACWogA0HgD2ogA0HADWoQOyADQYAJaiADQYAJaiADQcAEakGYtgFB6MUBKAIAEQAAIAYgBiAPQZi2AUHoxQEoAgARAAAgBCAEIAxBmLYBQejFASgCABEAACAFIAUgDkGYtgFB6MUBKAIAEQAAIAEgASAJQZi2AUHoxQEoAgARAAAgAiACIAtBmLYBQejFASgCABEAACADQYAJaiADQYAJaiADQZi2AUHoxQEoAgARAAAgBiAGIA1BmLYBQejFASgCABEAACAEIAQgCEGYtgFB6MUBKAIAEQAAIAUgBSAKQZi2AUHoxQEoAgARAAAgASABIAdBmLYBQejFASgCABEAACACIAIgA0HgA2pBmLYBQejFASgCABEAACAAQaACaiADQYAJakGYtgFB7MUBKAIAEQEAIABB0AJqIAZBmLYBQezFASgCABEBACAAQYADaiAEQZi2AUHsxQEoAgARAQAgAEGwA2ogBUGYtgFB7MUBKAIAEQEAIABB4ANqIAFBmLYBQezFASgCABEBACAAQZAEaiACQZi2AUHsxQEoAgARAQAgA0HAE2okAAuHBQIKfwJ+IwAiBiENAkAgBCACTQRAIAEhCSACIQUgAyEBIAQhAgwBCyADIQkgBCEFCwJAIAAgCUcNACAGIAVBAnRBD2pBcHFrIgkiBiQAIAVFDQBBACEEA0AgCSAEQQJ0IgNqIAAgA2ooAgA2AgAgBEEBaiIEIAVHDQALCwJAIAAgAUcNACAGIAJBAnRBD2pBcHFrIgEiBiQAIAJFDQBBACEEA0AgASAEQQJ0IgNqIAAgA2ooAgA2AgAgBEEBaiIEIAJHDQALCwJAIAVFBEBBACEEDAELIAE1AgAhD0EAIQNBACEEA0AgACADQQJ0IgdqIAQgByAJajUCACAPfiIQp2oiBzYCACAQQiCIpyAHIARJaiEEIANBAWoiAyAFRw0ACwsgACAFQQJ0IgNqIgcgBDYCAAJAIAJBf2oiBEUNACAHQQRqQQAgBEECdBAWIAYgA0ETakFwcWsiByQAIAJBAkkNACAHIAVBAnRqIQxBASEGIAVFBEAgBUF/RiEBA0AgDEEANgIAIAFFBEAgACAGQQJ0aiIDIAMoAgAgBygCAGo2AgALIAZBAWoiBiACRw0ACwwBCyAFQX9GIQ4DQCABIAZBAnQiCmo1AgAhD0EAIQNBACEEA0AgByADQQJ0IghqIAQgCCAJajUCACAPfiIQp2oiCDYCACAQQiCIpyAIIARJaiEEIANBAWoiAyAFRw0ACyAMIAQ2AgAgDkUEQCAAIApqIQpBACEDQQAhBANAIAogBEECdCIIaiILIAsoAgAiCyADaiIDIAcgCGooAgBqIgg2AgAgCCADSSADIAtJaiEDIAQgBUchCCAEQQFqIQQgCA0ACwsgBkEBaiIGIAJHDQALCyANJAALpwwBCn8jAEHABGsiAyQAAkACQCABQcABaiIEQaDFASgCABEEAEUNACABQfABakGgxQEoAgARBABFDQAgACACQajFASgCABECACAAQTBqIAJBMGpBqMUBKAIAEQIAIABB4ABqIAJB4ABqQajFASgCABECACAAQZABaiACQZABakGoxQEoAgARAgAgAEHAAWogAkHAAWpBqMUBKAIAEQIAIABB8AFqIAJB8AFqQajFASgCABECAAwBCwJAIAJBwAFqQaDFASgCABEEAEUNACACQfABakGgxQEoAgARBABFDQAgACABQajFASgCABECACAAQTBqIAFBMGpBqMUBKAIAEQIAIABB4ABqIAFB4ABqQajFASgCABECACAAQZABaiABQZABakGoxQEoAgARAgAgAEHAAWogBEGoxQEoAgARAgAgAEHwAWogAUHwAWpBqMUBKAIAEQIADAELIANB4ABqIAIgAUGYtgFBuMUBKAIAEQAAIANBkAFqIgUgAkEwaiIIIAFBMGoiB0GYtgFBuMUBKAIAEQAAAkAgA0HgAGpBoMUBKAIAEQQARQ0AIAVBoMUBKAIAEQQARQ0AAkACQEGYxQEoAgAiBkUNACABKAJgIAIoAmBHDQFBASEEAkADQCAEIgUgBkYNASAFQQFqIQQgASAFQQJ0IgdqKAJgIAIgB2ooAmBGDQALIAUgBkkNAgsgASgCkAEgAigCkAFHDQFBASEEA0AgBCIFIAZGDQEgBUEBaiEEIAEgBUECdCIHaigCkAEgAiAHaigCkAFGDQALIAUgBkkNAQsgACABEBQMAgsgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMAIABBkAFqQaTFASgCABEDACAAQcABakGkxQEoAgARAwAgAEHwAWpBpMUBKAIAEQMADAELIAMgAkHgAGogAUHgAGoiCUGYtgFBuMUBKAIAEQAAIANBMGoiBiACQZABaiABQZABaiIKQZi2AUG4xQEoAgARAAAgA0GAA2ogA0HgAGpB1MUBKAIAEQIAIANBwAFqIAVB1MUBKAIAEQIAIANBgANqIANBgANqIANBwAFqQfjFASgCABEFABogA0HQAmogA0GAA2pBmLYBQezFASgCABEBACADQdACaiADQdACakGUtgFByMUBKAIAEQEAIANBwAFqIANB4ABqIANB0AJqQZi2AUG8xQEoAgARAAAgA0HwAWoiBCAFIANB0AJqQZi2AUG8xQEoAgARAAAgBCAEQZi2AUGwxQEoAgARAQAgA0GAA2ogAyADQcABakGIxQEoAgARAQAgA0HgAGogA0GAA2pBmLYBQezFASgCABEBACAFIANB4ANqIgtBmLYBQezFASgCABEBACADQYADakGIwwFBqMUBKAIAEQIAIANBsANqIgxBpMUBKAIAEQMAIABBwAFqIANBgANqQajFASgCABECACAAQfABaiAMQajFASgCABECACADQYADaiAFQZi2AUHExQEoAgARAQAgA0GAA2ogA0GAA2ogA0HgAGpBmLYBQbzFASgCABEAACADQdACaiADQeAAaiAFQZi2AUG0xQEoAgARAAAgA0GgAmogA0HgAGogBUGYtgFBuMUBKAIAEQAAIANBwAFqIANB0AJqIANBoAJqQZi2AUG8xQEoAgARAAAgBCADQYADakGoxQEoAgARAgAgA0HAAWogA0HAAWogAUGYtgFBuMUBKAIAEQAAIAQgBCAHQZi2AUG4xQEoAgARAAAgA0HAAWogA0HAAWogAkGYtgFBuMUBKAIAEQAAIAQgBCAIQZi2AUG4xQEoAgARAAAgAyABIANBwAFqQZi2AUG4xQEoAgARAAAgBiAHIARBmLYBQbjFASgCABEAACADQYADaiADIANB4ABqQYjFASgCABEBACADIANBgANqQZi2AUHsxQEoAgARAQAgBiALQZi2AUHsxQEoAgARAQAgAEHgAGogAyAJQZi2AUG4xQEoAgARAAAgAEGQAWogBiAKQZi2AUG4xQEoAgARAAAgACADQcABakGoxQEoAgARAgAgAEEwaiAEQajFASgCABECAAsgA0HABGokAAvYFQEKfyMAQYAGayIDJAACQAJAIAFBwAFqIgRBoMUBKAIAEQQARQ0AIAFB8AFqQaDFASgCABEEAEUNACAAIAJBqMUBKAIAEQIAIABBMGogAkEwakGoxQEoAgARAgAgAEHgAGogAkHgAGpBqMUBKAIAEQIAIABBkAFqIAJBkAFqQajFASgCABECACAAQcABaiACQcABakGoxQEoAgARAgAgAEHwAWogAkHwAWpBqMUBKAIAEQIADAELAkAgAkHAAWpBoMUBKAIAEQQARQ0AIAJB8AFqQaDFASgCABEEAEUNACAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogAUHgAGpBqMUBKAIAEQIAIABBkAFqIAFBkAFqQajFASgCABECACAAQcABaiAEQajFASgCABECACAAQfABaiABQfABakGoxQEoAgARAgAMAQsgAUHAAWohBgJAAkACQAJAQZjFASgCACIHRQ0AIAYoAgBBiMMBKAIARgRAQQEhBANAIAQiBSAHRg0CIAVBAWohBCABIAVBAnQiCGooAsABIAhBiMMBaigCAEYNAAsgBSAHTw0BCyACQcABaiEIDAELIAJBwAFqIQggAUHwAWpBoMUBKAIAEQQAIQpBmMUBKAIAIgdFDQELIAIoAsABQYjDASgCAEcNAUEBIQQDQCAEIgUgB0YNASAFQQFqIQQgAiAFQQJ0IglqKALAASAJQYjDAWooAgBGDQALIAUgB0kNAQsgAkHwAWpBoMUBKAIAEQQAIQsLAkAgCwRAIANBgANqIAFBqMUBKAIAEQIAIANBsANqIAFBMGpBqMUBKAIAEQIAIANBoAJqIAFB4ABqQajFASgCABECACADQdACaiABQZABakGoxQEoAgARAgAMAQsgA0HABGogASAIQYjFASgCABEBACADQYADaiADQcAEakGYtgFB7MUBKAIAEQEAIANBsANqIANBoAVqIgRBmLYBQezFASgCABEBACADQcAEaiABQeAAaiAIQYjFASgCABEBACADQaACaiADQcAEakGYtgFB7MUBKAIAEQEAIANB0AJqIARBmLYBQezFASgCABEBAAsCQCAKBEAgA0HgAGogAkHgAGpBqMUBKAIAEQIAIANBkAFqIAJBkAFqQajFASgCABECACADQcABaiACQajFASgCABECACADQfABaiACQTBqQajFASgCABECAAwBCyADQcAEaiACQeAAaiAGQYjFASgCABEBACADQeAAaiADQcAEakGYtgFB7MUBKAIAEQEAIANBkAFqIANBoAVqIgRBmLYBQezFASgCABEBACADQcAEaiACIAZBiMUBKAIAEQEAIANBwAFqIANBwARqQZi2AUHsxQEoAgARAQAgA0HwAWogBEGYtgFB7MUBKAIAEQEACyADQcABaiADQcABaiADQYADakGYtgFBuMUBKAIAEQAAIANB8AFqIgUgBSADQbADaiIHQZi2AUG4xQEoAgARAAACQCADQcABakGgxQEoAgARBABFDQAgBUGgxQEoAgARBABFDQACQAJAQZjFASgCACIFRQ0AIAMoAmAgAygCoAJHDQFBASECAkADQCACIgQgBUYNASAEQQFqIQIgBEECdCIGIANB4ABqaigCACADQaACaiAGaigCAEYNAAsgBCAFSQ0CCyADKAKQASADKALQAkcNAUEBIQIDQCACIgQgBUYNASAEQQFqIQIgAyAEQQJ0IgZqKAKQASADIAZqKALQAkYNAAsgBCAFSQ0BCyAAIAEQEAwCCyAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgAEGQAWpBpMUBKAIAEQMAIABBwAFqQaTFASgCABEDACAAQfABakGkxQEoAgARAwAMAQsgAEHgAGoiBCADQeAAaiADQaACakGYtgFBuMUBKAIAEQAAIABBkAFqIgkgA0GQAWoiDCADQdACakGYtgFBuMUBKAIAEQAAIANBwARqIAlBmLYBQcTFASgCABEBACADQcAEaiADQcAEaiAEQZi2AUG8xQEoAgARAAAgAyAEIAlBmLYBQbTFASgCABEAACADQZAEaiAEIAlBmLYBQbjFASgCABEAACADQeAAaiADIANBkARqQZi2AUG8xQEoAgARAAAgDCADQcAEakGoxQEoAgARAgAgA0HABGogBUGYtgFBxMUBKAIAEQEAIANBwARqIANBwARqIANBwAFqQZi2AUG8xQEoAgARAAAgA0GQBGogA0HAAWogBUGYtgFBtMUBKAIAEQAAIANB4ANqIANBwAFqIAVBmLYBQbjFASgCABEAACADIANBkARqIANB4ANqQZi2AUG8xQEoAgARAAAgA0EwaiIFIANBwARqQajFASgCABECACADQcAEaiADQYADaiADQYjFASgCABEBACADQYADaiADQcAEakGYtgFB7MUBKAIAEQEAIAcgA0GgBWoiCUGYtgFB7MUBKAIAEQEAIANBwARqIAMgA0HAAWpBiMUBKAIAEQEAIAMgA0HABGpBmLYBQezFASgCABEBACAFIAlBmLYBQezFASgCABEBAAJAAkACQCALRQRAIApFDQEgAEHAAWogCEGoxQEoAgARAgAgAEHwAWogAkHwAWpBqMUBKAIAEQIADAILIABBwAFqIgIgBkGoxQEoAgARAgAgAEHwAWoiBiABQfABakGoxQEoAgARAgAgCkUNASACIANBqMUBKAIAEQIAIAYgBUGoxQEoAgARAgAMAgsgA0HABGogBiAIQYjFASgCABEBACAAQcABaiADQcAEakGYtgFB7MUBKAIAEQEAIABB8AFqIANBoAVqQZi2AUHsxQEoAgARAQALIANBwARqIANB4ABqIABBwAFqIgFBiMUBKAIAEQEAIANB4ABqIANBwARqQZi2AUHsxQEoAgARAQAgA0GQAWogA0GgBWoiAkGYtgFB7MUBKAIAEQEAIANBwARqIAEgA0GIxQEoAgARAQAgASADQcAEakGYtgFB7MUBKAIAEQEAIABB8AFqIAJBmLYBQezFASgCABEBAAsgA0HgAGogA0HgAGogA0GYtgFBuMUBKAIAEQAAIANBkAFqIgEgASAFQZi2AUG4xQEoAgARAAAgA0HABGogAyADQaACakGIxQEoAgARAQAgAyADQcAEakGYtgFB7MUBKAIAEQEAIAUgA0GgBWoiAkGYtgFB7MUBKAIAEQEAIANB4ABqIANB4ABqIANBgANqQZi2AUG4xQEoAgARAAAgASABIAdBmLYBQbjFASgCABEAACADQeAAaiADQeAAaiADQYADakGYtgFBuMUBKAIAEQAAIAEgASAHQZi2AUG4xQEoAgARAAAgA0HABGogA0HAAWogA0HgAGpBiMUBKAIAEQEAIAAgA0HABGpBmLYBQezFASgCABEBACAAQTBqIAJBmLYBQezFASgCABEBACADQYADaiADQYADaiADQeAAakGYtgFBuMUBKAIAEQAAIAcgByAMQZi2AUG4xQEoAgARAAAgA0HABGogBCADQYADakGIxQEoAgARAQAgBCADQcAEakGYtgFB7MUBKAIAEQEAIABBkAFqIgAgAkGYtgFB7MUBKAIAEQEAIAQgBCADQZi2AUG4xQEoAgARAAAgACAAIAVBmLYBQbjFASgCABEAAAsgA0GABmokAAu/GQEJfyMAQYAGayIDJAACQAJAIAFBwAFqIgRBoMUBKAIAEQQARQ0AIAFB8AFqQaDFASgCABEEAEUNACAAIAJBqMUBKAIAEQIAIABBMGogAkEwakGoxQEoAgARAgAgAEHgAGogAkHgAGpBqMUBKAIAEQIAIABBkAFqIAJBkAFqQajFASgCABECACAAQcABaiACQcABakGoxQEoAgARAgAgAEHwAWogAkHwAWpBqMUBKAIAEQIADAELAkAgAkHAAWpBoMUBKAIAEQQARQ0AIAJB8AFqQaDFASgCABEEAEUNACAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogAUHgAGpBqMUBKAIAEQIAIABBkAFqIAFBkAFqQajFASgCABECACAAQcABaiAEQajFASgCABECACAAQfABaiABQfABakGoxQEoAgARAgAMAQsgAUHAAWohBgJAAkACQAJAQZjFASgCACIJRQ0AIAYoAgBBiMMBKAIARgRAQQEhBANAIAQiBSAJRg0CIAVBAWohBCABIAVBAnQiB2ooAsABIAdBiMMBaigCAEYNAAsgBSAJTw0BCyACQcABaiEHDAELIAJBwAFqIQcgAUHwAWpBoMUBKAIAEQQAIQhBmMUBKAIAIglFDQELIAIoAsABQYjDASgCAEcNAUEBIQQDQCAEIgUgCUYNASAFQQFqIQQgAiAFQQJ0IgtqKALAASALQYjDAWooAgBGDQALIAUgCUkNAQsgAkHwAWpBoMUBKAIAEQQAIQoLIAhFBEAgA0HABGogAUHwAWoiBEGYtgFBxMUBKAIAEQEAIANBwARqIANBwARqIAZBmLYBQbzFASgCABEAACADQaACaiAGIARBmLYBQbTFASgCABEAACADQcABaiAGIARBmLYBQbjFASgCABEAACADQYADaiADQaACaiADQcABakGYtgFBvMUBKAIAEQAAIANBsANqIANBwARqQajFASgCABECAAsCQCAKBEAgA0GgAmogAUGoxQEoAgARAgAgA0HQAmogAUEwakGoxQEoAgARAgACQCAIBEAgA0HgAGogAkGoxQEoAgARAgAgA0GQAWogAkEwakGoxQEoAgARAgAMAQsgA0HABGogAiADQYADakGIxQEoAgARAQAgA0HgAGogA0HABGpBmLYBQezFASgCABEBACADQZABaiADQaAFakGYtgFB7MUBKAIAEQEACyADQeAAaiADQeAAaiADQaACakGYtgFBuMUBKAIAEQAAIANBkAFqIgQgBCADQdACakGYtgFBuMUBKAIAEQAAIANBwAFqIAFB4ABqQajFASgCABECACADQfABaiABQZABakGoxQEoAgARAgAMAQsgA0HABGogAkHwAWoiBEGYtgFBxMUBKAIAEQEAIANBwARqIANBwARqIAdBmLYBQbzFASgCABEAACADQaACaiAHIARBmLYBQbTFASgCABEAACADQeAAaiAHIARBmLYBQbjFASgCABEAACADQcABaiADQaACaiADQeAAakGYtgFBvMUBKAIAEQAAIANB8AFqIANBwARqQajFASgCABECACADQcAEaiABIANBwAFqQYjFASgCABEBACADQaACaiADQcAEakGYtgFB7MUBKAIAEQEAIANB0AJqIgQgA0GgBWoiBUGYtgFB7MUBKAIAEQEAAkAgCARAIANB4ABqIAJBqMUBKAIAEQIAIANBkAFqIAJBMGpBqMUBKAIAEQIADAELIANBwARqIAIgA0GAA2pBiMUBKAIAEQEAIANB4ABqIANBwARqQZi2AUHsxQEoAgARAQAgA0GQAWogBUGYtgFB7MUBKAIAEQEACyADQeAAaiADQeAAaiADQaACakGYtgFBuMUBKAIAEQAAIANBkAFqIgUgBSAEQZi2AUG4xQEoAgARAAAgA0HABGogA0HAAWogB0GIxQEoAgARAQAgA0HAAWogA0HABGpBmLYBQezFASgCABEBACADQfABaiIEIANBoAVqIgVBmLYBQezFASgCABEBACADQcAEaiADQcABaiABQeAAakGIxQEoAgARAQAgA0HAAWogA0HABGpBmLYBQezFASgCABEBACAEIAVBmLYBQezFASgCABEBAAsCQCAIBEAgA0GAA2ogAkHgAGpBqMUBKAIAEQIAIANBsANqIAJBkAFqQajFASgCABECAAwBCyADQcAEaiADQYADaiAGQYjFASgCABEBACADQYADaiADQcAEakGYtgFB7MUBKAIAEQEAIANBsANqIgQgA0GgBWoiBUGYtgFB7MUBKAIAEQEAIANBwARqIANBgANqIAJB4ABqQYjFASgCABEBACADQYADaiADQcAEakGYtgFB7MUBKAIAEQEAIAQgBUGYtgFB7MUBKAIAEQEACyADQYADaiADQYADaiADQcABakGYtgFBuMUBKAIAEQAAIANBsANqIgIgAiADQfABakGYtgFBuMUBKAIAEQAAAkAgA0HgAGpBoMUBKAIAEQQARQ0AIANBkAFqQaDFASgCABEEAEUNAAJAIANBgANqQaDFASgCABEEAEUNACACQaDFASgCABEEAEUNACAAIAEQEQwCCyAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgAEGQAWpBpMUBKAIAEQMAIABBwAFqQaTFASgCABEDACAAQfABakGkxQEoAgARAwAMAQsCQCAIBEAgCgRAIABBwAFqIANB4ABqQajFASgCABECACAAQfABaiADQZABakGoxQEoAgARAgAMAgsgA0HABGogA0HgAGogB0GIxQEoAgARAQAgAEHAAWogA0HABGpBmLYBQezFASgCABEBACAAQfABaiADQaAFakGYtgFB7MUBKAIAEQEADAELIABBwAFqIQEgCgRAIANBwARqIAYgA0HgAGpBiMUBKAIAEQEAIAEgA0HABGpBmLYBQezFASgCABEBACAAQfABaiADQaAFakGYtgFB7MUBKAIAEQEADAELIANBwARqIAYgB0GIxQEoAgARAQAgASADQcAEakGYtgFB7MUBKAIAEQEAIABB8AFqIgIgA0GgBWoiBEGYtgFB7MUBKAIAEQEAIANBwARqIAEgA0HgAGpBiMUBKAIAEQEAIAEgA0HABGpBmLYBQezFASgCABEBACACIARBmLYBQezFASgCABEBAAsgA0HABGogA0GQAWoiAUGYtgFBxMUBKAIAEQEAIANBwARqIANBwARqIANB4ABqQZi2AUG8xQEoAgARAAAgA0GQBGogA0HgAGogAUGYtgFBtMUBKAIAEQAAIANB4ANqIANB4ABqIAFBmLYBQbjFASgCABEAACADIANBkARqIANB4ANqQZi2AUG8xQEoAgARAAAgA0EwaiIFIANBwARqQajFASgCABECACADQcAEaiADQbADaiIBQZi2AUHExQEoAgARAQAgA0HABGogA0HABGogA0GAA2pBmLYBQbzFASgCABEAACADQZAEaiADQYADaiABQZi2AUG0xQEoAgARAAAgA0HgA2ogA0GAA2ogAUGYtgFBuMUBKAIAEQAAIABB4ABqIgEgA0GQBGogA0HgA2pBmLYBQbzFASgCABEAACAAQZABaiICIANBwARqQajFASgCABECACADQcAEaiADQaACaiADQYjFASgCABEBACADQaACaiADQcAEakGYtgFB7MUBKAIAEQEAIANB0AJqIgQgA0GgBWoiBkGYtgFB7MUBKAIAEQEAIANBwARqIAMgA0HgAGpBiMUBKAIAEQEAIAMgA0HABGpB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aiIBIANBMGogA0GQAWpBmLYBQbjFASgCABEAACADQTBqIAFBmLYBQcDFASgCABEBACADIANB4ABqQZi2AUHAxQEoAgARAQAgA0HAAWogA0HAAWogA0GYtgFBvMUBKAIAEQAAIAMgAyADQeAAakGYtgFBvMUBKAIAEQAAAkACQAJAIARFBEAgBkUNASAAQeAAaiAFQajFASgCABECAAwCCyAAQeAAaiICIAhBqMUBKAIAEQIAIAZFDQEgAiADQajFASgCABECAAwCCyAAQeAAaiAIIAVBmLYBQbzFASgCABEAAAsgA0EwaiADQTBqIABB4ABqIgJBmLYBQbzFASgCABEAACACIAIgA0GYtgFBvMUBKAIAEQAACyADQTBqIANBMGogA0GYtgFBuMUBKAIAEQAAIAMgAyADQZABakGYtgFBvMUBKAIAEQAAIANBMGogA0EwaiADQcABakGYtgFBuMUBKAIAEQAAIANBMGogA0EwaiADQcABakGYtgFBuMUBKAIAEQAAIAAgA0HgAGogA0EwakGYtgFBvMUBKAIAEQAAIANBwAFqIANBwAFqIANBMGpBmLYBQbjFASgCABEAACABIAEgA0HAAWpBmLYBQbzFASgCABEAACABIAEgA0GYtgFBuMUBKAIAEQAACyADQfABaiQAC9YKAQd/IwBB8AFrIgMkAAJAIAFB4ABqIgRBoMUBKAIAEQQABEAgACACQajFASgCABECACAAQTBqIAJBMGpBqMUBKAIAEQIAIABB4ABqIAJB4ABqQajFASgCABECAAwBCyACQeAAakGgxQEoAgARBAAEQCAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogBEGoxQEoAgARAgAMAQsgAUHgAGohBwJ/QZjFASgCACIFRQRAQQEhBkEBDAELQYjDASgCACIJIAcoAgBGBEBBASEIA0ACQCAFIAgiBEYEQCAFIQQMAQsgBEEBaiEIIAEgBEECdCIGaigCYCAGQYjDAWooAgBGDQELCyAEIAVPIQYLQQAgAigCYCAJRw0AGkEBIQgDQAJAIAUgCCIERgRAIAUhBAwBCyAEQQFqIQggAiAEQQJ0IglqKAJgIAlBiMMBaigCAEYNAQsLIAQgBU8LIQQgBkUEQCADQcABaiAHQZi2AUHAxQEoAgARAQALIAJB4ABqIQUCQCAEBEAgA0GQAWogAUGoxQEoAgARAgACQCAGBEAgA0EwaiACQajFASgCABECAAwBCyADQTBqIAIgA0HAAWpBmLYBQbzFASgCABEAAAsgA0EwaiADQTBqIANBkAFqQZi2AUG4xQEoAgARAAAgA0HgAGogAUEwakGoxQEoAgARAgAMAQsgA0HgAGogBUGYtgFBwMUBKAIAEQEAIANBkAFqIAEgA0HgAGpBmLYBQbzFASgCABEAAAJAIAYEQCADQTBqIAJBqMUBKAIAEQIADAELIANBMGogAiADQcABakGYtgFBvMUBKAIAEQAACyADQTBqIANBMGogA0GQAWpBmLYBQbjFASgCABEAACADQeAAaiADQeAAaiAFQZi2AUG8xQEoAgARAAAgA0HgAGogA0HgAGogAUEwakGYtgFBvMUBKAIAEQAACwJAIAYEQCADQcABaiACQTBqQajFASgCABECAAwBCyADQcABaiADQcABaiAHQZi2AUG8xQEoAgARAAAgA0HAAWogA0HAAWogAkEwakGYtgFBvMUBKAIAEQAACyADQcABaiADQcABaiADQeAAakGYtgFBuMUBKAIAEQAAIANBMGpBoMUBKAIAEQQABEAgA0HAAWpBoMUBKAIAEQQABEAgACABEBMMAgsgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMADAELAkAgBgRAIAQEQCAAQeAAaiADQTBqQajFASgCABECAAwCCyAAQeAAaiADQTBqIAVBmLYBQbzFASgCABEAAAwBCyAAQeAAaiEBQbzFASgCACECIAQEQCABIAcgA0EwakGYtgEgAhEAAAwBCyABIAcgBUGYtgEgAhEAACABIAEgA0EwakGYtgFBvMUBKAIAEQAACyADIANBMGpBmLYBQcDFASgCABEBACAAQTBqIgEgA0HAAWpBmLYBQcDFASgCABEBACADQZABaiADQZABaiADQZi2AUG8xQEoAgARAAAgAyADIANBMGpBmLYBQbzFASgCABEAACABIAEgA0GQAWpBmLYBQbjFASgCABEAACABIAEgA0GQAWpBmLYBQbjFASgCABEAACAAIAEgA0GYtgFBuMUBKAIAEQAAIANBkAFqIANBkAFqIABBmLYBQbjFASgCABEAACADQZABaiADQZABaiADQcABakGYtgFBvMUBKAIAEQAAIAMgAyADQeAAakGYtgFBvMUBKAIAEQAAIAEgA0GQAWogA0GYtgFBuMUBKAIAEQAACyADQfABaiQAC7YLAQl/IwBBoAhrIgEkACABQcAEaiAAKAIQQYzFASgCABECACABQYADaiAAKAIUQYzFASgCABECACABQcABaiABQYADakGQxQEoAgARAgAgAUHAAWogAUHAAWogAUHABGpBmLYBQeTFASgCABEAACABQaACaiIEIAQgAUGgBWoiAkGYtgFB5MUBKAIAEQAAIAFBgAZqIAFBwAFqQZi2AUHsxQEoAgARAQAgAUGwBmoiByAEQZi2AUHsxQEoAgARAQAgAUHAB2ogACgCECIFIAAoAhQiA0GYtgFBtMUBKAIAEQAAIAFB8AdqIgYgBUEwaiADQTBqQZi2AUG0xQEoAgARAAAgAUHAAWogAUHAB2pBjMUBKAIAEQIAIAFBwARqIAFBwARqIAFBgANqQZi2AUHkxQEoAgARAAAgAiACIAFB4ANqIghBmLYBQeTFASgCABEAACABQcABaiABQcABaiABQcAEakGYtgFB6MUBKAIAEQAAIAQgBCACQZi2AUHoxQEoAgARAAAgAUHAB2ogAUHAAWpBmLYBQezFASgCABEBACAGIARBmLYBQezFASgCABEBACABQeAGaiAAKAIIIgMgACgCDCIJQZi2AUG0xQEoAgARAAAgAUGQB2oiBSADQTBqIAlBMGpBmLYBQbTFASgCABEAACABIAFB4AZqQYzFASgCABECACABQcABaiAAKAIIQYzFASgCABECACABQeAGaiABQcAHakGIxgEoAgARAgAgACgCCCIDIAMgAUHgBmpBmLYBQbTFASgCABEAACADQTBqIgMgAyAFQZi2AUG0xQEoAgARAAAgACgCCCIDIANBmLYBQcTFASgCABEBACADQTBqIgMgA0GYtgFBxMUBKAIAEQEAIAAoAggiAyADIAFB4AZqQZi2AUG0xQEoAgARAAAgA0EwaiIDIAMgBUGYtgFBtMUBKAIAEQAAIAFB4AZqIAFBgAZqIAAoAgwiA0GYtgFBuMUBKAIAEQAAIAUgByADQTBqQZi2AUG4xQEoAgARAAAgAUHgBmogAUHgBmpBmLYBQcTFASgCABEBACAFIAVBmLYBQcTFASgCABEBACABQYADaiAAKAIMQYzFASgCABECACAAKAIMIgMgAUHgBmogAUGABmpBmLYBQbTFASgCABEAACADQTBqIAUgB0GYtgFBtMUBKAIAEQAAIAFBwARqIAFBgANqQZDFASgCABECACABQcAEaiABQcAEaiABQcABakGYtgFB5MUBKAIAEQAAIAIgAiAEQZi2AUHkxQEoAgARAAAgAUHAB2ogAUHABGpBmLYBQezFASgCABEBACAGIAJBmLYBQezFASgCABEBACAAKAIQIgIgAUHAB2ogAkGYtgFBuMUBKAIAEQAAIAJBMGoiAiAGIAJBmLYBQbjFASgCABEAACAAKAIQIgIgAkGYtgFBxMUBKAIAEQEAIAJBMGoiAiACQZi2AUHExQEoAgARAQAgACgCECICIAIgAUHAB2pBmLYBQbTFASgCABEAACACQTBqIgIgAiAGQZi2AUG0xQEoAgARAAAgAUHAAWogAUHAAWogAUGAA2pB+MUBKAIAEQUAGiAEIAQgCEH4xQEoAgARBQAaIAEgASABQcABakGYtgFB6MUBKAIAEQAAIAFB4ABqIgIgAiAEQZi2AUHoxQEoAgARAAAgAUHAB2ogAUGYtgFB7MUBKAIAEQEAIAYgAkGYtgFB7MUBKAIAEQEAIAAoAhQiBCAEIAFBwAdqQZi2AUG0xQEoAgARAAAgBEEwaiIEIAQgBkGYtgFBtMUBKAIAEQAAIAAoAhQiBCAEQZi2AUHExQEoAgARAQAgBEEwaiIEIARBmLYBQcTFASgCABEBACAAKAIUIgAgACABQcAHakGYtgFBtMUBKAIAEQAAIABBMGoiACAAIAZBmLYBQbTFASgCABEAACABQaAIaiQAC7YYAQh/IwBBwARrIgIkAAJAAkAgAUHAAWoiBUGgxQEoAgARBABFDQAgAUHwAWpBoMUBKAIAEQQARQ0AIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDACAAQZABakGkxQEoAgARAwAgAEHAAWpBpMUBKAIAEQMAIABB8AFqQaTFASgCABEDAAwBCwJAAkBBmMUBKAIAIgdFDQAgBSgCAEGIwwEoAgBHDQFBASEEA0AgBCIDIAdGDQEgA0EBaiEEIAEgA0ECdCIIaigCwAEgCEGIwwFqKAIARg0ACyADIAdJDQELIAFB8AFqQaDFASgCABEEACEGCwJAAkACQAJAQZCCAigCAA4CAAECCyACQYADaiABQTBqIgNBmLYBQcTFASgCABEBACACQYADaiACQYADaiABQZi2AUG8xQEoAgARAAAgAkHgAGogASADQZi2AUG0xQEoAgARAAAgAiABIANBmLYBQbjFASgCABEAACACQcABaiACQeAAaiACQZi2AUG8xQEoAgARAAAgAkHwAWoiAyACQYADakGoxQEoAgARAgAgAkHgAGogAkHAAWogAkHAAWpBmLYBQbTFASgCABEAACACQZABaiIEIAMgA0GYtgFBtMUBKAIAEQAAIAJBwAFqIAJBwAFqIAJB4ABqQZi2AUG0xQEoAgARAAAgAyADIARBmLYBQbTFASgCABEAAAwCCyACQYADaiABQTBqIgNBmLYBQcTFASgCABEBACACQYADaiACQYADaiABQZi2AUG8xQEoAgARAAAgAkHgAGogASADQZi2AUG0xQEoAgARAAAgAiABIANBmLYBQbjFASgCABEAACACQcABaiACQeAAaiACQZi2AUG8xQEoAgARAAAgAkHwAWoiAyACQYADakGoxQEoAgARAgACQCAGBEAgAkHAAWogAkHAAWogBUGYtgFBuMUBKAIAEQAAIAMgAyABQfABakGYtgFBuMUBKAIAEQAADAELIAJBgANqIAFB8AFqIgRBmLYBQcTFASgCABEBACACQYADaiACQYADaiAFQZi2AUG8xQEoAgARAAAgAiAFIARBmLYBQbTFASgCABEAACACQdACaiAFIARBmLYBQbjFASgCABEAACACQeAAaiACIAJB0AJqQZi2AUG8xQEoAgARAAAgAkGQAWoiBCACQYADakGoxQEoAgARAgAgAkHAAWogAkHAAWogAkHgAGpBmLYBQbjFASgCABEAACADIAMgBEGYtgFBuMUBKAIAEQAACyACQeAAaiACQcABaiACQcABakGYtgFBtMUBKAIAEQAAIAJBkAFqIgQgAyADQZi2AUG0xQEoAgARAAAgAkHAAWogAkHAAWogAkHgAGpBmLYBQbTFASgCABEAACACQfABaiIDIAMgBEGYtgFBtMUBKAIAEQAADAELAkAgBgRAIAJBwAFqQZzGAUGoxQEoAgARAgAgAkHwAWpBzMYBQajFASgCABECAAwBCyACQYADaiABQfABaiIDQZi2AUHExQEoAgARAQAgAkGAA2ogAkGAA2ogBUGYtgFBvMUBKAIAEQAAIAJB4ABqIAUgA0GYtgFBtMUBKAIAEQAAIAIgBSADQZi2AUG4xQEoAgARAAAgAkHAAWogAkHgAGogAkGYtgFBvMUBKAIAEQAAIAJB8AFqIgMgAkGAA2pBqMUBKAIAEQIAIAJBgANqIAJBwAFqQZzGAUGIxQEoAgARAQAgAkHAAWogAkGAA2pBmLYBQezFASgCABEBACADIAJB4ANqQZi2AUHsxQEoAgARAQALIAJBgANqIAFBMGoiA0GYtgFBxMUBKAIAEQEAIAJBgANqIAJBgANqIAFBmLYBQbzFASgCABEAACACIAEgA0GYtgFBtMUBKAIAEQAAIAJB0AJqIAEgA0GYtgFBuMUBKAIAEQAAIAJB4ABqIAIgAkHQAmpBmLYBQbzFASgCABEAACACQZABaiIEIAJBgANqQajFASgCABECACACQcABaiACQcABaiACQeAAakGYtgFBtMUBKAIAEQAAIAJB8AFqIgMgAyAEQZi2AUG0xQEoAgARAAAgAkHAAWogAkHAAWogAkHgAGpBmLYBQbTFASgCABEAACADIAMgBEGYtgFBtMUBKAIAEQAAIAJBwAFqIAJBwAFqIAJB4ABqQZi2AUG0xQEoAgARAAAgAyADIARBmLYBQbTFASgCABEAAAsCQCAGBEAgAEHAAWogAUHgAGpBqMUBKAIAEQIAIABB8AFqIAFBkAFqQajFASgCABECAAwBCyACQYADaiABQeAAaiAFQYjFASgCABEBACAAQcABaiACQYADakGYtgFB7MUBKAIAEQEAIABB8AFqIAJB4ANqQZi2AUHsxQEoAgARAQALIAJBgANqIABBwAFqIgQgAUGIxQEoAgARAQAgAkHgAGogAkGAA2pBmLYBQezFASgCABEBACACQZABaiIDIAJB4ANqIgdBmLYBQezFASgCABEBACACQYADaiACQeAAaiABQeAAaiIIQYjFASgCABEBACACQeAAaiACQYADakGYtgFB7MUBKAIAEQEAIAMgB0GYtgFB7MUBKAIAEQEAIAJB4ABqIAJB4ABqIAJB4ABqQZi2AUG0xQEoAgARAAAgAyADIANBmLYBQbTFASgCABEAACACQeAAaiACQeAAaiACQeAAakGYtgFBtMUBKAIAEQAAIAMgAyADQZi2AUG0xQEoAgARAAAgAkGAA2ogAkHwAWoiBUGYtgFBxMUBKAIAEQEAIAJBgANqIAJBgANqIAJBwAFqQZi2AUG8xQEoAgARAAAgAkHQAmogAkHAAWogBUGYtgFBtMUBKAIAEQAAIAJBoAJqIAJBwAFqIAVBmLYBQbjFASgCABEAACACIAJB0AJqIAJBoAJqQZi2AUG8xQEoAgARAAAgAkEwaiIGIAJBgANqQajFASgCABECACACIAIgAkHgAGpBmLYBQbjFASgCABEAACAGIAYgA0GYtgFBuMUBKAIAEQAAIAIgAiACQeAAakGYtgFBuMUBKAIAEQAAIAYgBiADQZi2AUG4xQEoAgARAAAgAkGAA2ogAiAEQYjFASgCABEBACAAIAJBgANqQZi2AUHsxQEoAgARAQAgAEEwaiIJIAdBmLYBQezFASgCABEBACACQeAAaiACQeAAaiACQZi2AUG4xQEoAgARAAAgAyADIAZBmLYBQbjFASgCABEAACACQYADaiACQeAAaiACQcABakGIxQEoAgARAQAgAkHgAGogAkGAA2pBmLYBQezFASgCABEBACADIAdBmLYBQezFASgCABEBACACQYADaiABQZABaiIBQZi2AUHExQEoAgARAQAgAkGAA2ogAkGAA2ogCEGYtgFBvMUBKAIAEQAAIAJB0AJqIAggAUGYtgFBtMUBKAIAEQAAIAJBoAJqIAggAUGYtgFBuMUBKAIAEQAAIAJBwAFqIAJB0AJqIAJBoAJqQZi2AUG8xQEoAgARAAAgBSACQYADakGoxQEoAgARAgAgACAAIABBmLYBQbTFASgCABEAACAJIAkgCUGYtgFBtMUBKAIAEQAAIAQgBCAEQZi2AUG0xQEoAgARAAAgAEHwAWoiASABIAFBmLYBQbTFASgCABEAACACQYADaiABQZi2AUHExQEoAgARAQAgAkGAA2ogAkGAA2ogBEGYtgFBvMUBKAIAEQAAIAJB0AJqIAQgAUGYtgFBtMUBKAIAEQAAIAJBoAJqIAQgAUGYtgFBuMUBKAIAEQAAIAIgAkHQAmogAkGgAmpBmLYBQbzFASgCABEAACAGIAJBgANqQajFASgCABECACACQYADaiACQcABaiACQYjFASgCABEBACACQcABaiACQYADakGYtgFB7MUBKAIAEQEAIAUgB0GYtgFB7MUBKAIAEQEAIAJBgANqIAQgAkGI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QZi2AUHExQEoAgARAQAgAkEwaiIDIAVBmLYBQcTFASgCABEBACACQaACaiACQaACaiACQZi2AUG0xQEoAgARAAAgAkHQAmoiCCAIIANBmLYBQbTFASgCABEAAAwBCwJAIAkEQCACQZzGAUGoxQEoAgARAgAgAkEwakHMxgFBqMUBKAIAEQIADAELIAJB4ANqIAFB8AFqIgNBmLYBQcTFASgCABEBACACQeADaiACQeADaiAHQZi2AUG8xQEoAgARAAAgAkGwA2ogByADQZi2AUG0xQEoAgARAAAgAkGAA2ogByADQZi2AUG4xQEoAgARAAAgAiACQbADaiACQYADakGYtgFBvMUBKAIAEQAAIAJBMGoiAyACQeADakGoxQEoAgARAgAgAkHgA2ogA0GYtgFBxMUBKAIAEQEAIAJB4ANqIAJB4ANqIAJBmLYBQbzFASgCABEAACACQbADaiACIANBmLYBQbTFASgCABEAACACQYADaiACIANBmLYBQbjFASgCABEAACACIAJBsANqIAJBgANqQZi2AUG8xQEoAgARAAAgAyACQeADakGoxQEoAgARAgAgAkHgA2ogAkGcxgFBiMUBKAIAEQEAIAIgAkHgA2pBmLYBQezFASgCABEBACADIAJBwARqQZi2AUHsxQEoAgARAQALIAIgAiACQaACakGYtgFBtMUBKAIAEQAAIAJBMGoiAyADIAVBmLYBQbTFASgCABEAACACQaACaiACQaACakGYtgFBxMUBKAIAEQEAIAUgBUGYtgFBxMUBKAIAEQEAIAJBoAJqIAJBoAJqIAJBmLYBQbTFASgCABEAACACQdACaiIIIAggA0GYtgFBtMUBKAIAEQAACyACQeADaiAFQZi2AUHExQEoAgARAQAgAkHgA2ogAkHgA2ogAkGgAmpBmLYBQbzFASgCABEAACACQbADaiACQaACaiAFQZi2AUG0xQEoAgARAAAgAkGAA2ogAkGgAmogBUGYtgFBuMUBKAIAEQAAIAAgAkGwA2ogAkGAA2pBmLYBQbzFASgCABEAACAAQTBqIgUgAkHgA2pBqMUBKAIAEQIAIAAgACACQeAAakGYtgFBuMUBKAIAEQAAIAUgBSAEQZi2AUG4xQEoAgARAAAgACAAIAJB4ABqQZi2AUG4xQEoAgARAAAgBSAFIARBmLYBQbjFASgCABEA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ASgCABEBACACQeAAaiABQTBqIgRBmLYBQcDFASgCABEBACACQTBqIAEgAkHgAGpBmLYBQbTFASgCABEAACACQeAAaiACQeAAakGYtgFBwMUBKAIAEQEAIAJBMGogAkEwakGYtgFBwMUBKAIAEQEAIAJBMGogAkEwaiACQZABakGYtgFBuMUBKAIAEQAAIAJBMGogAkEwaiACQeAAakGYtgFBuMUBKAIAEQAAIAJBMGogAkEwaiACQTBqQZi2AUG0xQEoAgARAAACQAJAAkACQEHYgQIoAgAOAgABAgsgAiACQZABakGYtgFBxMUBKAIAEQEADAILAkAgAwRAIAJBkAFqIAJBkAFqIAVBmLYBQbjFASgCABEAAAwBCyACIAVBmLYBQcDFASgCABEBACACIAJBmLYBQcDFASgCABEBACACQZABaiACQZABaiACQZi2AUG4xQEoAgARAAALIAIgAkGQAWpBmLYBQcTFASgCABEBAAwBCwJAIAMEQCACQbjZAUGoxQEoAgARAgAMAQsgAiAFQZi2AUHAxQEoAgARAQAgAiACQZi2AUHAxQEoAgARAQAgAiACQbjZAUGYtgFBvMUBKAIAEQAACyACIAIgAkGQAWpBmLYBQbTFASgCABEAACACQZABaiACQZABakGYtgFBxMUBKAIAEQEACyACQZABaiACQZABaiACQZi2AUG0xQEoAgARAAAgACACQZABakGYtgFBwMUBKAIAEQEAIAAgACACQTBqQZi2AUG4xQEoAgARAAAgACAAIAJBMGpBmLYBQbjFASgCABEAAAJAIAMEQCAAQeAAaiAEQajFASgCABECAAwBCyAAQeAAaiAEIAVBmLYBQbzFASgCABEAAAsgAEHgAGoiASABQZi2AUHExQEoAgARAQAgAEEwaiIBIAJBMGogAEGYtgFBuMUBKAIAEQAAIAEgASACQZABakGYtgFBvMUBKAIAEQAAIAJB4ABqIAJB4ABqQZi2AUHExQEoAgARAQAgAkHgAGogAkHgAGpBmLYBQcTFASgCABEBACACQeAAaiACQeAAakGYtgFBxMUBKAIAEQEAIAEgASACQeAAakGYtgFBuMUBKAIAEQAACyACQcABaiQAC5ELAQh/IwBBkARrIgIkAAJAAkAgAUHAAWpBoMUBKAIAEQQARQ0AIAFB8AFqQaDFASgCABEEAEUN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LQABIgVB4gBHBEAgBUH4AEcNAQJAIAAOEQAEBAQEBAQEBAQEBAQEBAQABAsgBkECciEGQRAhAAwCCwJAIAAOAwACAAILQQIhACAGQQJyIQYMAQsgAEEKIAAbIQALIAQgBkYNAAJAAkACQCAAQX5qDg8CAwMDAwMDAwADAwMDAwEDCyABIAIgAyAGaiAEIAZrEIEEDwsgASACIAMgBmogBCAGaxCABA8LIAQgBmsiAEUNACAAQQV2IgggAEEfcSIJQQBHaiIFIAJLDQAgAyAGaiECAkAgCEUNAEEAIQADQCABIABBAnRqIQYgAiAIIABBf3NqQQV0IAlyaiEKQQAhBEEBIQdBACEDAkACQAJAA0ACfwJAAkAgBCAKai0AAEFQag4CAAEECyADQQF0DAELIANBAXRBAXILIQMgBEEfSSEHIARBAWoiBEEgRw0ACyAGIAM2AgAMAQsgB0EBcQ0BCyAAQQFqIgAgCEYNAgwBCwtBAA8LAkAgCUUNACABIAhBAnRqIQBBACEEQQEhBkEAIQMCQANAAn8CQAJAIAIgBGotAABBUGoOAgABBAsgA0EBdAwBCyADQQF0QQFyCyEDIARBAWoiBCAJSSEGIAQgCUcNAAsgACADNgIADAELQQAhByAGQQFxDQELIAUhBwsgBwvCAwEBf0GoxQEoAgAhAkHY/gAtAAAEQCAAIAEgAhECACAAQTBqIAFBMGpBqMUBKAIAEQIAIABBgANqIAFB4ABqQajFASgCABECACAAQbADaiABQZABakGoxQEoAgARAgAgAEHgAGogAUHAAWpBqMUBKAIAEQIAIABBkAFqIAFB8AFqQajFASgCABECACAAQcABakGkxQEoAgARAwAgAEHwAWpBpMUBKAIAEQMAIABBoAJqQaTFASgCABEDACAAQdACakGkxQEoAgARAwAgAEHgA2pBpMUBKAIAEQMAIABBkARqQaTFASgCABEDAA8LIABBgANqIAEgAhECACAAQbADaiABQTBqQajFASgCABECACAAIAFB4ABqQajFASgCABECACAAQTBqIAFBkAFqQajFASgCABECACAAQaACaiABQcABakGoxQEoAgARAgAgAEHQAmogAUHwAWpBqMUBKAIAEQIAIABB4ABqQaTFASgCABEDACAAQZABakGkxQEoAgARAwAgAEHAAWpBpMUBKAIAEQMAIABB8AFqQaTFASgCABEDACAAQeADakGkxQEoAgARAwAgAEGQBGpBpMUBKAIAEQMAC9wLAQt/IwBBwAdrIgMkACADQYAGaiABQcABaiIKIAJBiMUBKAIAEQEAIANBoAVqIANBgAZqQZi2AUHsxQEoAgARAQAgA0HQBWoiBSADQeAGaiIGQZi2AUHsxQEoAgARAQAgA0GABmogCiACQeAAaiIMQYjFASgCABEBACADQcAEaiADQYAGakGYtgFB7MUBKAIAEQEAIANB8ARqIgcgBkGYtgFB7MUBKAIAEQEAIANBoAVqIAEgA0GgBWpBmLYBQbjFASgCABEAACAFIAFBMGoiCCAFQZi2AUG4xQEoAgARAAAgA0HABGogAUHgAGoiCyADQcAEakGYtgFBuMUBKAIAEQAAIAcgAUGQAWoiDSAHQZi2AUG4xQEoAgARAAAgA0GABmogBUGYtgFBxMUBKAIAEQEAIANBgAZqIANBgAZqIANBoAVqQZi2AUG8xQEoAgARAAAgA0HAAWogA0GgBWogBUGYtgFBtMUBKAIAEQAAIAMgA0GgBWogBUGYtgFBuMUBKAIAEQAAIANB4ANqIANBwAFqIANBmLYBQbzFASgCABEAACADQZAEaiIJIANBgAZqQajFASgCABECACADQYAGaiADQeADaiABQYjFASgCABEBACABIANBgAZqQZi2AUHsxQEoAgARAQAgCCAGQZi2AUHsxQEoAgARAQAgA0GABmogB0GYtgFBxMUBKAIAEQEAIANBgAZqIANBgAZqIANBwARqQZi2AUG8xQEoAgARAAAgA0HAAWogA0HABGogB0GYtgFBtMUBKAIAEQAAIAMgA0HABGogB0GYtgFBuMUBKAIAEQAAIANBgANqIANBwAFqIANBmLYBQbzFASgCABEAACADQbADaiIEIANBgAZqQajFASgCABECACADQYAGaiADQeADaiADQaAFakGIxQEoAgARAQAgA0HgA2ogA0GABmpBmLYBQezFASgCABEBACAJIAZBmLYBQezFASgCABEBACADQYAGaiADQYADaiAKQYjFASgCABEBACADQYADaiADQYAGakGYtgFB7MUBKAIAEQEAIAQgBkGYtgFB7MUBKAIAEQEAIANBgANqIANBgANqIANB4ANqQZi2AUG0xQEoAgARAAAgBCAEIAlBmLYBQbTFASgCABEAACADQYADaiADQYADaiABQZi2AUG4xQEoAgARAAAgBCAEIAhBmLYBQbjFASgCABEAACADQYADaiADQYADaiABQZi2AUG4xQEoAgARAAAgBCAEIAhBmLYBQbjFASgCABEAACABIAEgA0GAA2pBmLYBQbjFASgCABEAACAIIAggBEGYtgFBuMUBKAIAEQAAIANBwAFqIANBwARqIAFBiMUBKAIAEQEAIAMgA0HgA2ogC0GIxQEoAgARAQAgAyADQcABaiADQZi2AUHoxQEoAgARAAAgA0HgAGoiBCADQaACaiIJIARBmLYBQejFASgCABEAACALIANBmLYBQezFASgCABEBACANIARBmLYBQezFASgCABEBACADQYAGaiADQaAFaiADQYADakGIxQEoAgARAQAgASADQYAGakGYtgFB7MUBKAIAEQEAIAggBkGYtgFB7MUBKAIAEQEAIANBgAZqIANB4ANqIApBiMUBKAIAEQEAIAogA0GABmpBmLYBQezFASgCABEBACABQfABaiAGQZi2AUHsxQEoAgARAQAgAEHAAWogA0HABGpBmLYBQbDFASgCABEBACAAQfABaiAHQZi2AUGwxQEoAgARAQAgA0HAAWogA0HABGogAkGIxQEoAgARAQAgAyADQaAFaiAMQYjFASgCABEBACADQcABaiADQcABaiADQZi2AUHoxQEoAgARAAAgCSAJIARBmLYBQejFASgCABEAACAAQeAAaiADQaAFakGoxQEoAgARAgAgAEGQAWogBUGoxQEoAgARAgAgACADQcABakGYtgFB7MUBKAIAEQEAIABBMGogCUGYtgFB7MUBKAIAEQEAIANBwAdqJAALkAEBA38gACEBAkACQCAAQQNxRQ0AIAAtAABFBEBBAA8LA0AgAUEBaiIBQQNxRQ0BIAEtAAANAAsMAQsDQCABIgJBBGohASACKAIAIgNBf3MgA0H//ft3anFBgIGChHhxRQ0ACyADQf8BcUUEQCACIABrDwsDQCACLQABIQMgAkEBaiIBIQIgAw0ACwsgASAAawv7BAEIfyMAQfAAayIFJAAgAEEBOgAAIAFBADYCRCACKAJkIQQCQAJAIAItAGgiBgRAIARBAUcNAUEBIQQgAigCBA0BDAILAkAgBCIDDgIBAAILA0AgA0UNAiACIANBf2oiA0ECdGooAgRFDQALDAELIAVBATYCZCAFQQA2AgQgBUEAOgBoIAUgAigCACIDNgIAAkAgA0UEQCAFIAQ2AmQgBSAGQQFzIgM6AGgMAQsgBUEEciACQQRqIgcgA0ECdCIIEAMhCiAFIAZBAXMiAzoAaCAFIAQ2AmQgByAKIAgQAxoLIAIgAzoAaCACIAQ2AmRBASEKCwJAAkBBACAEQQFGIAIoAgQiBhtFBEADQAJAIARFDQBBACEDAkACQCAGBEBBACEHDAELIARBBXQhCEEAIQcDQCADQQFqIgMgBEYNAiAHQSBqIQcgAiADQQJ0aigCBCIGRQ0ACwsgBmggB3IhCAsgCEUNACACIAIgCBAnIAggCWohCQsgCQRAQQAhBANAIAEoAkQiA0HEAEYNBCABIANBAWo2AkQgASADakEAOgAAIABBAToAACAEQQFqIgQgCUcNAAsLIAIoAgQhBCACIAJBBRAnIARBH3EiA0EQcQRAIAIgAkEBQQAQGCADQSBrIQMLIAEoAkQiBEHEAEYEQCAAQQA6AAAMBAsgASAEQQFqNgJEIAEgBGogAzoAACAAQQE6AAAgAigCBCEGQQQhCSACKAJkIgRBAUcNACAGDQALCyABKAJERSAKQQFzcg0BQQAhAwNAIAEgA2oiAEEAIAAtAABrOgAAIANBAWoiAyABKAJESQ0ACwwBCyAAQQA6AAALIAVB8ABqJAALjwMBBn8jAEHwAWsiAiQAAn9BlcYBLQAABEAgACABEKsDDAELIAJBATYC5AEgAkIBNwOAASACQQE2AnQgAkIBNwMQIAJBADoAeCACQQA6AOgBIAJBADoADwJAQZjFASgCACIFRQRAIAJBATYC5AEgAkIBNwOAASACQQA6AOgBIAJBAToADwwBCyAFQf////8DcSIDQRlPBEAgAkEAOgAPQQAMAgsgAkEBOgAPIAIgAzYCgAECQCADRQ0AIANBAnQgBUECdEkNAANAQQAhByAEIAVJBEAgASAEQQJ0aigCACEHIARBAWohBAsgBkECdCACaiAHNgKEASAGQQFqIgYgA0cNAAsLAkADQCADIgFBAkgNASABQX9qIgNBAnQgAmooAoQBRQ0ACyACIAE2AuQBDAELIAJBATYC5AEgAigChAENACACQQA6AOgBCyACQbi3ASACQRBqIAJBgAFqEJ4BIgE6AA9BACABRQ0AGiAAIAJBD2ogAkEQahCdASACLQAPQQBHCyEDIAJB8AFqJAAgAwvpCAESfyMAQYAJayICJAAgAkGgAmogASABQaACaiIMQZi2AUG0xQEoAgARAAAgAkHQAmoiDSABQTBqIgggAUHQAmoiB0GYtgFBtMUBKAIAEQAAIAJBgANqIg4gAUHgAGoiAyABQYADaiIEQZi2AUG0xQEoAgARAAAgAkGwA2oiDyABQZABaiIJIAFBsANqIgpBmLYBQbTFASgCABEAACACQeADaiIQIAFBwAFqIgYgAUHgA2oiBUGYtgFBtMUBKAIAEQAAIAJBkARqIhEgAUHwAWoiCyABQZAEakGYtgFBtMUBKAIAEQAAIAJBwARqIAVBiMYBKAIAEQIAIAJBwAFqIgUgBCAGQZi2AUG0xQEoAgARAAAgAkHwAWoiBiAKIAtBmLYBQbTFASgCABEAACACQeAAaiIEIAwgA0GYtgFBtMUBKAIAEQAAIAJBkAFqIgMgByAJQZi2AUG0xQEoAgARAAAgAiACQcAEaiABQZi2AUG0xQEoAgARAAAgAkEwaiIHIAJB8ARqIgkgCEGYtgFBtMUBKAIAEQAAIAJBwARqIAJBoAJqIAIQOyACQaACaiACQcAEakGYtgFB7MUBKAIAEQEAIA0gAkGgBWoiCEGYtgFB7MUBKAIAEQEAIA4gAkGABmoiCkGYtgFB7MUBKAIAEQEAIA8gAkHgBmoiC0GYtgFB7MUBKAIAEQEAIBAgAkHAB2oiEkGYtgFB7MUBKAIAEQEAIBEgAkGgCGoiE0GYtgFB7MUBKAIAEQEAIAJBwARqIAEgDBA7IAIgAkHABGpBmLYBQezFASgCABEBACAHIAhBmLYBQezFASgCABEBACAEIApBmLYBQezFASgCABEBACADIAtBmLYBQezFASgCABEBACAFIBJBmLYBQezFASgCABEBACAGIBNBmLYBQezFASgCABEBACAAQaACaiACQZi2AUHExQEoAgARAQAgAEHQAmogB0GYtgFBxMUBKAIAEQEAIABBgANqIARBmLYBQcTFASgCABEBACAAQbADaiADQZi2AUHExQEoAgARAQAgAEHgA2ogBUGYtgFBxMUBKAIAEQEAIABBkARqIAZBmLYBQcTFASgCABEBACACQcAEaiAFQYjGASgCABECACAAQcABaiIBIAQgBUGYtgFBtMUBKAIAEQAAIABB8AFqIgUgAyAGQZi2AUG0xQEoAgARAAAgAEHgAGoiBiACIARBmLYBQbTFASgCABEAACAAQZABaiIEIAcgA0GYtgFBtMUBKAIAEQAAIAAgAkHABGogAkGYtgFBtMUBKAIAEQAAIABBMGoiAyAJIAdBmLYBQbTFASgCABEAACAAIAJBoAJqIABBmLYBQbjFASgCABEAACADIA0gA0GYtgFBuMUBKAIAEQAAIAYgDiAGQZi2AUG4xQEoAgARAAAgBCAPIARBmLYBQbjFASgCABEAACABIBAgAUGYtgFBuMUBKAIAEQAAIAUgESAFQZi2AUG4xQEoAgARAAAgAkGACWokAAvHDgINfwR+IwBBoAJrIgMkACADIAEoAAAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIgIAMgASgABCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AiQgAyABKAAIIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCKCADIAEoAAwiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIsIAMgASgAECICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AjAgAyABKAAUIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCNCADIAEoABgiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgI4IAMgASgAHCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AjwgAyABKAAgIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCQCADIAEoACQiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgJEIAMgASgAKCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AkggAyABKAAsIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCTCADIAEoADAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgJQIAMgASgANCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AlQgAyABKAA4IgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCWCADIAEoADwiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgJcQRAhBCADKAIgIQIDQCADQSBqIARBAnRqIgEgAUFkaigCACACIAFBRGooAgAiAkEZdyACQQ53cyACQQN2c2pqIAFBeGooAgAiAUEPdyABQQ13cyABQQp2c2o2AgAgBEEBaiIEQcAARw0ACyADIAApAmQiDzcDGCADIAApAlwiEDcDECADIAApAlQiETcDCCADIAApAkwiEjcDACARpyEFIBKnIQEgD6chCCAQpyEEIAAoAmwhDCADKAIEIQIgAygCDCEGIAMoAhQhByADKAIcIQkDQCAMIA1BAnQiC2ooAgAgBEEadyAEQRV3cyAEQQd3cyAJamogByAIcyAEcSAIc2ogA0EgaiALaigCAGoiCiABQR53IAFBE3dzIAFBCndzaiABIAJyIAVxIAEgAnFyaiIJQR53IAlBE3dzIAlBCndzIAwgC0EEciIOaigCACAGIApqIgYgBCAHc3EgB3MgCGogBkEadyAGQRV3cyAGQQd3c2pqIANBIGogDmooAgBqIgpqIAEgCXIgAnEgASAJcXJqIgggCXIgAXEgCCAJcXIgCEEedyAIQRN3cyAIQQp3c2ogByAMIAtBCHIiB2ooAgBqIANBIGogB2ooAgBqIAUgCmoiBSAEIAZzcSAEc2ogBUEadyAFQRV3cyAFQQd3c2oiCmoiByAIciAJcSAHIAhxciAHQR53IAdBE3dzIAdBCndzaiAEIAwgC0EMciIEaigCAGogA0EgaiAEaigCAGogAiAKaiICIAUgBnNxIAZzaiACQRp3IAJBFXdzIAJBB3dzaiIKaiIEIAdyIAhxIAQgB3FyIARBHncgBEETd3MgBEEKd3NqIAYgDCALQRByIgZqKAIAaiADQSBqIAZqKAIAaiABIApqIgEgAiAFc3EgBXNqIAFBGncgAUEVd3MgAUEHd3NqIgpqIgYgBHIgB3EgBCAGcXIgBkEedyAGQRN3cyAGQQp3c2ogBSAMIAtBFHIiBWooAgBqIANBIGogBWooAgBqIAkgCmoiCSABIAJzcSACc2ogCUEadyAJQRV3cyAJQQd3c2oiCmoiBSAGciAEcSAFIAZxciAFQR53IAVBE3dzIAVBCndzaiACIAwgC0EYciICaigCAGogA0EgaiACaigCAGogCCAKaiIIIAEgCXNxIAFzaiAIQRp3IAhBFXdzIAhBB3dzaiIKaiICIAVyIAZxIAIgBXFyIAJBHncgAkETd3MgAkEKd3NqIAEgDCALQRxyIgFqKAIAaiADQSBqIAFqKAIAaiAHIApqIgcgCCAJc3EgCXNqIAdBGncgB0EVd3MgB0EHd3NqIgtqIQEgBCALaiEEIA1BOEkhCyANQQhqIQ0gCw0ACyAAIAApAwBCQH03AwAgACAAKAJMIAFqNgJMIAAgACgCUCACajYCUCAAIAAoAlQgBWo2AlQgACAAKAJYIAZqNgJYIAAgACgCXCAEajYCXCAAIAAoAmAgB2o2AmAgACAAKAJkIAhqNgJkIAAgACgCaCAJajYCaCADQaACaiQAC7gCAQZ/AkAgASgCZCIDQQV0IAJNBEAMAQsgAyACQQV2IgRrIgNBGU8EQAwBCyAAIAM2AgAgASAEQQJ0akEEaiEEAkAgAkEfcSIFRQRAIANFDQFBACECA0AgACACQQJ0IgVqIAQgBWooAgA2AgQgAkEBaiICIANHDQALDAELIAQoAgAhBiADQQJPBEBBICAFayEHQQEhAgNAIAJBAnQiCCAAaiAGIAV2IAQgCGooAgAiBiAHdHI2AgAgAkEBaiICIANHDQALCyADQQJ0IABqIAYgBXY2AgALIAAgAS0AaDoAaAJAA0AgAyIBQQJIDQEgACABQX9qIgNBAnRqKAIERQ0ACyAAIAE2AmQPCyAAQQE2AmQgACgCBEUEQCAAQQA6AGgLDwsgAEEBNgJkIABCATcCACAAQQA6AGgL8QIBAn4gACAANQIAIAKtIgUgATUCAH58IgQ+AgAgACAANQIEIAE1AgQgBX4gBEIgiHx8IgQ+AgQgACAANQIIIAE1AgggBX4gBEIgiHx8IgQ+AgggACAANQIMIAE1AgwgBX4gBEIgiHx8IgQ+AgwgACAANQIQIAE1AhAgBX4gBEIgiHx8IgQ+AhAgACAANQIUIAE1AhQgBX4gBEIgiHx8IgQ+AhQgACAANQIYIAE1AhggBX4gBEIgiHx8IgQ+AhggACAANQIcIAE1AhwgBX4gBEIgiHx8IgQ+AhwgACAANQIgIAE1AiAgBX4gBEIgiHx8IgQ+AiAgACAANQIkIAE1AiQgBX4gBEIgiHx8IgQ+AiQgACAANQIoIAE1AiggBX4gBEIgiHx8IgQ+AiggACAANQIsIAE1AiwgBX4gBEIgiHx8IgU+AiwgBUIgiKchASAAIAA1AjAgAwR/IAMoAgAgAWoFIAELrXwiBT4CMCAFQiCIpwu1AQEHfyACKAJkIQQgASgCZCEDIAItAGgiCEUgAS0AaCIHQQBHc0UEQCAAIAEgAyACIAQQswEgACAHOgBoDwsCQAJAIAMgBEYEQCADIQUDQCAFQQFIDQMgASAFQX9qIgVBAnQiBmooAgQiCSACIAZqKAIEIgZGDQALIAkgBk0NAQwCCyADIARLDQELIAAgAiAEIAEgAxBTIAAgCEEBczoAaA8LIAAgASADIAIgBBBTIAAgBzoAaAv4AwEBfwJAIAMgBUkEQCABIAIoAgAiBDYCACAEBEBBACEFA0AgASAFQQJ0IgZqIAIgBmooAgQ2AgQgBUEBaiIFIARHDQALCwJAAkADQCADIgJBAkgNASABIAJBf2oiA0ECdGooAgRFDQALIAEgAjYCZAwBCyABQQE2AmQgASgCBA0AIAFBADoAaAsgAEUNASAAQQE2AmQgAEIBNwIAIABBADoAaA8LIAMgBWtBAWohBgJAAkAgAARAIAZBGU8EQCAAQQE2AmQgAEIBNwIAIABBADoAaCABQQE2AmQgAUIBNwIAIAFBADoAaA8LIAAgBjYCACAFQRlPDQIgASAFNgIAIABBBGogBiABQQRqIAJBBGogAyAEQQRqIAUQHQJAA0AgBiICQQJIDQEgACACQX9qIgZBAnRqKAIERQ0ACyAAIAI2AmQMAgsgAEEBNgJkIAAoAgQNASAAQQA6AGgMAQsgBUEYSw0BIAEgBTYCAEEAIAYgAUEEaiACQQRqIAMgBEEEaiAFEB0LAkADQCAFIgBBAkgNASABIABBf2oiBUECdGooAgRFDQALIAEgADYCZA8LIAFBATYCZCABKAIEDQEgAUEAOgBoDAELIAFBATYCZCABQgE3AgAgAUEAOgBoIABFDQAgAEEBNgJkIABCATcCACAAQQA6AGgLCzsBAX8jAEEQayIBJAACfyABQQA2AgwgASAANgIEIAEgADYCACABIABBAWo2AgggAQsQ4AEgAUEQaiQACz8BAX8jAEEQayIBJAACfyABQQA2AgwgASAANgIEIAEgADYCACABIABBAWo2AgggAQsQ4gEhACABQRBqJAAgAAvpAgEIfyABKAJkIgMgAkEfakEFdmoiB0EZTwRAIABBATYCZCAAQgE3AgAgAEEAOgBoDwsgACAHNgIAIAJBBXYhBQJAIAJBH3EiCEUEQCADRQ0BIAMgBWohBEEAIQIDQCAAIAQgAkF/cyIGakECdGogASADIAZqQQJ0aigCBDYCBCACQQFqIgIgA0cNAAsMAQtBICAIayEJIAAgBUECdGpBBGohCiABIANBf2oiAkECdGooAgQiBiEEIAIEQCAGIQQDQCAKIAJBAnRqIAQgCHQgASACQX9qIgJBAnRqKAIEIgQgCXZyNgIAIAINAAsLIAogBCAIdDYCACAAIAMgBWpBAnRqIAYgCXY2AgQLIAUEQCAAQQRqQQAgBUECdBAWCyAAIAEtAGg6AGgCQANAIAciAUECSA0BIAAgAUF/aiIHQQJ0aigCBEUNAAsgACABNgJkDwsgAEEBNgJkIAAoAgRFBEAgAEEAOgBoCwuTAwEFfyAAIAEoAgAiAyACKAIAIgRrNgIAIAAgASgCBCIFIAIoAgQiBiADIARJaiIDazYCBCAAIAEoAggiBCACKAIIIgcgAyAGSSAFIANJamoiA2s2AgggACABKAIMIgUgAigCDCIGIAMgB0kgBCADSWpqIgNrNgIMIAAgASgCECIEIAIoAhAiByADIAZJIAUgA0lqaiIDazYCECAAIAEoAhQiBSACKAIUIgYgAyAHSSAEIANJamoiA2s2AhQgACABKAIYIgQgAigCGCIHIAMgBkkgBSADSWpqIgNrNgIYIAAgASgCHCIFIAIoAhwiBiADIAdJIAQgA0lqaiIDazYCHCAAIAEoAiAiBCACKAIgIgcgAyAGSSAFIANJamoiA2s2AiAgACABKAIkIgUgAigCJCIGIAMgB0kgBCADSWpqIgNrNgIkIAAgASgCKCIEIAIoAigiByADIAZJIAUgA0lqaiIDazYCKCAAIAEoAiwiASACKAIsIgIgAyAHSSAEIANJamoiAGs2AiwgACACSSABIABJagu+AwEMfyMAQcAEayIBJAAgAUGIwwFBqMUBKAIAEQIAIAFBMGoiAkGkxQEoAgARAwAgAUHgAGoiA0GkxQEoAgARAwAgAUGQAWoiBEGkxQEoAgARAwAgAUHAAWoiBUGkxQEoAgARAwAgAUHwAWoiBkGkxQEoAgARAwAgAUGgAmoiB0GkxQEoAgARAwAgAUHQAmoiCEGkxQEoAgARAwAgAUGAA2oiCUGkxQEoAgARAwAgAUGwA2oiCkGkxQEoAgARAwAgAUHgA2oiC0GkxQEoAgARAwAgAUGQBGoiDEGkxQEoAgARAwAgACABQajFASgCABECACAAQTBqIAJBqMUBKAIAEQIAIABB4ABqIANBqMUBKAIAEQIAIABBkAFqIARBqMUBKAIAEQIAIABBwAFqIAVBqMUBKAIAEQIAIABB8AFqIAZBqMUBKAIAEQIAIABBoAJqIAdBqMUBKAIAEQIAIABB0AJqIAhBqMUBKAIAEQIAIABBgANqIAlBqMUBKAIAEQIAIABBsANqIApBqMUBKAIAEQIAIABB4ANqIAtBqMUBKAIAEQIAIABBkARqIAxBqMUBKAIAEQIAIAFBwARqJAALlwIBAn8jAEEwayICJAACQAJAAkBB7IECKAIADgIAAQILIABB4ABqIgFBoMUBKAIAEQQADQEgASABQZS2AUHIxQEoAgARAQAgAiABQZi2AUHAxQEoAgARAQAgACAAIAJBmLYBQbzFASgCABEAACAAQTBqIgAgACACQZi2AUG8xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACABQYjDAUGoxQEoAgARAgAMAQsgAEHgAGoiAUGgxQEoAgARBAANACABIAFBlLYBQcjFASgCABEBACAAIAAgAUGYtgFBvMUBKAIAEQAAIABBMGoiACAAIAFBmLYBQbzFASgCABEAACABQYjDAUGoxQEoAgARAgALIAJBMGokAAv3BwEMfyMAQYAJayICJAACQEHc/gAoAgBFBEAgACABEOoBDAELIAJBwARqIAFBqMUBKAIAEQIAIAJB8ARqIAFBMGoiBUGoxQEoAgARAgAgAkGgBWogAUHgAGoiBkGoxQEoAgARAgAgAkHQBWogAUGQAWoiB0GoxQEoAgARAgAgAkGABmogAUHAAWoiCEGoxQEoAgARAgAgAkGwBmogAUHwAWoiCUGoxQEoAgARAgAgAkHgBmogAUGgAmoiCkGoxQEoAgARAgAgAkGQB2ogAUHQAmoiC0GoxQEoAgARAgAgAkHAB2ogAUGAA2oiDEGoxQEoAgARAgAgAkHwB2ogAUGwA2oiDUGoxQEoAgARAgAgAkGgCGogAUHgA2oiA0GoxQEoAgARAgAgAkHQCGogAUGQBGoiBEGoxQEoAgARAgAgACABQajFASgCABECACAAQTBqIAVBqMUBKAIAEQIAIABB4ABqIAZBqMUBKAIAEQIAIABBkAFqIAdBqMUBKAIAEQIAIABBwAFqIAhBqMUBKAIAEQIAIABB8AFqIAlBqMUBKAIAEQIAIABBoAJqIApBqMUBKAIAEQIAIABB0AJqIAtBqMUBKAIAEQIAIABBgANqIAxBqMUBKAIAEQIAIABBsANqIA1BqMUBKAIAEQIAIABB4ANqIANBqMUBKAIAEQIAIABBkARqIARBqMUBKAIAEQIAIAIgAUGoxQEoAgARAgAgAkEwaiAFQajFASgCABECACACQeAAaiAGQajFASgCABECACACQZABaiAHQajFASgCABECACACQcABaiAIQajFASgCABECACACQfABaiAJQajFASgCABECACACQaACaiAKQZi2AUGwxQEoAgARAQAgAkHQAmogC0GYtgFBsMUBKAIAEQEAIAJBgANqIAxBmLYBQbDFASgCABEBACACQbADaiANQZi2AUGwxQEoAgARAQAgAkHgA2ogA0GYtgFBsMUBKAIAEQEAIAJBkARqIARBmLYBQbDFASgCABEBAEEBIQFBgLUBKAIAQQFNDQADQCAAIAAQTiACQcAEaiEEAkAgACAAIAFBgLQBaiwAACIDQQBMBH8gA0F/Sg0BIAIFIAQLEAcLIAFBAWoiAUGAtQEoAgBJDQALC0G4gAEtAAAEQCAAQaACaiIBIAFBmLYBQbDFASgCABEBACAAQdACaiIBIAFBmLYBQbDFASgCABEBACAAQYADaiIBIAFBmLYBQbDFASgCABEBACAAQbADaiIBIAFBmLYBQbDFASgCABEBACAAQeADaiIBIAFBmLYBQbDFASgCABEBACAAQZAEaiIAIABBmLYBQbDFASgCABEBAAsgAkGACWokAAu8AgEBfyMAQcAEayIDJAAgAiADRwRAIAMgAkGoxQEoAgARAgAgA0EwaiACQTBqQajFASgCABECACADQeAAaiACQeAAakGoxQEoAgARAgAgA0GQAWogAkGQAWpBqMUBKAIAEQIAIANBwAFqIAJBwAFqQajFASgCABECACADQfABaiACQfABakGoxQEoAgARAgALIANBoAJqIAJBoAJq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tgFBuMUBKAIAEQAAIAJB4AZqIAJBwAFqIAJBmLYBQbzFASgCABEAACAGIAJBoAhqQajFASgCABECACACQcAEaiACQaAFakGYtgFBxMUBKAIAEQEAIAcgAkHQBWoiDUGYtgFBxMUBKAIAEQEAIAJBwARqIAJBwARqIAJBoAVqQZi2AUG0xQEoAgARAAAgAkHwBGoiAyADIA1BmLYBQbTFASgCABEAACABIAJBgAZqIAJBwARqQZi2AUG4xQEoAgARAAAgBCALIAdBmLYBQbjFASgCABEAACACQcAEaiACQcAEaiACQYAGakGYtgFBtMUBKAIAEQAAIAMgAyALQZi2AUG0xQEoAgARAAAgAkGgCGogASACQeADakGIxQEoAgARAQAgASACQaAIakGYtgFB7MUBKAIAEQEAIAQgAkGACWpBmLYBQezFASgCABEBACACKALABCEEIAJBwARqIAJBwARqQazFASgCABECACAEQQFxBEAgAkHABGogAkHABGpB2MIBQfDFASgCABEFABoLIAIoAvAEIQQgAyADQazFASgCABECACAEQQFxBEAgAyADQdjCAUHwxQEoAgARBQAaCyACQcABaiACQcAEakGMxQEoAgARAgAgAiACQaAFakGMxQEoAgARAgAgAkHAAWogAkHAAWogAkGYtgFB6MUBKAIAEQAAIAJBoAJqIgQgBCACQeAAaiIGQZi2AUHoxQEoAgARAAAgAiACIAJBmLYBQeTFASgCABEAACAGIAYgBkGYtgFB5MUBKAIAEQAAIAJBwAFqIAJBwAFqIAJBmLYBQejFASgCABEAACAEIAQgBkGYtgFB6MUBKAIAEQAAIAJBwARqIAggCkGYtgFBtMUBKAIAEQAAIAcgDCAJQZi2AUG0xQEoAgARAAAgCCACQcABakGYtgFB7MUBKAIAEQEAIAFBkAFqIARBmLYBQezFASgCABEBACACQaAIaiAHQZi2AUHExQEoAgARAQAgAkGgCGogAkGgCGogAkHABGpBmLYBQbzFASgCABEAACACQfAHaiACQcAEaiAHQZi2AUG0xQEoAgARAAAgAkHAB2ogAkHABGogB0GYtgFBuMUBKAIAEQAAIAJBwARqIAJB8AdqIAJBwAdqQZi2AUG8xQEoAgARAAAgByACQaAIakGoxQEoAgARAgAgAkHABGogAkHABGogAkGA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NgIoIAAgASgCLCIBIAQgA0kgAyAGSWpqIgAgAigCLGoiAjYCLCACIABJIAAgAUlqC1UBAn9BoP4AKAIAIgEgAEEDakF8cSICaiEAAkAgAkEBTkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAUUNAQtBoP4AIAA2AgAgAQ8LQbCCAkEwNgIAQX8LggcBDH8jAEGABmsiAyQAIANBoAVqIAFB4ABqIgUgAUHAAWoiB0HwxQEoAgARBQAaIANB0AVqIgQgAUGQAWoiBiABQfABaiIMQfDFASgCABEFABogA0HABGogAkHgAGoiCCACQcABaiIJQfDFASgCABEFABogA0HwBGoiCyACQZABaiIKIAJB8AFqIg1B8MUBKAIAEQUAGiAAIANBoAVqIANBwARqQYjFASgCABEBACADQaAFaiABIAVB8MUBKAIAEQUAGiAEIAFBMGoiDiAGQfDFASgCABEFABogA0HABGogCCACQfDFASgCABEFABogCyAKIAJBMGoiCkHwxQEoAgARBQAaIABBwAFqIgYgA0GgBWogA0HABGpBiMUBKAIAEQEAIANBoAVqIAEgB0HwxQEoAgARBQAaIAQgDiAMQfDFASgCABEFABogA0HABGogAiAJQfDFASgCABEFABogCyAKIA1B8MUBKAIAEQUAGiAAQYADaiIEIANBoAVqIANBwARqQYjFASgCABEBACADQYADaiAFIAhBiMUBKAIAEQEAIANBwAFqIAcgCUGIxQEoAgARAQAgAyABIAJBiMUBKAIAEQEAIAAgACADQYADakGYtgFB6MUBKAIAEQAAIABB4ABqIgEgASADQeADaiIHQfzFASgCABEFABogACAAIANBwAFqQZi2AUHoxQEoAgARAAAgASABIANBoAJqIghB/MUBKAIAEQUAGiAGIAYgA0GYtgFB6MUBKAIAEQAAIABBoAJqIgIgAiADQeAAaiIJQfzFASgCABEFABogBiAGIANBgANqQZi2AUHoxQEoAgARAAAgAiACIAdB/MUBKAIAEQUAGiAEIAQgA0GYtgFB6MUBKAIAEQAAIABB4ANqIgUgBSAJQfzFASgCABEFABogBCAEIANBwAFqQZi2AUHoxQEoAgARAAAgBSAFIAhB/MUBKAIAEQUAGiAAIABBkMUBKAIAEQIAIAAgACADQZi2AUHkxQEoAgARAAAgASABIAlBmLYBQeTFASgCABEAACADQcABaiADQcABakGQxQEoAgARAgAgBiAGIANBwAFqQZi2AUHkxQEoAgARAAAgAiACIAhBmLYBQeTFASgCABEAACAEIAQgA0GAA2pBmLYBQeTFASgCABEAACAFIAUgB0GYtgFB5MUBKAIAEQAAIANBgAZqJAAL1AIBAn8jAEGgAmsiAyQAAkACQCACQcABaiIEQaDFASgCABEEAEUNACACQfABakGgxQEoAgARBABFDQAgA0GkxQEoAgARAwAgA0EwakGkxQEoAgARAwAgA0HgAGpBpMUBKAIAEQMAIANBkAFqQaTFASgCABEDACADQcABakGkxQEoAgARAwAgA0HwAWpBpMUBKAIAEQMADAELIAMgAkGoxQEoAgARAgAgA0EwaiACQTBqQajFASgCABECACADQeAAaiACQeAAakGYtgFBsMUBKAIAEQEAIANBkAFqIAJBkAFqQZi2AUGwxQEoAgARAQAgA0HAAWogBEGoxQEoAgARAgAgA0HwAWogAkHwAWpBqMUBKAIAEQIACwJAAkACQAJAQZiCAigCAA4DAAECAwsgACABIAMQCwwCCyAAIAEgAxAKDAELIAAgASADEAkLIANBoAJqJAAL0h4BAn8jAEGgAmsiBCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDhEAAQIDBAUGBwgJCgsMDQ4PEBMLIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDAEEBIQUMEgsgACABQajFASgCABECACAAQTBqIAFBMGpBqMUBKAIAEQIAIABB4ABqIAFB4ABqQajFASgCABECAAwQCwJAAkACQEHsgQIoAgAOAwABAhILIAAgARATDBELIAAgARASDBALIAAgARAVDA8LAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBEGQAWogARATDAILIARBkAFqIAEQEgwBCyAEQZABaiABEBULQeyBAigCACEFCwJAAkACQCAFDgMAAQIRCyAAIARBkAFqIAEQDgwQCyAAIARBkAFqIAEQDQwPCyAAIARBkAFqIAEQDAwOCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAAgARATDAILIAAgARASDAELIAAgARAVC0HsgQIoAgAhBQsCQAJAIAUOAwABDg8LIAAgABATDA4LIAAgABASDA0LAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBEGQAWogARATDAILIARBkAFqIAEQEgwBCyAEQZABaiABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBkAFqIARBkAFqEBMMAgsgBEGQAWogBEGQAWoQEgwBCyAEQZABaiAEQZABahAVCwJAAkACQEHsgQIoAgAOAwABAg8LIAAgBEGQAWogARAODA4LIAAgBEGQAWogARANDA0LIAAgBEGQAWogARAMDAwLAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBEGQAWogARATDAILIARBkAFqIAEQEgwBCyAEQZABaiABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIAAgBEGQAWogARAODAILIAAgBEGQAWogARANDAELIAAgBEGQAWogARAMCwJAAkBB7IECKAIADgMAAQwNCyAAIAAQEwwMCyAAIAAQEgwLCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAQgARATDAILIAQgARASDAELIAQgARAVC0HsgQIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEIAQQEwwCCyAEIAQQEgwBCyAEIAQQFQsCQAJAAkACQEHsgQIoAgAOAwABAgMLIAQgBBATDAILIAQgBBASDAELIAQgBBAVCwJAIAFB4ABqIgJBoMUBKAIAEQQABEAgBEGQAWpBpMUBKAIAEQMAIARBwAFqQaTFASgCABEDACAEQfABakGkxQEoAgARAwAMAQsgBEGQAWogAUGoxQEoAgARAgAgBEHAAWogAUEwakGYtgFBsMUBKAIAEQEAIARB8AFqIAJBqMUBKAIAEQIACwJAAkACQEHsgQIoAgAOAwABAg0LIAAgBCAEQZABahAODAwLIAAgBCAEQZABahANDAsLIAAgBCAEQZABahAMDAoLAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgACABEBMMAgsgACABEBIMAQsgACABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIAAgABATDAILIAAgABASDAELIAAgABAVCwJAAkBB7IECKAIADgMAAQoLCyAAIAAQEwwKCyAAIAAQEgwJCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIARBkAFqIAEQEwwCCyAEQZABaiABEBIMAQsgBEGQAWogARAVC0HsgQIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEQZABaiAEQZABahATDAILIARBkAFqIARBkAFqEBIMAQsgBEGQAWogBEGQAWoQFQsCQAJAAkACQAJAQeyBAigCACIFDgMAAQIECyAEQZABaiAEQZABahATDAILIARBkAFqIARBkAFqEBIMAQsgBEGQAWogBEGQAWoQFQtB7IECKAIAIQULAkACQAJAIAUOAwABAgsLIAAgBEGQAWogARAODAoLIAAgBEGQAWogARANDAkLIAAgBEGQAWogARAMDAgLAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBEGQAWogARATDAILIARBkAFqIAEQEgwBCyAEQZABaiABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBkAFqIARBkAFqEBMMAgsgBEGQAWogBEGQAWoQEgwBCyAEQZABaiAEQZABahAVCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAAgBEGQAWogARAODAILIAAgBEGQAWogARANDAELIAAgBEGQAWogARAMC0HsgQIoAgAhBQsCQAJAIAUOAwABCAkLIAAgABATDAgLIAAgABASDAcLAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBEGQAWogARATDAILIARBkAFqIAEQEgwBCyAEQZABaiABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIAQgBEGQAWoQEwwCCyAEIARBkAFqEBIMAQsgBCAEQZABahAVCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAQgBBATDAILIAQgBBASDAELIAQgBBAVC0HsgQIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEIAQgBEGQAWoQDgwCCyAEIAQgBEGQAWoQDQwBCyAEIAQgBEGQAWoQDAsCQAJAAkBB7IECKAIADgMAAQIJCyAAIAQgARAODAgLIAAgBCABEA0MBwsgACAEIAEQDAwGCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIARBkAFqIAEQEwwCCyAEQZABaiABEBIMAQsgBEGQAWogARAVC0HsgQIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEQZABaiAEQZABahATDAILIARBkAFqIARBkAFqEBIMAQsgBEGQAWogBEGQAWoQFQsCQAJAAkACQAJAQeyBAigCACIFDgMAAQIECyAEIARBkAFqEBMMAgsgBCAEQZABahASDAELIAQgBEGQAWoQFQtB7IECKAIAIQULAkACQAJAIAUOAwABAggLIAAgBEGQAWogBBAODAcLIAAgBEGQAWogBBANDAYLIAAgBEGQAWogBBAMDAULAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBEGQAWogARATDAILIARBkAFqIAEQEgwBCyAEQZABaiABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBkAFqIARBkAFqEBMMAgsgBEGQAWogBEGQAWoQEgwBCyAEQZABaiAEQZABahAVCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAQgBEGQAWoQEwwCCyAEIARBkAFqEBIMAQsgBCAEQZABahAVC0HsgQIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEQZABaiAEQZABaiAEEA4MAgsgBEGQAWogBEGQAWogBBANDAELIARBkAFqIARBkAFqIAQQDAsCQAJAAkBB7IECKAIADgMAAQIHCyAAIARBkAFqIAEQDgwGCyAAIARBkAFqIAEQDQwFCyAAIARBkAFqIAEQDAwECwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAQgARATDAILIAQgARASDAELIAQgARAVC0HsgQIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEIAQQEwwCCyAEIAQQEgwBCyAEIAQQFQsCQAJAAkACQEHsgQIoAgAOAwABAgMLIAQgBBATDAILIAQgBBASDAELIAQgBBAVCwJAIAFB4ABqIgJBoMUBKAIAEQQABEAgBEGQAWpBpMUBKAIAEQMAIARBwAFqQaTFASgCABEDACAEQfABakGkxQEoAgARAwAMAQsgBEGQAWogAUGoxQEoAgARAgAgBEHAAWogAUEwakGYtgFBsMUBKAIAEQEAIARB8AFqIAJBqMUBKAIAEQIACwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAQgBCAEQZABahAODAILIAQgBCAEQZABahANDAELIAQgBCAEQZABahAMC0HsgQIoAgAhBQsCQAJAAkAgBQ4DAAECBgsgACAEEBMMBQsgACAEEBIMBAsgACAEEBUMAwsCQAJAAkACQAJAQeyBAigCACIFDgMAAQIECyAEIAEQEwwCCyAEIAEQEgwBCyAEIAEQFQtB7IECKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgBCAEEBMMAgsgBCAEEBIMAQsgBCAEEBULAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgBCAEEBMMAgsgBCAEEBIMAQsgBCAEEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIAQgBBATDAILIAQgBBASDAELIAQgBBAVCwJAIAFB4ABqIgJBoMUBKAIAEQQABEAgBEGQAWpBpMUBKAIAEQMAIARBwAFqQaTFASgCABEDACAEQfABakGkxQEoAgARAwAMAQsgBEGQAWogAUGoxQEoAgARAgAgBEHAAWogAUEwakGYtgFBsMUBKAIAEQEAIARB8AFqIAJBqMUBKAIAEQIACwJAAkACQEHsgQIoAgAOAwABAgULIAAgBCAEQZABahAODAQLIAAgBCAEQZABahANDAMLIAAgBCAEQZABahAMDAILAkACQAJAAkACQEHsgQIoAgAiBQ4DAAECBAsgACABEBMMAgsgACABEBIMAQsgACABEBULQeyBAigCACEFCwJAAkACQAJAIAUOAwABAgMLIAAgABATDAILIAAgABASDAELIAAgABAVCwJAAkACQAJAAkBB7IECKAIAIgUOAwABAgQLIAAgABATDAILIAAgABASDAELIAAgABAVC0HsgQIoAgAhBQsCQAJAIAUOAwABAgMLIAAgABATDAILIAAgABASDAELIAAgABAVC0EBIQUgA0UNACAAQeAAaiIBQaDFASgCABEEAARAIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIAFBpMUBKAIAEQMADAELIAAgAEGoxQEoAgARAgAgAEEwaiIAIABBmLYBQbDFASgCABEBACABIAFBqMUBKAIAEQIACyAEQaACaiQAIAULzQoCCH8NfiMAIQMgACABRgRAIANBUGoiASEDIAEgACkCKDcCKCABIAApAiA3AiAgASAAKQIYNwIYIAEgACkCEDcCECABIAApAgg3AgggASAAKQIANwIACyAAIAJGBEAgA0FQ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BAsgAkEAOgCIBQsgBiAGIAJBoARqECkgB0EBaiIHQQRHDQALCyACQZAFaiQAC8gBAQJ/IwBBkAFrIgIkAAJAIAFB4ABqIgNBoMUBKAIAEQQABEAgAkGkxQEoAgARAwAgAkEwakGkxQEoAgARAwAgAkHgAGpBpMUBKAIAEQMADAELIAIgAUGoxQEoAgARAgAgAkEwaiABQTBqQZi2AUGwxQEoAgARAQAgAkHgAGogA0GoxQEoAgARAgALAkACQAJAAkBB7IECKAIADgMAAQIDCyAAIAAgAhAODAILIAAgACACEA0MAQsgACAAIAIQDAsgAkGQAWokAAu4AwEFfyMAQdACayIBJAACQCAAQcABaiICQaDFASgCABEEAARAIABB8AFqQaDFASgCABEEAA0BCyABQZABaiACQdTFASgCABECACABQTBqIABB8AFqIgNB1MUBKAIAEQIAIAFBkAFqIAFBkAFqIAFBMGpB+MUBKAIAEQUAGiABIAFBkAFqQZi2AUHsxQEoAgARAQAgASABQZS2AUHIxQEoAgARAQAgAiACIAFBmLYBQbzFASgCABEAACADIAMgAUGYtgFBvMUBKAIAEQAAIAMgA0GYtgFBsMUBKAIAEQEAIAFBkAFqIAAgAkGIxQEoAgARAQAgACABQZABakGYtgFB7MUBKAIAEQEAIABBMGogAUHwAWoiBEGYtgFB7MUBKAIAEQEAIAFBkAFqIABB4ABqIgUgAkGIxQEoAgARAQAgBSABQZABakGYtgFB7MUBKAIAEQEAIABBkAFqIARBmLYBQezFASgCABEBACABQZABakGIwwFBqMUBKAIAEQIAIAFBwAFqIgBBpMUBKAIAEQMAIAIgAUGQAWpBqMUBKAIAEQIAIAMgAEGoxQEoAgARAgALIAFB0AJqJAALlwUBBX8jAEGAA2siASQAAkAgAEHAAWoiAkGgxQEoAgARBAAEQCAAQfABakGgxQEoAgARBAANAQsgAUHAAWogAkHUxQEoAgARAgAgASAAQfABaiIDQdTFASgCABECACABQcABaiABQcABaiABQfjFASgCABEFABogAUGQAWogAUHAAWpBmLYBQezFASgCABEBACABQZABaiABQZABakGUtgFByMUBKAIAEQEAIAIgAiABQZABakGYtgFBvMUBKAIAEQAAIAMgAyABQZABakGYtgFB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RQ0ACwsgAUEEaiEDIAdBAWoiB0EHRwRAIAMoAgAhBCADIQEMAQsLIAEoAiAhDCAAIAEoAgQiBCALazYCACAAIAEoAggiByACKAIEIgUgBCALSWoiBGs2AgQgACABKAIMIgsgBCAFSSAHIARJaiIHIAIoAghqIgRrNgIIIAAgASgCECIFIAQgB0kgCyAESWoiByACKAIMaiIEazYCDCAAIAEoAhQiCyAEIAdJIAUgBElqIgcgAigCEGoiBGs2AhAgBCAHSSALIARJaiIHIAIoAhRqIQQgDARAIAAgASgCGCIDIARrNgIUIAAgASgCHCACKAIYayADIARJayAEIAdJazYCGA8LIAAgASgCGCIMIARrNgIUIAAgASgCHCILIAQgB0kgDCAESWoiBCACKAIYaiIBazYCGCABIARJQX9BACALIAFJG0cEQCAAIAMpAgA3AgAgACADKAIYNgIYIAAgAykCEDcCECAAIAMpAgg3AggLC9cKAgp/CH4gAkF8aigCACELIwBBQGoiAyABKAIcIgc2AhwgAyABKAIgNgIgIAMgASgCJDYCJCADIAEoAig2AiggAyABKAIsNgIsIANBADYCMCACNQIEIQ8gAjUCFCEQIAI1AhAhESACNQIMIRIgAjUCCCETIAMgASgCACIEIAIoAgAiDK0iFCAEIAtsrSIOfiINp2oiBTYCACADIAEoAgQiBiAFIARJaiIFIA1CIIinIgggDiAPfiINp2oiCWoiBDYCBCADIAQgBUkgBSAGSWoiBiABKAIIaiIFIA1CIIinIAkgCElqIgggDiATfiINp2oiCWoiCjYCCCADIAogBUkgBSAGSWoiBiABKAIMaiIFIA1CIIinIAkgCElqIgggDiASfiINp2oiCWoiCjYCDCADIAogBUkgBSAGSWoiBiABKAIQaiIFIA1CIIinIAkgCElqIgggDiARfiINp2oiCWoiCjYCECADIAogBUkgBSAGSWoiBiABKAIUaiIFIA1CIIinIAkgCElqIgggDiAQfiIOp2oiCWoiCjYCFCADIAogBUkgBSAGSWoiBSABKAIYaiIBIA5CIIinIAkgCElqaiIGNgIYAkBBACABIAVJayAGIAFJRg0AIAMgB0EBaiIBNgIcAkAgASAHTw0AIAMgAygCICIBQQFqIgc2AiAgByABTw0AIAMgAygCJCIBQQFqIgc2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AjgiByADIAZJIAUgA0lqaiIDazYCOCAAIAEoAjwiASACKAI8IgIgAyAHSSAEIANJamoiAGs2AjwgACACSSABIABJagv/DwEPfyMAQcAHayICJAAgAkGABmogAUGMxQEoAgARAgAgAkHABGogAUGAA2oiC0GMxQEoAgARAgAgAkGAA2ogAkHABGpBkMUBKAIAEQIAIAJBgANqIAJBgANqIAJBgAZqQZi2AUHkxQEoAgARAAAgAkHgA2oiAyADIAJB4AZqIgpBmLYBQeTFASgCABEAACACQcABaiABIAtBmLYBQbTFASgCABEAACACQfABaiIHIAFBMGoiBCABQbADaiIFQZi2AUG0xQEoAgARAAAgAkGgAmogAkGAA2pBmLYBQezFASgCABEBACACQdACaiIIIANBmLYBQezFASgCABEBACACQYADaiACQcABakGMxQEoAgARAgAgAkGAA2ogAkGAA2ogAkGABmpBmLYBQejFASgCABEAACADIAMgCkGYtgFB6MUBKAIAEQAAIAJBgANqIAJBgANqIAJBwARqQZi2AUHoxQEoAgARAAAgAyADIAJBoAVqIglBmLYBQejFASgCABEAACACQcABaiACQYADakGYtgFB7MUBKAIAEQEAIAcgA0GYtgFB7MUBKAIAEQEAIAAgAkGgAmogAUGYtgFBuMUBKAIAEQAAIABBMGoiBiAIIARBmLYBQbjFASgCABEAACAAIABBmLYBQcTFASgCABEBACAGIAZBmLYBQcTFASgCABEBACAAIAAgAkGgAmpBmLYBQbTFASgCABEAACAGIAYgCEGYtgFBtMUBKAIAEQAAIABBgANqIgYgAkHAAWogC0GYtgFBtMUBKAIAEQAAIABBsANqIgQgByAFQZi2AUG0xQEoAgARAAAgBiAGQZi2AUHExQEoAgARAQAgBCAEQZi2AUHExQEoAgARAQAgBiAGIAJBwAFqQZi2AUG0xQEoAgARAAAgBCAEIAdBmLYBQbTFASgCABEAACACQYAGaiABQaACaiIMQYzFASgCABECACACQcAEaiABQcABaiINQYzFASgCABECACACQYADaiACQcAEakGQxQEoAgARAgAgAkGAA2ogAkGAA2ogAkGABmpBmLYBQeTFASgCABEAACADIAMgCkGYtgFB5MUBKAIAEQAAIAJBwAFqIAwgDUGYtgFBtMUBKAIAEQAAIAcgAUHQAmoiBiABQfABaiILQZi2AUG0xQEoAgARAAAgAkGgAmogAkGAA2pBmLYBQezFASgCABEBACAIIANBmLYBQezFASgCABEBACACQYADaiACQcABakGMxQEoAgARAgAgAkGAA2ogAkGAA2ogAkGABmpBmLYBQejFASgCABEAACADIAMgCkGYtgFB6MUBKAIAEQAAIAJBgANqIAJBgANqIAJBwARqQZi2AUHoxQEoAgARAAAgAyADIAlBmLYBQejFASgCABEAACACQcABaiACQYADakGYtgFB7MUBKAIAEQEAIAcgA0GYtgFB7MUBKAIAEQEAIAJBgAZqIAFB4ABqIg5BjMUBKAIAEQIAIAJBwARqIAFB4ANqIg9BjMUBKAIAEQIAIAJBgANqIAJBwARqQZDFASgCABECACACQYADaiACQYADaiACQYAGakGYtgFB5MUBKAIAEQAAIAMgAyAKQZi2AUHkxQEoAgARAAAgAiAOIA9BmLYBQbTFASgCABEAACACQTBqIgQgAUGQAWoiBSABQZAEaiIBQZi2AUG0xQEoAgARAAAgAkHgAGogAkGAA2pBmLYBQezFASgCABEBACACQZABaiIQIANBmLYBQezFASgCABEBACACQYADaiACQYzFASgCABECACACQYADaiACQYADaiACQYAGakGYtgFB6MUBKAIAEQAAIAMgAyAKQZi2AUHoxQEoAgARAAAgAkGAA2ogAkGAA2ogAkHABGpBmLYBQejFASgCABEAACADIAMgCUGYtgFB6MUBKAIAEQAAIAIgAkGAA2pBmLYBQezFASgCABEBACAEIANBmLYBQezFASgCABEBACAAQeAAaiIJIAJBoAJqIA5BmLYBQbjFASgCABEAACAAQZABaiIEIAggBUGYtgFBuMUBKAIAEQAAIAkgCUGYtgFBxMUBKAIAEQEAIAQgBEGYtgFBxMUBKAIAEQEAIAkgCSACQaACakGYtgFBtMUBKAIAEQAAIAQgBCAIQZi2AUG0xQEoAgARAAAgAEHgA2oiBCACQcABaiAPQZi2AUG0xQEoAgARAAAgAEGQBGoiBSAHIAFBmLYBQbTFASgCABEAACAEIARBmLYBQcTFASgCABEBACAFIAVBmLYBQcTFASgCABEBACAEIAQgAkHAAWpBmLYBQbTFASgCABEAACAFIAUgB0GYtgFBtMUBKAIAEQAAIAJBoAJqIAJBiMYBKAIAEQIAIABBoAJqIgUgAkGgAmogDEGYtgFBtMUBKAIAEQAAIABB0AJqIgEgCCAGQZi2AUG0xQEoAgARAAAgBSAFQZi2AUHExQEoAgARAQAgASABQZi2AUHExQEoAgARAQAgBSAFIAJBoAJqQZi2AUG0xQEoAgARAAAgASABIAhBmLYBQbTFASgCABEAACAAQcABaiIBIAJB4ABqIA1BmLYBQbjFASgCABEAACAAQfABaiIAIBAgC0GYtgFBuMUBKAIAEQAAIAEgAUGYtgFBxMUBKAIAEQEAIAAgAEGYtgFBxMUBKAIAEQEAIAEgASACQeAAakGYtgFBtMUBKAIAEQAAIAAgACAQQZi2AUG0xQEoAgARAAAgAkHAB2okAAvbBAEEfyMAQaACayIGJAAgACABRgRAIAYgAEGoxQEoAgARAgAgBiEBCyAAQYjDAUGoxQEoAgARAgBBnMUBKAIAGgJAA0AgAyIFRQ0BIAIgBUF/aiIDQQJ0aiIHKAIARQ0ACwJAIAVBAUcNAAJAAkACQAJAIAIoAgBBf2oOBAABAgMECyAAIAFBqMUBKAIAEQIADAQLIAAgAUGYtgFBwMUBKAIAEQEADAMLIAAgAUGYtgFBwMUBKAIAEQEAIAAgACABQZi2AUG8xQEoAgARAAAMAgsgACABQZi2AUHAxQEoAgARAQAgACAAQZi2AUHAxQEoAgARAQAMAQsgBkHgAGogAUGoxQEoAgARAgAgBkGQAWoiBSAGQeAAakGoxQEoAgARAgAgBkHAAWoiCCAFQZi2AUHAxQEoAgARAQAgBkHwAWogCCABQZi2AUG8xQEoAgARAAACQCAHKAIAIgdnQR9zIgVBAXEEQCAAIAZB4ABqIAcgBUF/aiIFdkEDcUEwbGpBqMUBKAIAEQIADAELIAAgAUGoxQEoAgARAgALIANBAE4EQCADIQEDQCAFQQFKBEAgAiABQQJ0aigCACEHA0AgACAAQZi2AUHAxQEoAgARAQAgACAAQZi2AUHAxQEoAgARAQAgByAFQX5qIgN2QQNxIggEQCAAIAAgBkHgAGogCEEwbGpBmLYBQbzFASgCABEAAAsgBUEDSiEIIAMhBSAIDQALCyABQQBKIQNBICEFIAFBf2ohASADDQALCwsgBARAIAAgAEGUtgFByMUBKAIAEQEACyAGQaACaiQAC+0dAQJ/IwBBwARrIgQkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg4RAAECAwQFBgcICQoLDA0ODxATCyAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgAEGQAWpBpMUBKAIAEQMAIABBwAFqQaTFASgCABEDACAAQfABakGkxQEoAgARAwBBASEFDBILIAAgAUGoxQEoAgARAgAgAEEwaiABQTBqQajFASgCABECACAAQeAAaiABQeAAakGoxQEoAgARAgAgAEGQAWogAUGQAWpBqMUBKAIAEQIAIABBwAFqIAFBwAFqQajFASgCABECACAAQfABaiABQfABakGoxQEoAgARAgAMEAsCQAJAAkBBmIICKAIADgMAAQISCyAAIAEQEQwRCyAAIAEQEAwQCyAAIAEQFAwPCwJAAkACQAJAAkBBmIICKAIAIgUOAwABAgQLIARBoAJqIAEQEQwCCyAEQaACaiABEBAMAQsgBEGgAmogARAUC0GYggIoAgAhBQsCQAJAAkAgBQ4DAAECEQsgACAEQaACaiABEAsMEAsgACAEQaACaiABEAoMDwsgACAEQaACaiABEAkMDgsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAAIAEQEQwCCyAAIAEQEAwBCyAAIAEQFAtBmIICKAIAIQULAkACQCAFDgMAAQ4PCyAAIAAQEQwOCyAAIAAQEAwNCwJAAkACQAJAAkBBmIICKAIAIgUOAwABAgQLIARBoAJqIAEQEQwCCyAEQaACaiABEBAMAQsgBEGgAmogARAUC0GYggIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEQaACaiAEQaACahARDAILIARBoAJqIARBoAJqEBAMAQsgBEGgAmogBEGgAmoQFAsCQAJAAkBBmIICKAIADgMAAQIPCyAAIARBoAJqIAEQCwwOCyAAIARBoAJqIAEQCgwNCyAAIARBoAJqIAEQCQwMCwJAAkACQAJAAkBBmIICKAIAIgUOAwABAgQLIARBoAJqIAEQEQwCCyAEQaACaiABEBAMAQsgBEGgAmogARAUC0GYggIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAAIARBoAJqIAEQCwwCCyAAIARBoAJqIAEQCgwBCyAAIARBoAJqIAEQCQsCQAJAQZiCAigCAA4DAAEMDQsgACAAEBEMDAsgACAAEBAMCwsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAEQaACaiABEBEMAgsgBEGgAmogARAQDAELIARBoAJqIAEQFAtBmIICKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgBEGgAmogBEGgAmoQEQwCCyAEQaACaiAEQaACahAQDAELIARBoAJqIARBoAJqEBQLAkACQAJAAkBBmIICKAIADgMAAQIDCyAEQaACaiAEQaACahARDAILIARBoAJqIARBoAJqEBAMAQsgBEGgAmogBEGgAmoQFAsgACAEQaACaiABEDwMCgsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAAIAEQEQwCCyAAIAEQEAwBCyAAIAEQFAtBmIICKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgACAAEBEMAgsgACAAEBAMAQsgACAAEBQLAkACQEGYggIoAgAOAwABCgsLIAAgABARDAoLIAAgABAQDAkLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgBEGgAmogARARDAILIARBoAJqIAEQEAwBCyAEQaACaiABEBQLQZiCAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBoAJqIARBoAJqEBEMAgsgBEGgAmogBEGgAmoQEAwBCyAEQaACaiAEQaACahAUCwJAAkACQAJAAkBBmIICKAIAIgUOAwABAgQLIARBoAJqIARBoAJqEBEMAgsgBEGgAmogBEGgAmoQEAwBCyAEQaACaiAEQaACahAUC0GYggIoAgAhBQsCQAJAAkAgBQ4DAAECCwsgACAEQaACaiABEAsMCgsgACAEQaACaiABEAoMCQsgACAEQaACaiABEAkMCAsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAEQaACaiABEBEMAgsgBEGgAmogARAQDAELIARBoAJqIAEQFAtBmIICKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgBEGgAmogBEGgAmoQEQwCCyAEQaACaiAEQaACahAQDAELIARBoAJqIARBoAJqEBQLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgACAEQaACaiABEAsMAgsgACAEQaACaiABEAoMAQsgACAEQaACaiABEAkLQZiCAigCACEFCwJAAkAgBQ4DAAEICQsgACAAEBEMCAsgACAAEBAMBwsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAEQaACaiABEBEMAgsgBEGgAmogARAQDAELIARBoAJqIAEQFAtBmIICKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgBCAEQaACahARDAILIAQgBEGgAmoQEAwBCyAEIARBoAJqEBQLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgBCAEEBEMAgsgBCAEEBAMAQsgBCAEEBQLQZiCAigCACEFCwJAAkACQAJAIAUOAwABAgMLIAQgBCAEQaACahALDAILIAQgBCAEQaACahAKDAELIAQgBCAEQaACahAJCwJAAkACQEGYggIoAgAOAwABAgkLIAAgBCABEAsMCAsgACAEIAEQCgwHCyAAIAQgARAJDAYLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgBEGgAmogARARDAILIARBoAJqIAEQEAwBCyAEQaACaiABEBQLQZiCAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBoAJqIARBoAJqEBEMAgsgBEGgAmogBEGgAmoQEAwBCyAEQaACaiAEQaACahAUCwJAAkACQAJAAkBBmIICKAIAIgUOAwABAgQLIAQgBEGgAmoQEQwCCyAEIARBoAJqEBAMAQsgBCAEQaACahAUC0GYggIoAgAhBQsCQAJAAkAgBQ4DAAECCAsgACAEQaACaiAEEAsMBwsgACAEQaACaiAEEAoMBgsgACAEQaACaiAEEAkMBQsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAEQaACaiABEBEMAgsgBEGgAmogARAQDAELIARBoAJqIAEQFAtBmIICKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgBEGgAmogBEGgAmoQEQwCCyAEQaACaiAEQaACahAQDAELIARBoAJqIARBoAJqEBQLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgBCAEQaACahARDAILIAQgBEGgAmoQEAwBCyAEIARBoAJqEBQLQZiCAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBoAJqIARBoAJqIAQQCwwCCyAEQaACaiAEQaACaiAEEAoMAQsgBEGgAmogBEGgAmogBBAJCwJAAkACQEGYggIoAgAOAwABAgcLIAAgBEGgAmogARALDAYLIAAgBEGgAmogARAKDAULIAAgBEGgAmogARAJDAQLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgBEGgAmogARARDAILIARBoAJqIAEQEAwBCyAEQaACaiABEBQLQZiCAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBoAJqIARBoAJqEBEMAgsgBEGgAmogBEGgAmoQEAwBCyAEQaACaiAEQaACahAUCwJAAkACQAJAQZiCAigCAA4DAAECAwsgBEGgAmogBEGgAmoQEQwCCyAEQaACaiAEQaACahAQDAELIARBoAJqIARBoAJqEBQLIARBoAJqIARBoAJqIAEQPAJAAkACQEGYggIoAgAOAwABAgYLIAAgBEGgAmoQEQwFCyAAIARBoAJqEBAMBAsgACAEQaACahAUDAMLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgBEGgAmogARARDAILIARBoAJqIAEQEAwBCyAEQaACaiABEBQLQZiCAigCACEFCwJAAkACQAJAIAUOAwABAgMLIARBoAJqIARBoAJqEBEMAgsgBEGgAmogBEGgAmoQEAwBCyAEQaACaiAEQaACahAUCwJAAkACQAJAAkBBmIICKAIAIgUOAwABAgQLIARBoAJqIARBoAJqEBEMAgsgBEGgAmogBEGgAmoQEAwBCyAEQaACaiAEQaACahAUC0GYggIoAgAhBQsCQAJAAkACQCAFDgMAAQIDCyAEQaACaiAEQaACahARDAILIARBoAJqIARBoAJqEBAMAQsgBEGgAmogBEGgAmoQFAsgACAEQaACaiABEDwMAgsCQAJAAkACQAJAQZiCAigCACIFDgMAAQIECyAAIAEQEQwCCyAAIAEQEAwBCyAAIAEQFAtBmIICKAIAIQULAkACQAJAAkAgBQ4DAAECAwsgACAAEBEMAgsgACAAEBAMAQsgACAAEBQLAkACQAJAAkACQEGYggIoAgAiBQ4DAAECBAsgACAAEBEMAgsgACAAEBAMAQsgACAAEBQLQZiCAigCACEFCwJAAkAgBQ4DAAECAwsgACAAEBEMAgsgACAAEBAMAQsgACAAEBQLQQEhBSADRQ0AAkAgAEHAAWoiAUGgxQEoAgARBABFDQAgAEHwAWoiAkGgxQEoAgARBABFDQAgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMAIABBkAFqQaTFASgCABEDACABQaTFASgCABEDACACQaTFASgCABEDAAwBCyAAIABBqMUBKAIAEQIAIABBMGoiAiACQajFASgCABECACAAQeAAaiICIAJBmLYBQbDFASgCABEBACAAQZABaiICIAJBmLYBQbDFASgCABEBACABIAFBqMUBKAIAEQIAIABB8AFqIgAgAEGoxQEoAgARAgALIARBwARqJAAgBQvcAwEDfyMAQeAAayICJAACQAJAIAFBMGoiBEGgxQEoAgARBAAEQCACQTBqIAEQJARAIAAgAkEwakGoxQEoAgARAgAgAEEwakGkxQEoAgARAwAMAgsgAiABQZi2AUGwxQEoAgARAQAgAkEwaiACECQaIABBpMUBKAIAEQMAIABBMGogAkEwakGoxQEoAgARAgAMAQsgAkEwaiABQZi2AUHAxQEoAgARAQAgAiAEQZi2AUHAxQEoAgARAQAgAkEwaiACQTBqIAJBmLYBQbTFASgCABEAACACQTBqIAJBMGoQJEUNASACIAEgAkEwakGYtgFBtMUBKAIAEQAAIAIoAgAhAyACIAJBrMUBKAIAEQIAIANBAXEEQCACIAJB2MIBQfDFASgCABEFABoLIAIgAhAkRQRAIAIgASACQTBqQZi2AUG4xQEoAgARAAAgAigCACEBIAIgAkGsxQEoAgARAgAgAUEBcQRAIAIgAkHYwgFB8MUBKAIAEQUAGgsgAiACECQaCyAAIAJBqMUBKAIAEQIAIAIgAiACQZi2AUG0xQEoAgARAAAgAiACQZS2AUHIxQEoAgARAQAgAEEwaiAEIAJBmLYBQbzFASgCABEAAAtBASEDCyACQeAAaiQAIAML0QsBBn8jAEHwAGsiBCQAQQEhAwJAIAIoAmQiBUEBRgRAIAIoAgRFDQELIAIgBUF/aiIDQQJ0aigCBGdBH3MgA0EFdEEBcmohAwsCQAJAIAMgACgCyAIiBkEGdE0EQCAALQDMAg0BCyABIAIgABAaDAELIAMgACgCxAJJBEAgASACKAIAIgA2AgAgAARAQQAhAwNAIAEgA0ECdCIGaiACIAZqKAIENgIEIANBAWoiAyAARw0ACwsgASAFNgJkIAEgAi0AaDoAaAwBCyADIAZBBXQiB00EQCABIAIgABAaDAELIARBATYCZCAEQQA2AgQgBEEAOgBoIAQgAigCACIDNgIAIARBBHIhBiADBEAgBiACQQRqIANBAnQQAxoLIAQgBTYCZCAEIAItAGg6AGggBCAEIAdBYGoQJwJAIAAoAtABIgUgBCgCZCIHaiIDQRlPBEAgBEEBNgJkIARCATcDACAEQQA6AGgMAQsgBCADNgIAIAYgBiAHIABB8ABqIAUQCCAEIAAtANQBIAQtAGhzOgBoAkADQCADIgVBAkgNASAEIAVBf2oiA0ECdGooAgRFDQALIAQgBTYCZAwBCyAEQQE2AmQgBCgCBA0AIARBADoAaAsgBCAEIAAoAsgCQQV0QSBqECcCQCAAKAJkIgMgBCgCZCIHaiIFQRlPBEBBASEDIARBATYCZCAEQgE3AwAgBEEAOgBoDAELIAQgBTYCACAGIAYgByAAQQRqIAMQCCAEIAAtAGggBC0AaHM6AGgCQANAIAUiA0ECSA0BIAQgA0F/aiIFQQJ0aigCBEUNAAsgBCADNgJkDAELQQEhAyAEQQE2AmQgBCgCBA0AIARBADoAaAsCQCADIAAoAsgCQQFqIgdJDQAgBEEAOgBoIAdFBEAgBEEBNgJkIARCATcDACAEQQA6AGgMAQsgB0H/////A3EiA0EYSw0AIAQgAzYCAAJAIANFDQAgA0ECdCAHQQJ0SQ0AQQAhBUEAIQYDQEEAIQggBiAHSQRAIAQgBkECdGooAgQhCCAGQQFqIQYLIAQgBUECdGogCDYCBCAFQQFqIgUgA0cNAAsLAkADQCADIgVBAkgNASAEIAVBf2oiA0ECdGooAgRFDQALIAQgBTYCZAwBCyAEQQE2AmQgBCgCBA0AIARBADoAaAsgASACKAIAIgU2AgAgBQRAQQAhAwNAIAEgA0ECdCIGaiACIAZqKAIENgIEIANBAWoiAyAFRw0ACwsgASACKAJkIgM2AmQgASACLQBoOgBoAkAgAyAHSQ0AIAFBADoAaCAHRQRAIAFBATYCZCABQgE3AgAgAUEAOgBoDAELIAdB/////wNxIgJBGEsNACABIAI2AgACQCACRQ0AIAJBAnQgB0ECdEkNAEEAIQNBACEFA0BBACEGIAUgB0kEQCABIAVBAnRqKAIEIQYgBUEBaiEFCyABIANBAnRqIAY2AgQgA0EBaiIDIAJHDQALCwJAA0AgAiIDQQJIDQEgASADQX9qIgJBAnRqKAIERQ0ACyABIAM2AmQMAQsgAUEBNgJkIAEoAgQNACABQQA6AGgLIAEgASAEECkgASgCZCECAkACQCABLQBoBEBBASEGIAJBAUcNASABKAIERQ0CDAELQQAhBgJAIAIOAgEAAgsDQCACRQ0CIAEgAkF/aiICQQJ0aigCBEUNAAsMAQsgASABIABB2AFqEB4gAS0AaCEGCyABKAJkIQICQCAALQBoIAZB/wFxRwRAAkAgAkEBRw0AIAEoAgQNACAAKAJkQQFHDQAgBkH/AXFFDQIgACgCBEUNAgwDCyAGQf8BcUUNAQwCC0EAAn8gACgCZCIDIAJGBEADQEEAIAJBAUgNAhogASACQX9qIgJBAnQiA2ooAgQiBSAAIANqKAIEIgNGDQALQQFBfyAFIANLGwwBC0EBQX8gAiADSxsLIgJrIAIgBkH/AXEbQQBIDQELIAEgASAAECkLIARB8ABqJAALswIBBH8gAkEZTwRAIABBATYCZCAAQgE3AgAgAEEAOgBoDwsgACACNgIAIAQEQANAIAAgBkECdCIHaiABIAdqKAIEIgggAyAHaigCBCIHIAVqIgVrNgIEIAUgB0kgCCAFSWohBSAGQQFqIgYgBEcNAAsLAkAgAiAETQ0AIAAgBEECdCIDakEEaiIHIAEgA2pBBGoiAygCACIBIAVrNgIAIAIgBGsiBEECSQ0AIAEgBUkhBkEBIQEDQCAHIAFBAnQiBWpBfyADIAVqKAIAIgUgBmsgBSAGSSIFGzYCACAGQQAgBRshBiABQQFqIgEgBEcNAAsLAkADQCACIgFBAkgNASAAIAFBf2oiAkECdGooAgRFDQALIAAgATYCZA8LIABBATYCZCAAKAIERQRAIABBADoAaAsLzAwBCn8jAEHQAmsiBCQAAkACQCABLQBoIgYNAEEBIQIgASgCZEEBRw0AQQEhBQNAIAJFDQIgASACQX9qIgJBAnRqKAIEQQFGDQALCyAAKAJkIQICQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AaCIHBEAgAkEBRw0EQQEhAiAAKAIEDQQgBiAHRw0BDAMLIAIhAwJAAkAgAg4CBQABCwNAIANFDQEgACADQX9qIgNBAnRqKAIERQ0ACwsgBiAHRg0CIAJBAUcNAQtBASECIAAoAgQNACABKAJkQQFHDQAgB0UEQCABKAIEDQMLIABB5ABqIQcMBAsgB0UNAQwCC0EAAn8gASgCZCIDIAJGBEAgAiEDA0BBACADQQFIDQIaIAAgA0F/aiIDQQJ0IgVqKAIEIgggASAFaigCBCIFRg0AC0EBQX8gCCAFSxsMAQtBAUF/IAIgA0sbCyIDayADIAYbQQFIDQELIAQgASgCACIDNgLgASADBEAgBEHgAWpBBHIgAUEEaiADQQJ0EAMaCyABKAJkIQUgBCAGOgDIAiAEIAU2AsQCAkAgAiAFSQRAAkADQCACIgNBAkgNASAAIANBf2oiAkECdGooAgRFDQALIAAgAzYCZAwCC0EBIQMgAEEBNgJkIAAoAgQNASAAQQA6AGgMAQsgBUEZTwRAQQEhAyAAQQE2AmQgAEIBNwIAIABBADoAaAwBCyAAIAU2AgBBACACIAVrQQFqIABBBGoiAyADIAIgAUEEaiAFEB0gBSECAkADQCACIgNBAkgNASAAIANBf2oiAkECdGooAgRFDQALIAAgAzYCZAwBC0EBIQMgAEEBNgJkIAAoAgQNACAAQQA6AGgLIAAgBjoAaCAGIAdGBEAgAyECDAELIAAoAgRFIANBAUZxBEAgAyECDAELIAAgBEHgAWogBSAAIAMQUyAAKAJkIQILIABB5ABqIQdBASEDIAJBAUcNAQsgACgCBEUNBEEBIQMgAC0AaEUNAUEBIQIMAwsgAC0AaEUNAQwCCwNAIANFBEBBASEFDAYLQQEhAiAAIANBf2oiA0ECdGooAgRBAUYNAAsLQQAhAwsgBEEAOgBoIARBATYCZCAEQgE3AwAgBCAAKAIAIgU2AuABIAUEQCAEQeABakEEciAAQQRqIAVBAnQQAxoLIAQgAzoAyAIgBCACNgLEAiAEIAEoAgAiAjYCcCACBEAgBEHwAGpBBHIgAUEEaiACQQJ0EAMaCyAEIAEoAmQ2AtQBIAQgAS0AaDoA2AEgBCAEQeABaiAEQfAAahD7AyAELQBoDQAgBCgCZEEBRw0AQQEhAgNAIAJFDQIgBCACQX9qIgJBAnRqKAIEQQFGDQALC0EAIQUMAQsgBEEBNgLEAiAEQgE3A+ABIARBADoAyAIgAEEEaiEIIARB4AFqQQRyIQtBASEFA0ACQCAIKAIAIgZBAXEEQCABKAIEIQMMAQsgBygCACECQQAhCQNAAkACQAJAIAJB////P3FFDQAgAkEZTw0AIAAgAjYCAEEBIQMgAkECTwRAA0AgACADQQJ0aiIKIAZBAXYgCigCBCIGQR90cjYCACADQQFqIgMgAkcNAAsLIAJBAnQgAGogBkEBdjYCAAJAA0AgAiIDQQJIDQEgACADQX9qIgJBAnRqKAIERQ0ACyAHIAM2AgAgCCgCACEGIAMhAgwDC0EBIQIgB0EBNgIAIAgoAgAiBg0CDAELQQEhAiAAQQE2AmQgAEIBNwIAC0EAIQYgAEEAOgBoCyAJQQFqIQkgBkEBcUUNAAsgASgCBCEDIAlBAXFFDQACQCADQQdxQX1qDgMAAQABC0EAIAVrIQULAkAgAC0AaA0AQQEhAiAHKAIAQQFHDQADQCACRQ0DIAAgAkF/aiICQQJ0aigCBEEBRg0ACwsgBEHgAWogASAAEBogASAAKAIAIgk2AgBBACECIAkEQANAIAEgAkECdCIKaiAAIApqKAIENgIEIAJBAWoiAiAJRw0ACwsgASAAKAJkNgJkIAEgAC0AaDoAaCAAIAQoAuABIgI2AgAgAgRAIAggCyACQQJ0EAMaC0EAIAVrIAUgAyAGcUEDcUEDRhshBSAAIAQoAsQCNgJkIAAgBC0AyAI6AGgMAAsACyAEQdACaiQAIAULqwoCBH8JfiMAQcAFayICJAADQCADQQN0IgQgAkFAa2ogASAEaikAACIGQjiGIAZCKIZCgICAgICAwP8Ag4QgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcDACADQQFqIgNBEEcNAAtBECEBIAIpA0AhBgNAIAJBQGsgAUEDdGoiAyADQUhqKQMAIAYgA0GIf2opAwAiBkI/iSAGQjiJhSAGQgeIhXx8IANBcGopAwAiB0ItiSAHQgOJhSAHQgaIhXw3AwAgAUEBaiIBQdAARw0ACyACIAApA8gBIgg3AzggAiAAKQPAASIJNwMwIAIgACkDuAEiCjcDKCACIAApA7ABIgY3AyAgAiAAKQOoASILNwMYIAIgACkDoAEiDDcDECACIAApA5gBIg03AwggAiAAKQOQASIHNwMAIAAoAtABIQNBACEBA0AgAyABQQN0IgRqKQMAIAggBkIyiSAGQi6JhSAGQheJhXwgCSAKhSAGgyAJhXx8IAJBQGsgBGopAwB8Ig4gB0IkiSAHQh6JhSAHQhmJhXwgByANhCAMgyAHIA2DhHwiCCAHhCANgyAHIAiDhCAIQiSJIAhCHomFIAhCGYmFfCADIARBCHIiBWopAwAgCyAOfCILIAYgCoWDIAqFIAl8fCALQjKJIAtCLomFIAtCF4mFfCACQUBrIAVqKQMAfCIOfCIJIAiEIAeDIAggCYOEIAlCJIkgCUIeiYUgCUIZiYV8IAMgBEEQciIFaikDACAKfCACQUBrIAVqKQMAfCAMIA58IgwgBiALhYMgBoV8IAxCMokgDEIuiYUgDEIXiYV8Ig58IgogCYQgCIMgCSAKg4QgCkIkiSAKQh6JhSAKQhmJhXwgAyAEQRhyIgVqKQMAIAZ8IAJBQGsgBWopAwB8IA0gDnwiDSALIAyFgyALhXwgDUIyiSANQi6JhSANQheJhXwiDnwiBiAKhCAJgyAGIAqDhCAGQiSJIAZCHomFIAZCGYmFfCADIARBIHIiBWopAwAgC3wgAkFAayAFaikDAHwgByAOfCIHIAwgDYWDIAyFfCAHQjKJIAdCLomFIAdCF4mFfCIOfCILIAaEIAqDIAYgC4OEIAtCJIkgC0IeiYUgC0IZiYV8IAMgBEEociIFaikDACAMfCACQUBrIAVqKQMAfCAIIA58IgggByANhYMgDYV8IAhCMokgCEIuiYUgCEIXiYV8Ig58IgwgC4QgBoMgCyAMg4QgDEIkiSAMQh6JhSAMQhmJhXwgAyAEQTByIgVqKQMAIA18IAJBQGsgBWopAwB8IAkgDnwiCSAHIAiFgyAHhXwgCUIyiSAJQi6JhSAJQheJhXwiDnwiDSAMhCALgyAMIA2DhCANQiSJIA1CHomFIA1CGYmFfCADIARBOHIiBGopAwAgB3wgAkFAayAEaikDAHwgCiAOfCIKIAggCYWDIAiFfCAKQjKJIApCLomFIApCF4mFfCIOfCEHIAYgDnwhBiABQcgASSEEIAFBCGohASAEDQALIAAgACkDAEKAAXw3AwAgACAAKQOQASAHfDcDkAEgACAAKQOYASANfDcDmAEgACAAKQOgASAMfDcDoAEgACAAKQOoASALfDcDqAEgACAAKQOwASAGfDcDsAEgACAAKQO4ASAKfDcDuAEgACAAKQPAASAJfDcDwAEgACAAKQPIASAIfDcDyAEgAkHABWokAAvXBAEEfyMAQcABayIGJAAgACABRgRAIAYgAEGU1gEoAgARAgAgBiEBCyAAQfTTAUGU1gEoAgARAgBBiNYBKAIAGgJAA0AgAyIFRQ0BIAIgBUF/aiIDQQJ0aiIHKAIARQ0ACwJAIAVBAUcNAAJAAkACQAJAIAIoAgBBf2oOBAABAgMECyAAIAFBlNYBKAIAEQIADAQLIAAgAUGExwFBrNYBKAIAEQEADAMLIAAgAUGExwFBrNYBKAIAEQEAIAAgACABQYTHAUGo1gEoAgARAAAMAgsgACABQYTHAUGs1gEoAgARAQAgACAAQYTHAUGs1gEoAgARAQAMAQsgBkFAayABQZTWASgCABECACAGQeAAaiIFIAZBQGtBlNYBKAIAEQIAIAZBgAFqIgggBUGExwFBrNYBKAIAEQEAIAZBoAFqIAggAUGExwFBqNYBKAIAEQAAAkAgBygCACIHZ0EfcyIFQQFxBEAgACAGQUBrIAcgBUF/aiIFdkEDcUEFdGpBlNYBKAIAEQIADAELIAAgAUGU1gEoAgARAgALIANBAE4EQCADIQEDQCAFQQFKBEAgAiABQQJ0aigCACEHA0AgACAAQYTHAUGs1gEoAgARAQAgACAAQYTHAUGs1gEoAgARAQAgByAFQX5qIgN2QQNxIggEQCAAIAAgBkFAayAIQQV0akGExwFBqNYBKAIAEQAACyAFQQNKIQggAyEFIAgNAAsLIAFBAEohA0EgIQUgAUF/aiEBIAMNAAsLCyAEBEAgACAAQYDHAUG01gEoAgARAQALIAZBwAFqJAAL7gQBA38jAEGACWsiBCQAIARBgAZqIAEgAkGIxQEoAgARAQAgBEHABGogAUHAAWoiBSADQYjFASgCABEBACAEQYADaiABQeAAaiIGIANBiMUBKAIAEQEAIARBwAFqIAUgAkGIxQEoAgARAQAgBEGgCGogASAGQZi2AUG0xQEoAgARAAAgBEHQCGogAUEwaiABQZABakGYtgFBtMUBKAIAEQAAIARBwAdqIAIgA0GYtgFBtMUBKAIAEQAAIARB8AdqIAJBMGogA0EwakGYtgFBtMUBKAIAEQAAIAQgBEGgCGogBEHAB2pBiMUBKAIAEQEAIAQgBCAEQYAGakGYtgFB6MUBKAIAEQAAIARB4ABqIgEgASAEQeAGaiICQZi2AUHoxQEoAgARAAAgBCAEIARBgANqQZi2AUHoxQEoAgARAAAgASABIARB4ANqIgNBmLYBQejFASgCABEAACAAQeAAaiAEQZi2AUHsxQEoAgARAQAgAEGQAWogAUGYtgFB7MUBKAIAEQEAIARBwARqIARBwARqQZDFASgCABECACAEQYAGaiAEQYAGaiAEQcAEakGYtgFB5MUBKAIAEQAAIAIgAiAEQaAFakGYtgFB5MUBKAIAEQAAIAAgBEGABmpBmLYBQezFASgCABEBACAAQTBqIAJBmLYBQezFASgCABEBACAEQYADaiAEQYADaiAEQcABakGYtgFB5MUBKAIAEQAAIAMgAyAEQaACakGYtgFB5MUBKAIAEQAAIABBwAFqIARBgANqQZi2AUHsxQEoAgARAQAgAEHwAWogA0GYtgFB7MUBKAIAEQEAIARBgAlqJAALxwYBAn8jAEEwayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg4NAAECAwQFBgcICQoLDA4LIABBpMUBKAIAEQMADAwLIAAgAUGoxQEoAgARAgAMCwsgACABIAFBmLYBQbTFASgCABEAAAwKCyADIAEgAUGYtgFBtMUBKAIAEQAAIAAgAyABQZi2AUG0xQEoAgARAAAMCQsgACABIAFBmLYBQbTFASgCABEAACAAIAAgAEGYtgFBtMUBKAIAEQAADAgLIAMgASABQZi2AUG0xQEoAgARAAAgAyADIANBmLYBQbTFASgCABEAACAAIAMgAUGYtgFBtMUBKAIAEQAADAcLIAMgASABQZi2AUG0xQEoAgARAAAgAyADIAFBmLYBQbTFASgCABEAACAAIAMgA0GYtgFBtMUBKAIAEQAADAYLIAMgASABQZi2AUG0xQEoAgARAAAgAyADIANBmLYBQbTFASgCABEAACADIAMgA0GYtgFBtMUBKAIAEQAAIAAgAyABQZi2AUG4xQEoAgARAAAMBQsgACABIAFBmLYBQbTFASgCABEAACAAIAAgAEGYtgFBtMUBKAIAEQAAIAAgACAAQZi2AUG0xQEoAgARAAAMBAsgAyABIAFBmLYBQbTFASgCABEAACADIAMgA0GYtgFBtMUBKAIA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4ABqIANB4ABqIANBMGpBmLYBQbzFASgCABEAAEHEggEgA0HgAGpBqMUBKAIAEQIACyADQZABaiQAC7AJAQR/IwBBsAJrIgQkAEHMsAEoAgAhBSAEQcgBaiADQZi2AUHAxQEoAgARAQAgBEGYAWogBEHIAWogBRBYRQRAIARBmAFqIARByAFqIAVBmLYBQczFASgCABEAAAsgBEHoAGogBEGYAWpBmLYBQcDFASgCABEBACABIARB6ABqIARBmAFqQZi2AUG0xQEoAgARAAACQCABQaDFASgCABEEAARAIAFB0JkBIAUQWEUEQCABQdCZASAFQZi2AUHMxQEoAgARAAALIABBgJoBQajFASgCABECAAwBCyAAIAFBiMMBQZi2AUG0xQEoAgARAAAgACAAQYCaAUGYtgFBvMUBKAIAEQAAIAEgAUHQmQFBmLYBQbzFASgCABEAACABIAFBmLYBQbDFASgCABEBAAsgBEHoAGogAUGYtgFBwMUBKAIAEQEAIARBOGogBEHoAGogAUGYtgFBvMUBKAIAEQAAIARB6ABqIARB6ABqQdCZAUGYtgFBvMUBKAIAEQAAIARBCGogAEGYtgFBwMUBKAIAEQEAIARBCGogBEEIaiAEQegAakGYtgFBtMUBKAIAEQAAIARBCGogBEEIaiAAQZi2AUG8xQEoAgARAAAgBEHoAGogBEE4akGAmgFBmLYBQbzFASgCABEAACAEQQhqIARBCGogBEHoAGpBmLYBQbTFASgCABEAACACIARBOGpBmLYBQcDFASgCABEBACAEQegAaiAEQQhqIARBOGpBmLYBQbzFASgCABEAACACIAIgBEHoAGpBmLYBQbzFASgCABEAACAEQZjFASgCACIBNgL8AQJAQZXGAS0AAARAIARBgAJqIgVBsJoBQbjDAUGYtgFBvMUBKAIAEQAAIAQoAvwBIQEMAQtBsJoBIQULIAQgBTYC+AECQAJAIAFBAkkNAEGoggIoAgAiBkUNACACIAIgBSABQQBBACAGEQgADAELIAIgAiAFIAFBABBPCyACIAIgBEHoAGpBmLYBQbzFASgCABEAACAEQegAaiACQZi2AUHAxQEoAgARAQAgBEHoAGogBEHoAGogBEE4akGYtgFBvMUBKAIAEQAAQQAhBQJAQZjFASgCACIBRQ0AIAQoAmggBCgCCEYEQEEB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AQAgCCAIQZi2AUGwxQEoAgARAQAgBCAEQZi2AUGwxQEoAgARAQAgBSAFQZi2AUGwxQEoAgARAQAgBiAGQZi2AUGwxQEoAgARAQAgACAAQZi2AUGwxQEoAgARAQAgAkHgD2okAAvcCwEFfyMAQYAGayICJAAgAkEBNgJkIAJCATcDACACQQA6AGggAkH0ggFBAUEBEBggAigCZCEDAkACQAJAAn8gAi0AaARAIANBAUcgAigCBEEAR3IMAQsgA0EBRg0BIANFCyEFIANFDQELIAJBBHIhBgJAAkADQCADIgRFDQEgAiAEQX9qIgNBAnRqKAIERQ0ACyAEQQFLDQELQQEhBCACQaACaiABIAIoAgQgBRBQDQILIAJBoAJqIAEgBiAEIAUQRwwBCyACQaACakGkxQEoAgARAwAgAkHQAmpBpMUBKAIAEQMAIAJBgANqQaTFASgCABEDACACQbADakGkxQEoAgARAwAgAkHgA2pBpMUBKAIAEQMAIAJBkARqQaTFASgCABEDAAtB2IMBKAIAIQMCQAJAAkACf0HcgwEtAAAEQCADQQFHQfiCASgCAEEAR3IMAQtBACEFIANBAUYNASADRQshBSADRQ0BCwJAAkADQCADIgRFDQEgBEF/aiIDQQJ0QZSCAWooAmRFDQALIARBAUsNAQtBASEEIAIgAkGgAmpB+IIBKAIAIAUQUA0CCyACIAJBoAJqQfiCASAEIAUQRwwBCyACQaTFASgCABEDACACQTBqQaTFASgCABEDACACQeAAakGkxQEoAgARAwAgAkGQAWpBpMUBKAIAEQMAIAJBwAFqQaTFASgCABEDACACQfABakGkxQEoAgARAwALIAIgAiABEDwCQEG0twEoAgBBAUYNACACQdACaiIDIANBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACACQbADaiIDIANBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACACQZAEaiIDIANBmLYBQbDFASgCABEBAAsgAkHABGogAkGgAmpB0LABQYjFASgCABEBACACQaACaiACQcAEakGYtgFB7MUBKAIAEQEAIAJB0AJqIAJBoAVqIgNBmLYBQezFASgCABEBACACQcAEaiACQYADaiIEQbCxAUGIxQEoAgARAQAgBCACQcAEakGYtgFB7MUBKAIAEQEAIAJBsANq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KAIAEQEAIAJBoA5qIAQgAkHAB2pBiMUBKAIAEQEAIAQgAkGgDmpBmLYBQezFASgCABEBACAAQZABaiABQZi2AUHsxQEoAgARAQAgAEHAAWogAkGACWpBqMUBKAIAEQIAIABB8AFqIAJBsAlqQajFASgCABECAAwCCyAKQQFqIgpBBEcNAAsgAkGgDmogAkGADGogAkHgCWpBiMUBKAIAEQEAIAJBoAJqIAJBoA5qQZi2AUHsxQEoAgARAQAgAkHQAmogAkGAD2oiBUGYtgFB7MUBKAIAEQEAIAJBwAFqIAJBgAlqQajFASgCABECACACQfABaiILIAJBsAlqQajFASgCABECACACQaAOaiACQcAKaiACQYAMakGIxQEoAgARAQAgAkHgAGogAkGgDmpBmLYBQezFASgCABEBACACQZABaiIDIAVBmLYBQezFASgCABEBACACQaAOaiACQeAAaiACQYAGakGIxQEoAgARAQAgAkHgAGogAkGgDmpBmLYBQezFASgCABEBACADIAVBmLYBQezFASgCABEBACACIAJB4AZqQajFASgCABECACACQTBqIAlBqMUBKAIAEQIAIAJBoA5qIAJBgANqIAJB4AxqQYjFASgCABEBACACQYADaiACQaAOakGYtgFB7MUBKAIAEQEAIA0gBUGYtgFB7MUBKAIAEQEAIAJBoA5qIAJBgANqIAFBiMUBKAIAEQEAIAJBgANqIAJBoA5qQZi2AUHsxQEoAgARAQAgDSAFQZi2AUHsxQEoAgARAQBBACEKA0AgAkGgDmogAkGAA2ogCkHgAGxBsIsBakGIxQEoAgARAQAgBCACQaAOakGYtgFB7MUBKAIAEQEAIAYgBUGYtgFB7MUBKAIAEQEAIAJBoA5qIAZBmLYBQcTFASgCABEBACACQaAOaiACQaAOaiAEQZi2AUG8xQEoAgARAAAgAkHwDWogBCAGQZi2AUG0xQEoAgARAAAgAkHADWogBCAGQZi2AUG4xQEoAgARAAAgAkGgBWogAkHwDWogAkHADWpBmLYBQbzFASgCABEAACAHIAJBoA5qQajFASgCABECACACQaAOaiACQaAFaiACQYjFASgCABEBACACQaAFaiACQaAOakGYtgFB7MUBKAIAEQEAIAcgBUGYtgFB7MUBKAIAEQEAAkACQEGYxQEoAgAiCEUNAEEB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AUG4xQEoAgARAAAgAiACIANBmLYBQbjFASgCABEAACABQfABaiAAKAIIIAAoAhRBiMUBKAIAEQEAIAEgAUHwAWpBmLYBQezFASgCABEBACADIAVBmLYBQezFASgCABEBACABQeAAaiABQeAAaiABQZi2AUG0xQEoAgARAAAgAiACIANBmLYBQbTFASgCABEAACAEIAFB4ABqQYjGASgCABECACAEIARBiMMBQZi2AUG0xQEoAgARAAAgAUGwA2okAAuCBwEEfyMAQaACayIDJAACQAJAIAAoAggiBEGgxQEoAgARBABFDQAgBEEwakGgxQEoAgARBABFDQAgASAAKAIQIgRBmLYBQcTFASgCABEBACABQTBqIgUgBEEwakGYtgFBxMUBKAIAEQEAIAMgASAAKAIUQYjFASgCABEBACABIANBmLYBQezFASgCABEBACAFIANB4ABqQZi2AUHsxQEoAgARAQAgAiAAKAIMIgBBqMUBKAIAEQIADAELIAMgACgCFCIEQTBqIgVBmLYBQcTFASgCABEBACADIAMgBEGYtgFBvMUBKAIAEQAAIANB8AFqIAQgBUGYtgFBtMUBKAIAEQAAIANBwAFqIAQgBUGYtgFBuMUBKAIAEQAAIAEgA0HwAWogA0HAAWpBmLYBQbzFASgCABEAACABQTBqIgUgA0GoxQEoAgARAgAgAiABQYjGASgCABECACADIAAoAhAiBEEwaiIGQZi2AUHExQEoAgARAQAgAyADIARBmLYBQbzFASgCABEAACADQfABaiAEIAZBmLYBQbTFASgCABEAACADQcABaiAEIAZBmLYBQbjFASgCABEAACABIANB8AFqIANBwAFqQZi2AUG8xQEoAgARAAAgBSADQajFASgCABECACADIAEgACgCDCIGQZi2AUG4xQEoAgARAAAgA0EwaiIEIAUgBkEwakGYtgFBuMUBKAIAEQAAIAMgA0GYtgFBxMUBKAIAEQEAIAQgBEGYtgFBxMUBKAIAEQEAIAMgAyABQZi2AUG0xQEoAgARAAAgBCAEIAVBmLYBQbTFASgCABEAACABIAIgA0GYtgFBtMUBKAIAEQAAIAUgAkEwaiAEQZi2AUG0xQEoAgARAAAgASgCACEEIAEgAUGsxQEoAgARAgAgBEEBcQRAIAEgAUHYwgFB8MUBKAIAEQUAGgsgASgC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A3BBlcYBLQAABEAgA0HwAGogA0HwAGpB6MMBQZi2AUG8xQEoAgARAAALQfjgASADQfAAakGUtgFByMUBKAIAEQEAQciBAkEANgIAQcyBAkEAOgAAIABBAToAAAsgA0HgAWokAAviAwEDfyMAQfABayICJAAgAUHgAGoiA0GgxQEoAgARBABFBEAgAyADQZS2AUHIxQEoAgARAQAgAkHAAWogA0GYtgFBwMUBKAIAEQEAIAEgASACQcABakGYtgFBvMUBKAIAEQAAIAFBMGoiBCAEIAJBwAFqQZi2AUG8xQEoAgARAAAgBCAEIANBmLYBQbzFASgCABEAACADQYjDAUGoxQEoAgARAgALIAJBkAFqIAEQ8AEgAkHAAWogAkGQAWpBqMUBKAIAEQIAIAJB4ABqIAEQ7wEgAkGQAWogAkHgAGpBqMUBKAIAEQIAIAJBMGogAUHgowEQfSACQeAAaiACQTBqQajFASgCABECACACIAFB4KkBEH0gAkEwaiACQajFASgCABECACAAQeAAaiIDIAJBkAFqIAJBMGpBmLYBQbzFASgCABEAACAAIAJBwAFqIAJBMGpBmLYBQbzFASgCABEAACAAIAAgA0GYtgFBvMUBKAIAEQAAIABBMGoiACABQTBqIAJB4ABqQZi2AUG8xQEoAgARAAAgACAAIAJBkAFqQZi2AUG8xQEoAgARAAAgAkGQAWogA0GYtgFBwMUBKAIAEQEAIAAgACACQZABakGYtgFBvMUBKAIAEQAAIAJB8AFqJAALgAEBAX4gAUEBRgRAIABBiMMBQajFASgCABECAA8LIABBpMUBKAIAEQMAAkAgAUUNACAAIAGsIgIgAkI/hyICfCAChTcCACABQX9MBEAgACAAQZi2AUGwxQEoAgARAQALQZXGAS0AAEUNACAAIABB6MMBQZi2AUG8xQEoAgARAAALC7wMAQ9/IwBBoAtrIgMkACADQZAKaiABQajFASgCABECACADQcAKaiIEIAFBMGpBqMUBKAIAEQIAIANB8ApqIAFB4ABqQajFASgCABECACADQZAKahAwIAMgA0GQCmpBmLYBQcTFASgCABEBACADQYAJaiADIANBkApqQZi2AUG0xQEoAgARAAAgA0GwCWoiBiAEQZi2AUGwxQEoAgARAQAgA0HgBmogAkGoxQEoAgARAgAgA0GQB2oiDSACQTBqQajFASgCABECACADQaAIaiIOIAJBwAFqIANBgAlqQZi2AUG8xQEoAgARAAAgA0HQCGoiDyACQfABaiADQYAJakGYtgFBvMUBKAIAEQAAIANBwAdqIhAgAkHgAGogBkGYtgFBvMUBKAIAEQAAIANB8AdqIhEgAkGQAWogBkGYtgFBvMUBKAIAEQAAIANBwARqIAJBoAJqQajFASgCABECACADQfAEaiIHIAJB0AJqQajFASgCABECACADQYAGaiIIIAJB4ANqIANBkApqQZi2AUG8xQEoAgARAAAgA0GwBmoiCSACQZAEaiADQZAKakGYtgFBvMUBKAIAEQAAIANBoAVqIgogAkGAA2ogBEGYtgFBvMUBKAIAEQAAIANB0AVqIgsgAkGwA2ogBEGYtgFBvMUBKAIAEQAAIAAgA0HgBmoQIAJAQdj+AC0AAARAIAAgA0HABGoQHAwBCyAAIANBwARqEBsLQQIhDAJAQfSzASgCAEECTQRAQQIhBQwBC0ECIQUDQCADQcAEaiACIAVBoAJsaiIBQajFASgCABECACAHIAFBMGpBqMUBKAIAEQIAIAggAUHAAWogA0GACWpBmLYBQbzFASgCABEAACAJIAFB8AFqIANBgAlqQZi2AUG8xQEoAgARAAAgCiABQeAAaiAGQZi2AUG8xQEoAgARAAAgCyABQZABaiAGQZi2AUG8xQEoAgARAAAgACAAECUCQEHY/gAtAAAEQCAAIANBwARqEBwMAQsgACADQcAEahAbCyAFQQFqIQECQCAMQfSyAWotAABFBEAgASEFDAELIANBwARqIAIgAUGgAmxqIgFBqMUBKAIAEQIAIAcgAUEwakGoxQEoAgARAgAgCCABQcABaiADQZAKakGYtgFBvMUBKAIAEQAAIAkgAUHwAWogA0GQCmpBmLYBQbzFASgCABEAACAKIAFB4ABqIARBmLYBQbzFASgCABEAACALIAFBkAFqIARBmLYBQbzFASgCABEAACAFQQJqIQVB2P4ALQAABEAgACADQcAEahAcDAELIAAgA0HABGoQGwsgDEEBaiIMQfSzASgCAEkNAAsLQcT/ACgCACEBAkACQEHI/wAtAAAEQCABQQFHDQFB5P4AKAIARQ0CDAELAkAgAQ4CAQACCwNAIAFFDQIgAUF/aiIBQQJ0QeT+AGooAgBFDQALDAELIABBoAJqIgEgAUGYtgFBsMUBKAIAEQEAIABB0AJqIgEgAUGYtgFBsMUBKAIAEQEAIABBgANqIgEgAUGYtgFBsMUBKAIAEQEAIABBsANqIgEgAUGYtgFBsMUBKAIAEQEAIABB4ANqIgEgAUGYtgFBsMUBKAIAEQEAIABBkARqIgEgAUGYtgFBsMUBKAIAEQEAC0G5gAEtAABFBEAgA0HgBmogAiAFQaACbGoiAUGoxQEoAgARAgAgDSABQTBqQajFASgCABECACAOIAFBwAFqIANBkApqQZi2AUG8xQEoAgARAAAgDyABQfABaiADQZAKakGYtgFBvMUBKAIAEQAAIBAgAUHgAGogBEGYtgFBvMUBKAIAEQAAIBEgAUGQAWogBEGYtgFBvMUBKAIAEQAAIANBwARqIAFBoAJqQajFASgCABECACAHIAFB0AJqQajFASgCABECACAIIAFB4ANqIANBkApqQZi2AUG8xQEoAgARAAAgCSABQZAEaiADQZAKakGYtgFBvMUBKAIAEQAAIAogAUGAA2ogBEGYtgFBvMUBKAIAEQAAIAsgAUGwA2ogBEGYtgFBvMUBKAIAEQAAIAMgA0HgBmoQIAJAQdj+AC0AAARAIAMgA0HABGoQHAwBCyADIANBwARqEBsLIAAgACADEAcLIANBoAtqJAALlxsBEX8jAEHAnQFrIgUkACADBEADQAJAIAEgBkGQAWxqIgxB4ABqIgpBoMUBKAIAEQQADQAgAiAGQaACbGoiCEHAAWoiC0GgxQEoAgARBAAEQCAIQfABakGgxQEoAgARBAANAQsgBUHAiwFqIAlBkAFsaiIHIAxBqMUBKAIAEQIAIAdBMGogDEEwakGoxQEoAgARAgAgB0HgAGogCkGoxQEoAgARAgAgBxAwIAVBwOcAaiAJQaACbGoiByAIQajFASgCABECACAHQTBqIAhBMGpBqMUBKAIAEQIAIAdB4ABqIAhB4ABqQajFASgCABECACAHQZABaiAIQZABakGoxQEoAgARAgAgB0HAAWogC0GoxQEoAgARAgAgB0HwAWogCEHwAWpBqMUBKAIAEQIAAkACQAJAQZiCAigCAA4CAAECCyAHEEYMAQsgBxBFCyAJQQFqIQkLIAZBAWoiBiADRw0ACwsgCSADIAkbIQECQCAJDQAgBEUNACAFQYA/akGIwwFBqMUBKAIAEQIAIAVBsD9qIgFBpMUBKAIAEQMAIAVB4D9qIgJBpMUBKAIAEQMAIAVBkMAAaiIGQaTFASgCABEDACAFQcDAAGoiB0GkxQEoAgARAwAgBUHwwABqIghBpMUBKAIAEQMAIAVBoMEAaiIMQaTFASgCABEDACAFQdDBAGoiCkGkxQEoAgARAwAgBUGAwgBqIgtBpMUBKAIAEQMAIAVBsMIAaiIPQaTFASgCABEDACAFQeDCAGoiDUGkxQEoAgARAwAgBUGQwwBqIhBBpMUBKAIAEQMAIAAgBUGAP2pBqMUBKAIAEQIAIABBMGogAUGoxQEoAgARAgAgAEHgAGogAkGoxQEoAgARAgAgAEGQAWogBkGoxQEoAgARAgAgAEHAAWogB0GoxQEoAgARAgAgAEHwAWogCEGoxQEoAgARAgAgAEGgAmogDEGoxQEoAgARAgAgAEHQAmogCkGoxQEoAgARAgAgAEGAA2ogC0GoxQEoAgARAgAgAEGwA2ogD0GoxQEoAgARAgAgAEHgA2ogDUGoxQEoAgARAgAgAEGQBGogEEGoxQEoAgARAgAgAyEBCwJAIAlFDQAgACAFQYDjAGogBBshAyABBEAgBUGwBmohDCAFQYAGaiEKIAVB0AVqIQsgBUGgBWohDyAFQdAIaiENIAVBoAhqIRAgBUHwB2ohEiAFQcAHaiETQQAhCQNAIAlBoAJsIgIgBUGAP2pqIgYgBUHA5wBqIAJqIgdBqMUBKAIAEQIAIAZBMGogB0EwaiIOQajFASgCABECACAGQeAAaiAHQeAAaiIUQajFASgCABECACAGQZABaiAHQZABaiIVQajFASgCABECACAGQcABaiAHQcABaiIIQajFASgCABECACAGQfABaiAHQfABaiIRQajFASgCABECAAJAQfyzAS0AAEUNACAFQYAbaiACaiECAkAgCEGgxQEoAgARBABFDQAgEUGgxQEoAgARBABFDQAgAkGkxQEoAgARAwAgAkEwakGkxQEoAgARAwAgAkHgAGpBpMUBKAIAEQMAIAJBkAFqQaTFASgCABEDACACQcABakGkxQEoAgARAwAgAkHwAWpBpMUBKAIAEQMADAELIAIgB0GoxQEoAgARAgAgAkEwaiAOQajFASgCABECACACQeAAaiAUQZi2AUGwxQEoAgARAQAgAkGQAWogFUGYtgFBsMUBKAIAEQEAIAJBwAFqIAhBqMUBKAIAEQIAIAJB8AFqIBFBqMUBKAIAEQIACyAFIAlBkAFsIgggBUHAiwFqaiICQZi2AUHExQEoAgARAQAgBUGACWogCGoiCCAFIAJBmLYBQbTFASgCABEAACAIQTBqIhEgAkEwaiIOQZi2AUGwxQEoAgARAQAgBUHgBmogBhA2IBMgEyARQZi2AUG8xQEoAgARAAAgEiASIBFBmLYBQbzFASgCABEAACAQIBAgCEGYtgFBvMUBKAIAEQAAIA0gDSAIQZi2AUG8xQEoAgARAAAgBUHABGogBiAHECEgDyAPIA5BmLYBQbzFASgCABEAACALIAsgDkGYtgFBvMUBKAIAEQAAIAogCiACQZi2AUG8xQEoAgARAAAgDCAMIAJBmLYBQbzFASgCABEAAAJAIAlFBEAgAyAFQeAGahAgQdj+AC0AAARAIAMgBUHABGoQHAwCCyADIAVBwARqEBsMAQsgBSAFQeAGahAgAkBB2P4ALQAABEAgBSAFQcAEahAcDAELIAUgBUHABGoQGwsgAyADIAUQBwsgCUEBaiIJIAFHDQALC0H0swEoAgBBA08EQCAFQbAGaiECIAVBgAZqIQkgBUHQBWohByAFQaAFaiEIQQIhDANAIAMgAxAlIAEEQEEAIQYDQCAFQcAEaiAGQaACbCIKIAVBgD9qaiILEDYgCCAIIAZBkAFsIg8gBUGACWpqIg1BMGoiEEGYtgFBvMUBKAIAEQAAIAcgByAQQZi2AUG8xQEoAgARAAAgCSAJIA1BmLYBQbzFASgCABEAACACIAIgDUGYtgFBvMUBKAIAEQAAAkBB2P4ALQAABEAgAyAFQcAEahAcDAELIAMgBUHABGoQGwsCQCAMQfSyAWosAAAiDUUNAAJAIA1BAU4EQCAFQcAEaiALIAVBwOcAaiAKahAhDAELIAVBwARqIAsgBUGAG2ogCmoQIQsgCCAIIAVBwIsBaiAPaiIKQTBqIgtBmLYBQbzFASgCABEAACAHIAcgC0GYtgFBvMUBKAIAEQAAIAkgCSAKQZi2AUG8xQEoAgARAAAgAiACIApBmLYBQbzFASgCABEAAEHY/gAtAAAEQCADIAVBwARqEBwMAQsgAyAFQcAEahAbCyAGQQFqIgYgAUcNAAsLIAxBAWoiDEH0swEoAgBJDQALC0HE/wAoAgAhBgJAAkBByP8ALQAABEAgBkEBRw0BQeT+ACgCAEUNAgwBCwJAIAYOAgEAAgsDQCAGRQ0CIAZBf2oiBkECdEHk/gBqKAIARQ0ACwwBCyAAQaACaiAFQaDlAGogBBsiAiACQZi2AUGwxQEoAgARAQAgAEHQAmogBUHQ5QBqIAQbIgIgAkGYtgFBsMUBKAIAEQEAIABBgANqIAVBgOYAaiAEGyICIAJBmLYBQbDFASgCABEBACAAQbADaiAFQbDmAGogBBsiAiACQZi2AUGwxQEoAgARAQAgAEHgA2ogBUHg5gBqIAQbIgIgAkGYtgFBsMUBKAIAEQEAIABBkARqIAVBkOcAaiAEGyICIAJBmLYBQbDFASgCABEBAAsCQEG5gAEtAAANACABRQ0AIAVBsAZqIQwgBUGABmohCiAFQdAFaiELIAVBoAVqIQ8gBUHQCGohDSAFQaAIaiEQIAVB8AdqIRIgBUHAB2ohE0EAIQkDQEHE/wAoAgAhBgJAAkBByP8ALQAABEAgBkEBRw0BQeT+ACgCAEUNAgwBCwJAIAYOAgEAAgsDQCAGRQ0CIAZBf2oiBkECdEHk/gBqKAIARQ0ACwwBCwJAIAVBgD9qIAlBoAJsaiICQcABaiIGQaDFASgCABEEAEUNACACQfABaiIHQaDFASgCABEEAEUNACACQaTFASgCABEDACACQTBqQaTFASgCABEDACACQeAAakGkxQEoAgARAwAgAkGQAWpBpMUBKAIAEQMAIAZBpMUBKAIAEQMAIAdBpMUBKAIAEQMADAELIAIgAkGoxQEoAgARAgAgAkEwaiIHIAdBqMUBKAIAEQIAIAJB4ABqIgcgB0GYtgFBsMUBKAIAEQEAIAJBkAFqIgcgB0GYtgFBsMUBKAIAEQEAIAYgBkGoxQEoAgARAgAgAkHwAWoiAiACQajFASgCABECAAsgCUGgAmwiBiAFQcDnAGpqIgIgAhAFIAVB4AZqIAVBgD9qIAZqIhEgAhAhIBMgEyAFQcCLAWogCUGQAWxqIgZBMGoiB0GYtgFBvMUBKAIAEQAAIBIgEiAHQZi2AUG8xQEoAgARAAAgECAQIAZBmLYBQbzFASgCABEAACANIA0gBkGYtgFBvMUBKAIAEQAAIAIgAhAFAkACQCACQcABaiIIQaDFASgCABEEAEUNACACQfABaiIOQaDFASgCABEEAEUNACACQaTFASgCABEDACACQTBqQaTFASgCABEDACACQeAAakGkxQEoAgARAwAgAkGQAWpBpMUBKAIAEQMAIAhBpMUBKAIAEQMAIA5BpMUBKAIAEQMADAELIAIgAkGoxQEoAgARAgAgAkEwaiIOIA5BqMUBKAIAEQIAIAJB4ABqIg4gDkGYtgFBsMUBKAIAEQEAIAJBkAFqIg4gDkGYtgFBsMUBKAIAEQEAIAggCEGoxQEoAgARAgAgAkHwAWoiCCAIQajFASgCABECAAsgBUHABGogESACECEgDyAPIAdBmLYBQbzFASgCABEAACALIAsgB0GYtgFBvMUBKAIAEQAAIAogCiAGQZi2AUG8xQEoAgARAAAgDCAMIAZBmLYBQbzFASgCABEAACAFIAVB4AZqECACQEHY/gAtAAAEQCAFIAVBwARqEBwMAQsgBSAFQcAEahAbCyADIAMgBRAHIAlBAWoiCSABRw0ACwsgBA0AIAAgACADEAcLIAVBwJ0BaiQAC/4EAQF/IwBBwARrIgIkAAJAAkAgAUGgxQEoAgARBABFDQAgAUEwakGgxQEoAgARBABFDQAgAUHgAGpBoMUBKAIAEQQARQ0AIAFBkAFqQaDFASgCABEEAEUNACABQcABakGgxQEoAgARBABFDQAgAUHwAWpBoMUBKAIAEQQARQ0AIAFBoAJqQaDFASgCABEEAEUNACABQdACakGgxQEoAgARBABFDQAgAUGAA2pBoMUBKAIAEQQARQ0AIAFBsANqQaDFASgCABEEAEUNACABQeADakGgxQEoAgARBABFDQAgAUGQBGpBoMUBKAIAEQQARQ0AIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDACAAQZABakGkxQEoAgARAwAgAEHAAWpBpMUBKAIAEQMAIABB8AFqQaTFASgCABEDACAAQaACakGkxQEoAgARAwAgAEHQAmpBpMUBKAIAEQMAIABBgANqQaTFASgCABEDACAAQbADakGkxQEoAgARAwAgAEHgA2pBpMUBKAIAEQMAIABBkARqQaTFASgCABEDAAwBCyACIAEQZiACIAIgARAHIAAgAhBnIAJBoAJqIgEgAUGYtgFBsMUBKAIAEQEAIAJB0AJqIgEgAUGYtgFBsMUBKAIAEQEAIAJBgANqIgEgAUGYtgFBsMUBKAIAEQEAIAJBsANqIgEgAUGYtgFBsMUBKAIAEQEAIAJB4ANqIgEgAUGYtgFBsMUBKAIAEQEAIAJBkARqIgEgAUGYtgFBsMUBKAIAEQEAIAAgACACEAdBuYABLQAABEAgACAAENQCDAELIAAgABDTAgsgAkHABGokAAumGgEVfyMAQYASayIDJAAgA0HwEGogAUGoxQEoAgARAgAgA0GgEWoiBSABQTBqQajFASgCABECACADQdARaiABQeAAakGoxQEoAgARAgAgA0HQDmogAkGoxQEoAgARAgAgA0GAD2oiBiACQTBqQajFASgCABECACADQbAPaiIHIAJB4ABqQajFASgCABECACADQeAPaiILIAJBkAFqQajFASgCABECACADQZAQaiIMIAJBwAFqQajFASgCABECACADQcAQaiIEIAJB8AFqQajFASgCABECACADQfAQahAwAkACQAJAQZiCAigCAA4CAAECCyADQdAOahBGDAELIANB0A5qEEULAkACQCAMQaDFASgCABEEAEUNACAEQaDFASgCABEEAEUNACADQZAKakGIwwFBqMUBKAIAEQIAIANBwApqIgFBpMUBKAIAEQMAIANB8ApqIgJBpMUBKAIAEQMAIANBoAtqIgRBpMUBKAIAEQMAIANB0AtqIgVBpMUBKAIAEQMAIANBgAxqIgZBpMUBKAIAEQMAIANBsAxqIgdBpMUBKAIAEQMAIANB4AxqIghBpMUBKAIAEQMAIANBkA1qIglBpMUBKAIAEQMAIANBwA1qIgpBpMUBKAIAEQMAIANB8A1qIgtBpMUBKAIAEQMAIANBoA5qIgxBpMUBKAIAEQMAIAAgA0GQCmpBqMUBKAIAEQIAIABBMGogAUGoxQEoAgARAgAgAEHgAGogAkGoxQEoAgARAgAgAEGQAWogBEGoxQEoAgARAgAgAEHAAWogBUGoxQEoAgARAgAgAEHwAWogBkGoxQEoAgARAgAgAEGgAmogB0GoxQEoAgARAgAgAEHQAmogCEGoxQEoAgARAgAgAEGAA2ogCUGoxQEoAgARAgAgAEGwA2ogCkGoxQEoAgARAgAgAEHgA2ogC0GoxQEoAgARAgAgAEGQBGogDEGoxQEoAgARAgAMAQsgA0HwB2ogA0HQDmpBqMUBKAIAEQIAIANBoAhqIhAgBkGoxQEoAgARAgAgA0HQCGoiESAHQajFASgCABECACADQYAJaiIWIAtBqMUBKAIAEQIAIANBsAlqIg0gDEGoxQEoAgARAgAgA0HgCWoiDiAEQajFASgCABECAAJAQfyzAS0AAEUNAAJAIAxBoMUBKAIAEQQARQ0AIARBoMUBKAIAEQQARQ0AIANB0AVqQaTFASgCABEDACADQYAGakGkxQEoAgARAwAgA0GwBmpBpMUBKAIAEQMAIANB4AZqQaTFASgCABEDACADQZAHakGkxQEoAgARAwAgA0HAB2pBpMUBKAIAEQMADAELIANB0AVqIANB0A5qQajFASgCABECACADQYAGaiAGQajFASgCABECACADQbAGaiAHQZi2AUGwxQEoAgARAQAgA0HgBmogA0HgD2pBmLYBQbDFASgCABEBACADQZAHaiAMQajFASgCABECACADQcAHaiAEQajFASgCABECAAsgA0GQCmogA0HwEGpBmLYBQcTFASgCABEBACADIANBkApqIANB8BBqQZi2AUG0xQEoAgARAAAgA0EwaiIPIAVBmLYBQbDFASgCABEBACADQbADaiADQfAHahA2IANBkARqIhIgEiAPQZi2AUG8xQEoAgARAAAgA0HABGoiEyATIA9BmLYBQbzFASgCABEAACADQfAEaiIUIBQgA0GYtgFBvMUBKAIAEQAAIANBoAVqIhUgFSADQZi2AUG8xQEoAgARAAAgA0GQAWogA0HwB2ogA0HQDmoQISADQfABaiICIAIgBUGYtgFBvMUBKAIAEQAAIANBoAJqIgggCCAFQZi2AUG8xQEoAgARAAAgA0HQAmoiCSAJIANB8BBqQZi2AUG8xQEoAgARAAAgA0GAA2oiCiAKIANB8BBqQZi2AUG8xQEoAgARAAAgACADQbADahAgAkBB2P4ALQAABEAgACADQZABahAcDAELIAAgA0GQAWoQGwtBAiEBQfSzASgCAEECSwRAA0AgA0GQAWogA0HwB2oQNiACIAIgD0GYtgFBvMUBKAIAEQAAIAggCCAPQZi2AUG8xQEoAgARAAAgCSAJIANBmLYBQbzFASgCABEAACAKIAogA0GYtgFBvMUBKAIAEQAAIAAgABAlAkBB2P4ALQAABEAgACADQZABahAcDAELIAAgA0GQAWoQGwsCQCABQfSyAWosAAAiF0UNAAJAIBdBAU4EQCADQZABaiADQfAHaiADQdAOahAhDAELIANBkAFqIANB8AdqIANB0AVqECELIAIgAiAFQZi2AUG8xQEoAgARAAAgCCAIIAVBmLYBQbzFASgCABEAACAJIAkgA0HwEGpBmLYBQbzFASgCABEAACAKIAogA0HwEGpBmLYBQbzFASgCABEAAEHY/gAtAAAEQCAAIANBkAFqEBwMAQsgACADQZABahAbCyABQQFqIgFB9LMBKAIASQ0ACwtBxP8AKAIAIQECQAJAQcj/AC0AAARAIAFBAUcNAUHk/gAoAgBFDQIMAQsCQCABDgIBAAILA0AgAUUNAiABQX9qIgFBAnRB5P4AaigCAEUNAAsMAQsgAEGgAmoiASABQZi2AUGwxQEoAgARAQAgAEHQAmoiASABQZi2AUGwxQEoAgARAQAgAEGAA2oiASABQZi2AUGwxQEoAgARAQAgAEGwA2oiASABQZi2AUGwxQEoAgARAQAgAEHgA2oiASABQZi2AUGwxQEoAgARAQAgAEGQBGoiASABQZi2AUGwxQEoAgARAQALQbmAAS0AAA0AQcT/ACgCACEBAkACQEHI/wAtAAAEQCABQQFHDQFB5P4AKAIARQ0CDAELAkAgAQ4CAQACCwNAIAFFDQIgAUF/aiIBQQJ0QeT+AGooAgBFDQALDAELAkAgDUGgxQEoAgARBABFDQAgDkGgxQEoAgARBABFDQAgA0HwB2pBpMUBKAIAEQMAIBBBpMUBKAIAEQMAIBFBpMUBKAIAEQMAIBZBpMUBKAIAEQMAIA1BpMUBKAIAEQMAIA5BpMUBKAIAEQMADAELIANB8AdqIANB8AdqQajFASgCABECACAQIBBBqMUBKAIAEQIAIBEgEUGYtgFBsMUBKAIAEQEAIANBgAlqIgEgAUGYtgFBsMUBKAIAEQEAIA0gDUGoxQEoAgARAgAgDiAOQajFASgCABECAAsCQEG0twEoAgBBAUYNACAGIAZBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACALIAtBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACAEIARBmLYBQbDFASgCABEBAAsgA0GQCmogA0HQDmpB0LABQYjFASgCABEBACADQdAOaiADQZAKakGYtgFB7MUBKAIAEQEAIAYgA0HwCmoiAUGYtgFB7MUBKAIAEQEAIANBkApqIAdBsLEBQYjFASgCABEBACAHIANBkApqQZi2AUHsxQEoAgARAQAgCyABQZi2AUHsxQEoAgARAQAgA0GwA2ogA0HwB2ogA0HQDmoQISASIBIgBUGYtgFBvMUBKAIAEQAAIBMgEyAFQZi2AUG8xQEoAgARAAAgFCAUIANB8BBqQZi2AUG8xQEoAgARAAAgFSAVIANB8BBqQZi2AUG8xQEoAgARAAACQEG0twEoAgBBAUYNACAGIAZBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACALIAtBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACAEIARBmLYBQbDFASgCABEBAAsgA0GQCmogA0HQDmpB0LABQYjFASgCABEBACADQdAOaiADQZAKakGYtgFB7MUBKAIAEQEAIAYgAUGYtgFB7MUBKAIAEQEAIANBkApqIAdBsLEBQYjFASgCABEBACAHIANBkApqQZi2AUHsxQEoAgARAQAgCyABQZi2AUHsxQEoAgARAQACQAJAIAxBoMUBKAIAEQQARQ0AIARBoMUBKAIAEQQARQ0AIANB0A5qQaTFASgCABEDACAGQaTFASgCABEDACAHQaTFASgCABEDACALQaTFASgCABEDACAMQaTFASgCABEDACAEQaTFASgCABEDAAwBCyADQdAOaiADQdAOakGoxQEoAgARAgAgBiAGQajFASgCABECACAHIAdBmLYBQbDFASgCABEBACADQeAPaiIBIAFBmLYBQbDFASgCABEBACAMIAxBqMUBKAIAEQIAIAQgBEGoxQEoAgARAgALIANBkAFqIANB8AdqIANB0A5qECEgAiACIAVBmLYBQbzFASgCABEAACAIIAggBUGYtgFBvMUBKAIAEQAAIAkgCSADQfAQakGYtgFBvMUBKAIAEQAAIAogCiADQfAQakGYtgFBvMUBKAIAEQAAIANBkApqIANBsANqECACQEHY/gAtAAAEQCADQZAKaiADQZABahAcDAELIANBkApqIANBkAFqEBsLIAAgACADQZAKahAHCyADQYASaiQAC/8DAQt/IAAgASgCACIEIAIoAgAiBWsiDDYCACAAIAEoAgQiBiACKAIEIgcgBCAFSWoiBGsiBTYCBCAAIAEoAggiCCAEIAdJIAYgBElqIgYgAigCCGoiBGsiBzYCCCAAIAEoAgwiCSAEIAZJIAggBElqIgYgAigCDGoiBGsiCDYCDCAAIAEoAhAiCiAEIAZJIAkgBElqIgYgAigCEGoiBGsiCTYCECAAIAEoAhQiCyAEIAZJIAogBElqIgYgAigCFGoiBGsiCjYCFCAAIAEoAhgiDSAEIAZJIAsgBElqIgYgAigCGGoiBGsiCzYCGCAAIAEoAhwiDiAEIAZJIA0gBElqIgQgAigCHGoiAWsiAjYCHCABIARJQX9BACAOIAFJG0cEQCAAIAMoAgAiASAMaiIENgIAIAAgBSAEIAFJaiIBIAMoAgRqIgQ2AgQgACAEIAFJIAEgBUlqIgQgB2oiASADKAIIaiIFNgIIIAAgBSABSSABIARJaiIEIAhqIgEgAygCDGoiBTYCDCAAIAUgAUkgASAESWoiBCAJaiIBIAMoAhBqIgU2AhAgACAFIAFJIAEgBElqIgQgCmoiASADKAIUaiIFNgIUIAAgBSABSSABIARJaiIEIAtqIgEgAygCGGoiBTYCGCAAIAMoAhwgAmogASAESWogBSABSWo2AhwLC+kFAQx/IwBBgAlrIgQkACAAIAFGBEAgBEHABGogAEGoxQEoAgARAgAgBEHwBGogAEEwakGoxQEoAgARAgAgBEGgBWogAEHgAGpBqMUBKAIAEQIAIARB0AVqIABBkAFqQajFASgCABECACAEQYAGaiAAQcABakGoxQEoAgARAgAgBEGwBmogAEHwAWpBqMUBKAIAEQIAIARB4AZqIABBoAJqQajFASgCABECACAEQZAHaiAAQdACakGoxQEoAgARAgAgBEHAB2ogAEGAA2pBqMUBKAIAEQIAIARB8AdqIABBsANqQajFASgCABECACAEQaAIaiAAQeADakGoxQEoAgARAgAgBEHQCGogAEGQBGpBqMUBKAIAEQIAIARBwARqIQELIARBiMMBQajFASgCABECACAEQTBqIgVBpMUBKAIAEQMAIARB4ABqIgZBpMUBKAIAEQMAIARBkAFqIgdBpMUBKAIAEQMAIARBwAFqIghBpMUBKAIAEQMAIARB8AFqIglBpMUBKAIAEQMAIARBoAJqIgpBpMUBKAIAEQMAIARB0AJqIgtBpMUBKAIAEQMAIARBgANqIgxBpMUBKAIAEQMAIARBsANqIg1BpMUBKAIAEQMAIARB4ANqIg5BpMUBKAIAEQMAIARBkARqIg9BpMUBKAIAEQMAIAAgBEGoxQEoAgARAgAgAEEwaiAFQajFASgCABECACAAQeAAaiAGQajFASgCABECACAAQZABaiAHQajFASgCABECACAAQcABaiAIQajFASgCABECACAAQfABaiAJQajFASgCABECACAAQaACaiAKQajFASgCABECACAAQdACaiALQajFASgCABECACAAQYADaiAMQajFASgCABECACAAQbADaiANQajFASgCABECACAAQeADaiAOQajFASgCABECACAAQZAEaiAPQajFASgCABECACAAIAEgAiADAn9BnMUBKAIAGkEACxDkASAEQYAJaiQAC40FAQV/IwBBoAhrIgIkACACQcAHaiABQeAAaiIFQZi2AUHExQEoAgARAQAgAkHwB2oiAyABQZABaiIGQZi2AUHExQEoAgARAQAgAkGABmogAkHAB2ogAUHAAWoiBEGIxQEoAgARAQAgAkHABGogAkHAB2ogAUGIxQEoAgARAQAgAkGAA2ogAUGMxQEoAgARAgAgAkHAAWogBEGMxQEoAgARAgAgAkHAB2ogASAFQZi2AUG0xQEoAgARAAAgAyABQTBqIAZBmLYBQbTFASgCABEAACACQcAHaiACQcAHaiAEQZi2AUG0xQEoAgARAAAgAyADIAFB8AFqQZi2AUG0xQEoAgARAAAgAiACQcAHakGMxQEoAgARAgAgAiACIAJBgANqQZi2AUHoxQEoAgARAAAgAkHgAGoiASABIAJB4ANqIgNBmLYBQejFASgCABEAACACIAIgAkGABmpBmLYBQejFASgCABEAACABIAEgAkHgBmoiBEGYtgFB6MUBKAIAEQAAIAIgAiACQcABakGYtgFB6MUBKAIAEQAAIAEgASACQaACaiIFQZi2AUHoxQEoAgARAAAgAEGAA2ogAiACQcAEakGYtgFB6MUBKAIAEQAAIABB4ANqIAEgAkGgBWoiAUGYtgFB6MUBKAIAEQAAIAJBgAZqIAJBgAZqQZDFASgCABECACAAIAJBgANqIAJBgAZqQZi2AUHkxQEoAgARAAAgAEHgAGogAyAEQZi2AUHkxQEoAgARAAAgAkHAAWogAkHAAWpBkMUBKAIAEQIAIABBwAFqIAJBwAFqIAJBwARqQZi2AUHkxQEoAgARAAAgAEGgAmogBSABQZi2AUHkxQEoAgARAAAgAkGgCGokAAuuAgEFfwJAAkBBmMUBKAIAIgNFDQAgACgCAEGIwwEoAgBHDQFBASEEA0AgBCICIANGDQEgAkEBaiEEIAAgAkECdCIFaigCACAFQYjDAWooAgBGDQALIAIgA0kNAQsgAEEwakGgxQEoAgARBABFDQAgAEHgAGpBoMUBKAIAEQQARQ0AIABBkAFqQaDFASgCABEEAEUNACAAQcABakGgxQEoAgARBABFDQAgAEHwAWpBoMUBKAIAEQQARQ0AIABBoAJqQaDFASgCABEEAEUNACAAQdACakGgxQEoAgARBABFDQAgAEGAA2pBoMUBKAIAEQQARQ0AIABBsANqQaDFASgCABEEAEUNACAAQeADakGgxQEoAgARBABFDQAgAEGQBGpBoMUBKAIAEQQAIQELIAEL0AMBBX9BmMUBKAIAIgRFBEBBAQ8LAkAgACgCACABKAIARw0AQQEhAwJAA0AgAyICIARGDQEgAkEBaiEDIAAgAkECdCIFaigCACABIAVqKAIARg0ACyACIARJDQELIAAoAjAgASgCMEcNAEEBIQMCQANAIAMiAiAERg0BIAJBAWohAyAAIAJBAnQiBWooAjAgASAFaigCMEYNAAsgAiAESQ0BCyAAKAJgIAEoAmBHDQBBASEDAkADQCADIgIgBEYNASACQQFqIQMgACACQQJ0IgVqKAJgIAEgBWooAmBGDQALIAIgBEkNAQsgACgCkAEgASgCkAFHDQBBASEDAkADQCADIgIgBEYNASACQQFqIQMgACACQQJ0IgVqKAKQASABIAVqKAKQAUYNAAsgAiAESQ0BCyAAKALAASABKALAAUcNAEEBIQMCQANAIAMiAiAERg0BIAJBAWohAyAAIAJBAnQiBWooAsABIAEgBWooAsABRg0ACyACIARJDQELIAAoAvABIAEoAvABRw0AQQEhAwNAAkAgBCADIgJGBEAgBCECDAELIAJBAWohAyAAIAJBAnQiBmooAvABIAEgBmooAvABRg0BCwsgAiAETyEGCyAGC7sCAQF+IABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDACAAQZABakGkxQEoAgARAwAgAEHAAWpBpMUBKAIAEQMAIABB8AFqQaTFASgCABEDACAAQaACakGkxQEoAgARAwAg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QbjDAUGYtgFBvMUBKAIAEQAADAELIAUhAAsgBCAANgIQIAIoAggiBSACKAIERgRAIAFBADoAAAwDCyACKAIAIAVqQTNBMiAAKAIAQQFxGzoAACACIAIoAghBAWoiADYCCCABQQE6AABBACEGIAdFBEAgACACKAIERgRAIAFBADoAAAwECyACKAIAIABqIAg6AAAgAiACKAIIQQFqNgIIIAFBAToAAEEgIQYLIARB+ABqIAEgAiADEBcgAS0AAEUNAiAHRQRAIAIoAggiACACKAIERgRAIAFBADoAAAwECyACKAIAIABqIAY6AAAgAiACKAIIQQFqNgIIIAFBAToAAAsgBEGoAWogASACIAMQFwwCCyACKAIIIgAgAigCBEYEQCABQQA6AAAMAgsgAigCACAAakExOgAAIAIgAigCCEEBaiIANgIIIAFBAToAAEEAIQYgB0UEQCAAIAIoAgRGBEAgAUEAOgAADAMLIAIoAgAgAGogCDoAACACIAIoAghBAWo2AgggAUEBOgAAQSAhBgsgBEH4AGogASACIAMQFyABLQAARQ0BIARBqAFqIQUCQAJAIAdFBEAgAigCCCIAIAIoAgRHDQEgAUEAOgAADAQLIAUgASACIAMQFyABLQAADQEMAwsgAigCACAAaiAGOgAAIAIgAigCCEEBajYCCCABQQE6AAAgBSABIAIgAxAXIAEtAABFDQIgAigCCCIAIAIoAgRGBEAgAUEAOgAADAMLIAIoAgAgAGogCDoAACACIAIoAghBAWo2AgggAUEBOgAACyAEQdgBaiABIAIgAxAXIAEtAABFDQEgB0UEQCACKAIIIgAgAigCBEYEQCABQQA6AAAMAwsgAigCACAAaiAGOgAAIAIgAigCCEEBajYCCCABQQE6AAALIARBiAJqIAEgAiADEBcMAQsgAUEAOgAACyAEQdADaiQAC54BAQJ/IwBBoAJrIgIkAAJAAkACQAJAAkBB/IUBKAIAQX9qDgUBAgICAAILIAIgARBpIAAgAhCUASAAIAAQaEEBIQMMAwsgACABEOgBDAELIAAgARDnAUUNAQtBASEDAkACQEH4hQEoAgAOAgABAgsgACAAEOYBDAELIAAgABBoQYCGAS0AAEUNACAAIABBuIUBEFwLIAJBoAJqJAAgAwvdCQEGfyMAQaAIayICJAAgAkHgAGogAUHwAWoiA0GYtgFBxMUBKAIAEQEAIAJB4ABqIAJB4ABqIAFBwAFqIgVBmLYBQbzFASgCABEAACACQeAGaiAFIANBmLYBQbTFASgCABEAACACIAUgA0GYtgFBuMUBKAIAEQAAIAJB4ANqIAJB4AZqIAJBmLYBQbzFASgCABEAACACQZAEaiIDIAJB4ABqQajFASgCABECACACQeAAaiADQZi2AUHExQEoAgARAQAgAkHgAGogAkHgAGogAkHgA2pBmLYBQbzFASgCABEAACACQeAGaiACQeADaiADQZi2AUG0xQEoAgARAAAgAiACQeADaiADQZi2AUG4xQEoAgARAAAgAkHABGoiAyACQeAGaiACQZi2AUG8xQEoAgARAAAgAkHwBGogAkHgAGpBqMUBKAIAEQIAIAJB4ABqIAMgAkHgA2pBiMUBKAIAEQEAIAJBoAVqIAJB4ABqQZi2AUHsxQEoAgARAQAgAkHQBWogAkHAAWoiBkGYtgFB7MUBKAIAEQEAIAJB4ABqIAEgAkHgA2pBsI4BEGIgBiABIAJB4ANqEO0BIAJBoAJqIgcgASACQeADakHQkwEQYiACQYADaiIEIAEgAkHgA2pB0JYBEGIgAkHgBmogBiACQeADakGIxQEoAgARAQAgBiACQeAGakGYtgFB7MUBKAIAEQEAIAJB8AFqIAJBwAdqIgNBmLYBQezFASgCABEBACACQeAGaiAHIAFB4ABqQYjFASgCABEBACAHIAJB4AZqQZi2AUHsxQEoAgARAQAgAkHQAmogA0GYtgFB7MUBKAIAEQEAIAJB4AZqIAQgAkHgA2pBiMUBKAIAEQEAIAQgAkHgBmpBmLYBQezFASgCABEBACACQbADaiIBIANBmLYBQezFASgCABEBACACQeAGaiAEIAVBiMUBKAIAEQEAIAQgAkHgBmpBmLYBQezFASgCABEBACABIANBmLYBQezFASgCABEBACACQeAGaiAGIARBiMUBKAIAEQEAIABBwAFqIgEgAkHgBmpBmLYBQezFASgCABEBACAAQfABaiIFIANBmLYBQezFASgCABEBACACQeAGaiACQeAAaiAEQYjFASgCABEBACAAIAJB4AZqQZi2AUHsxQEoAgARAQAgAEEwaiIEIANBmLYBQezFASgCABEBACACQeAGaiAAIAFBiMUBKAIAEQEAIAAgAkHgBmpBmLYBQezFASgCABEBACAEIANBmLYBQezFASgCABEBACACQeAGaiAFQZi2AUHExQEoAgARAQAgAkHgBmogAkHgBmogAUGYtgFBvMUBKAIAEQAAIAJBsAZqIAEgBUGYtgFBtMUBKAIAEQAAIAJBgAZqIAEgBUGYtgFBuMUBKAIAEQAAIAIgAkGwBmogAkGABmpBmLYBQbzFASgCABEAACACQTBqIAJB4AZqQajFASgCABECACACQeAGaiAHIAZBiMUBKAIAEQEAIABB4ABqIgEgAkHgBmpBmLYBQezFASgCABEBACAAQZABaiIAIANBmLYBQezFASgCABEBACACQeAGaiABIAJBiMUBKAIAEQEAIAEgAkHgBmpBmLYBQezFASgCABEBACAAIANBmLYBQezFASgCABEBACACQaAIaiQAC5YIAQh/IwBB8ARrIgEkACABQbADaiAAQTBqIgJBmLYBQcTFASgCABEBACABQbADaiABQbADaiAAQZi2AUG8xQEoAgARAAAgAUGgAmogACACQZi2AUG0xQEoAgARAAAgAUHgAGogACACQZi2AUG4xQEoAgARAAAgAUHAAWogAUGgAmogAUHgAGpBmLYBQbzFASgCABEAACABQfABaiIIIAFBsANqQajFASgCABECACABQbADaiAAQZABaiICQZi2AUHExQEoAgARAQAgAUGwA2ogAUGwA2ogAEHgAGoiA0GYtgFBvMUBKAIAEQAAIAFB4ABqIAMgAkGYtgFBtMUBKAIAEQAAIAEgAyACQZi2AUG4xQEoAgARAAAgAUGgAmogAUHgAGogAUGYtgFBvMUBKAIAEQAAIAFB0AJqIgIgAUGwA2pBqMUBKAIAEQIAIAFBsANqIABB8AFqIgRBmLYBQcTFASgCABEBACABQbADaiABQbADaiAAQcABaiIDQZi2AUG8xQEoAgARAAAgASADIARBmLYBQbTFASgCABEAACABQYADaiADIARBmLYBQbjFASgCABEAACABQeAAaiABIAFBgANqQZi2AUG8xQEoAgARAAAgAUGQAWoiByABQbADakGoxQEoAgARAgAgAUGwA2pBnMYBIAFB4ABqQYjFASgCABEBACABIAFBsANqQZi2AUHsxQEoAgARAQAgAUEwaiIEIAFBkARqIgZBmLYBQezFASgCABEBACABIAEgAUHAAWpBmLYBQbTFASgCABEAACAEIAQgCEGYtgFBtMUBKAIAEQAAIAFBsANqIAEgAEGIxQEoAgARAQAgASABQbADakGYtgFB7MUBKAIAEQEAIAQgBkGYtgFB7MUBKAIAEQEAIAFBsANqIAFB4ABqQaDaAUGIxQEoAgARAQAgAUHgAGogAUGwA2pBmLYBQezFASgCABEBACAHIAZBmLYBQezFASgCABEBACABQaACaiABQaACaiABQeAAakGYtgFBuMUBKAIAEQAAIAIgAiAHQZi2AUG4xQEoAgARAAAgAUGwA2ogAUGgAmogA0GIxQEoAgARAQAgAUGgAmogAUGwA2pBmLYBQezFASgCABEBACACIAZBmLYBQezFASgCABEBAAJAQZjFASgCACIDRQRAQQEhBQwBCyABKAKgAiABKAIARw0AQQEhAgJAA0AgAiIAIANGDQEgAEEBaiECIABBAnQiBCABQaACamooAgAgASAEaigCAEYNAAsgACADSQ0BCyABKALQAiABKAIwRw0AQQEhAgNAAkAgAyACIgBGBEAgAyEADAELIABBAWohAiABIABBAnQiBWooAtACIAEgBWooAjBGDQELCyAAIANPIQULIAFB8ARqJAAgBQu2CQEGfyMAQdAFayIBJAAgAUGQBGogAEEwaiICQZi2AUHExQEoAgARAQAgAUGQBGogAUGQBGogAEGYtgFBvMUBKAIAEQAAIAFBgANqIAAgAkGYtgFBtMUBKAIAEQAAIAFBwAFqIAAgAkGYtgFBuMUBKAIAEQAAIAFBoAJqIAFBgANqIAFBwAFqQZi2AUG8xQEoAgARAAAgAUHQAmoiBiABQZAEakGoxQEoAgARAgAgAUGQBGogAEGQAWoiAkGYtgFBxMUBKAIAEQEAIAFBkARqIAFBkARqIABB4ABqIgNBmLYBQbzFASgCABEAACABQcABaiADIAJBmLYBQbTFASgCABEAACABQeAAaiADIAJBmLYBQbjFASgCABEAACABQYADaiABQcABaiABQeAAakGYtgFBvMUBKAIAEQAAIAFBsANqIAFBkARqQajFASgCABECACABQZAEaiAAQfABaiICQZi2AUHExQEoAgARAQAgAUGQBGogAUGQBGogAEHAAWoiA0GYtgFBvMUBKAIAEQAAIAFB4ABqIAMgAkGYtgFBtMUBKAIAEQAAIAEgAyAC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IAxFBEAgBUEDRiAFQf4BcUECRg0BGiABQQA6AAAMAwsgBCALakF/aiICIAIsAAAiAkH/AHE6AAAgAkEASAshAiAAIAEgBCAOciIDIAcQQiABLQAARQ0BIABBMGogASADIAdqIAcQQiABLQAARQ0BIAEgAEHgAGogACACEHQiAjoAACACRQ0BCwJAQZSCAi0AAEUNACAAEF0NACABQQA6AAAMAQsgAUEBOgAACyAEQfADaiQAC+YPAQd/IwBBkAJrIgQkACADQeA0cSIGRUEFdCEHAkAgA0GACHEEQCACKAIIIgUgAigCBEYEQCABQQA6AAAMAgsgAigCACAFakE0OgAAIAIgAigCCEEBaiIFNgIIIAFBAToAACAGRQRAIAUgAigCBEYEQCABQQA6AAAMAwsgAigCACAFaiAHOgAAIAIgAigCCEEBajYCCCABQQE6AAALIAAgASACIAMQFyABLQAARQ0BIAZFBEAgAigCCCIFIAIoAgRGBEAgAUEAOgAADAMLIAIoAgAgBWogBzoAACACIAIoAghBAWo2AgggAUEBOgAACyAAQTBqIAEgAiADEBcgAS0AAEUNASAGRQRAIAIoAggiBSACKAIERgRAIAFBADoAAAwDCyACKAIAIAVqIAc6AAAgAiACKAIIQQFqNgIIIAFBAToAAAsgAEHgAGogASACIAMQFwwBCyAEQcgAaiAAQajFASgCABECACAEQfgAaiAAQTBqQajFASgCABECACAEQagBaiIJIABB4ABqIgVBqMUBKAIAEQIAIARByABqEDAgA0GAIHEEQCAEQdgBakGkxQEoAgARAwACQAJAQZjFASgCACIGRQ0AQezZASgCACAEKALYAUcNAUEBIQADQCAAIgMgBkYNASADQQFqIQAgA0ECdCIHQezZAWooAgAgBEHYAWogB2ooAgBGDQALIAMgBkkNAQsgAUEAOgAADAILIAVBoMUBKAIAEQQABEAgBEGoAWoiACABIAJBgAQQFyABLQAARQ0CIAAgASACQYAEEBcMAgsgBEHIAGogASACQYAEEBcgAS0AAEUNASAEQfgAaiABIAJBgAQQFwwBCwJAIANBgBRxBEBBnMUBKAIAIQBB7NkBQaDFASgCABEEACIGQZzFASgCAEEHcSIIRXIhCiAAQQdqQQN2IQdBoMUBKAIAIQACQEHMgQItAAAEQCAJIAARBAAEQCAEQcABOgAQIARBEGpBAXJBACAHQX9qEBYMAgsgBEEANgIIIAQgBzYCBCAEIARBEGo2AgAgBEHIAGogASAEQYAEEBcgAS0AAEUNBCAEQZjFASgCACIANgLcASAEQfgAaiEGAkBBlcYBLQAABEAgBEHgAWoiBSAGQbjDAUGYtgFBvMUBKAIAEQAAQZjFASgCACEADAELIAYhBQsgBCAFNgLYAQJAA0AgACIGRQ0BIAUgBkF/aiIAQQJ0IghqKAIAIgkgCEHYwgFqKAIAIghGDQALIAkgCE8hCAsgBCAELQAQQaB/QYB/IAhBAXEbQaB/IAYbcjoAEAwBCyAFIAARBAAEQCAEQRBqQQAgByAKahAWDAELIARBADYCCCAEIAc2AgQgBCAEQRBqIApyNgIAIARByABqIAEgBEGABBAXIAEtAABFDQMgBEH4AGohBSAGQQFzIAhBAEdxRQRAIARBmMUBKAIANgLcAQJAQZXGAS0AAARAIARB4AFqIgAgBUG4wwFBmLYBQbzFASgCABEAAAwBCyAFIQALIAQgADYC2AEgBEEDQQIgACgCAEEBcRs6ABAMAQsgBEGYxQEoAgA2AtwBAkBBlcYBLQAABEAgBEHgAWoiACAFQbjDAUGYtgFBvMUBKAIAEQAADAELIAUhAAsgBCAANgLYASAAKAIAQQFxRQ0AIAQgB2oiAEEPaiAALQAPQYABcjoAAAsgByAKaiEFIANBgBBxBEAgBQRAIAIoAgghA0EAIQADQCACKAIEIANrQQJJDQQgAigCACADakGY/gAoAgAiAyAEQRBqIABqLQAAIgZBD3FqLQAAQQh0IAMgBkHwAXFBBHZqLQAAcjsAACACIAIoAghBAmoiAzYCCCABQQE6AAAgAEEBaiIAIAVHDQALCyABQQE6AAAMAwtBACEDIAEgAigCBCACKAIIIgBrIAVPBH8gAigCACAAaiAEQRBqIAUQAxogAiACKAIIIAVqNgIIQQEFQQALOgAADAILQQAhACAFQaDFASgCABEEAARAIAEgAigCCCIDIAIoAgRHBH8gAigCACADakEwOgAAIAIgAigCCEEBajYCCEEBBUEACzoAAAwCCyADQYACcQRAIARBmMUBKAIANgLcASAEQfgAaiEFAkBBlcYBLQAABEAgBEHgAWoiACAFQbjDAUGYtgFBvMUBKAIAEQAADAELIAUhAAsgBCAANgLYASACKAIIIgUgAigCBEYEQCABQQA6AAAMAwsgAigCACAFakEzQTIgACgCAEEBcRs6AAAgAiACKAIIQQFqIgA2AgggAUEBOgAAIAZFBEAgACACKAIERgRAIAFBADoAAAwECyACKAIAIABqIAc6AAAgAiACKAIIQQFqNgIIIAFBAToAAAsgBEHIAGogASACIAMQFwwCCyACKAIIIgAgAigCBEYEQCABQQA6AAAMAgsgAigCACAAakExOgAAIAIgAigCCEEBaiIANgIIIAFBAToAACAGRQRAIAAgAigCBEYEQCABQQA6AAAMAwsgAigCACAAaiAHOgAAIAIgAigCCEEBajYCCCABQQE6AAALIARByABqIAEgAiADEBcgAS0AAEUNASAGRQRAIAIoAggiACACKAIERgRAIAFBADoAAAwDCyACKAIAIABqIAc6AAAgAiACKAIIQQFqNgIIIAFBAToAAAsgBEH4AGogASACIAMQFwwBCyABQQA6AAALIARBkAJqJAAL7QQBA38jAEHwAWsiAyQAAkACQAJAAkACQAJAAkBB/IUBKAIAQX9qDgUBAgICAAILIANBwAFqIANB4ABqIgQgA0GQAWogAhBlIAMgA0HAAWogBEGYtgFBvMUBKAIAEQAAIANBMGoiAiAEQZi2AUHAxQEoAgARAQAgAiACIARBmLYBQbzFASgCABEAACACIAIgA0GQAWpBmLYBQbzFASgCABEAACABIAMQhgFBxLABKAIAIQQCQAJ/QciwAS0AAARAIARBAUdB5K8BKAIAQQBHcgwBCyAEQQFGDQEgBEULIQUgBEUNBAsCQAJAA0AgBCICRQ0BIAJBf2oiBEECdEHkrwFqKAIARQ0ACyACQQFLDQELQQEhAiABIAFB5K8BKAIAIAUQPQ0FCyABIAFB5K8BIAIgBRA3DAQLIANBwAFqIAJBqMUBKAIAEQIAA0AgAyADQcABakGYtgFBwMUBKAIAEQEAIAMgA0G42QFBmLYBQbTFASgCABEAACADIAMgA0HAAWpBmLYBQbzFASgCABEAACADQZABaiADQezZAUGYtgFBtMUBKAIAEQAAIANBkAFqIANBkAFqECRFBEAgA0HAAWogA0HAAWpBiMMBQZi2AUG0xQEoAgARAAAMAQsLIAEgA0HAAWpBqMUBKAIAEQIA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aiIFIAsgEn4iEqdqIgZqIgc2AhQgAiACKAIYIgkgByADSSADIAhJamoiAyASQiCIpyAGIAVJaiIFIAsgEX4iEadqIgZqIgc2AhggAiACKAIcIgggByADSSADIAlJamoiAyARQiCIpyAGIAVJaiIFIAsgEH4iEKdqIgZqIgc2AhwgAiACKAIgIgkgByADSSADIAhJamoiAyAQQiCIpyAGIAVJaiIFIAsgD34iD6dqIgZqIgc2AiAgAiACKAIkIgggByADSSADIAlJamoiAyAPQiCIpyAGIAVJaiIFIAsgDn4iDqdqIgZqIgc2AiQgAiACKAIoIgkgByADSSADIAhJamoiAyAOQiCIpyAGIAVJaiIFIAsgDX4iDadqIgZqIgc2AiggAiACKAIsIgggByADSSADIAlJamoiAyANQiCIpyAGIAVJaiIFIAsgDH4iC6dqIgZqIgc2AiwgAiACKAIwIAcgA0kgAyAISWpqIAtCIIinIAYgBUlqajYCMCAEQQFqIgRBDEcNAAsLJgEBfyMAQeAAayIDJAAgAyABIAEQPiAAIAMgAhBIIANB4ABqJAALJgEBfyMAQeAAayIEJAAgBCABIAIQPiAAIAQgAxBIIARB4ABqJAALkgcCCn8JfiMAIQIgASEIIAAgAUYEQCACQWBqIgEgACkCGDcCGCABIAApAhA3AhAgASAAKQIINwIIIAEgACkCADcCACABQWBqIgggACkCGDcCGCAIIAApAhA3AhAgCCAAKQIINwIIIAggACkCADcCAAsgACAINQIAIgwgATUCAH4iDT4CACAAIA1CIIinIgIgDCABNQIEfiINp2oiCTYCBCAAIA1CIIinIAkgAklqIgIgDCABNQIIfiINp2oiBDYCCCAAIA1CIIinIAQgAklqIgIgDCABNQIMfiINp2oiBDYCDCAAIA1CIIinIAQgAklqIgIgDCABNQIQfiINp2oiBDYCECAAIA1CIIinIAQgAklqIgIgDCABNQIUfiINp2oiBDYCFCAAIA1CIIinIAQgAklqIgIgDCABNQIYfiINp2oiBDYCGCABNQIcIQ4gAEIANwIkIABCADcCLCAAQgA3AjQgAEEANgI8IAAgDUIgiKcgBCACSWoiAiAMIA5+IgynaiIENgIcIAAgDEIgiKcgBCACSWo2AiBBASEEA0AgATUCHCENIAE1AhghDiAB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NgIUIAAgCSAHIARJIAsgB0lqIgQgAygCGGoiB2siCjYCGCAAIAEgByAESSAJIAdJaiIEIAMoAhxqIgdrIgw2AhwgByAESUF/QQAgASAHSRtHBEAgACABNgIcIAAgCTYCGCAAIAs2AhQgACAONgIQIAAgBjYCDCAAIAg2AgggACACNgIEIAAgFDYCAAwDCyAFIBUgAygCACINayIUNgIAIAUgECADKAIEIgEgFSANSWoiBmsiAjYCBCAFIBEgBiABSSAQIAZJaiIBIAMoAghqIgZrIgg2AgggBSASIAYgAUkgESAGSWoiASADKAIMaiIEayIGNgIMIAUgDyAEIAFJIBIgBElqIgEgAygCEGoiBGsiDjYCECAFIBMgBCABSSAPIARJaiIBIAMoAhRqIgRrIgs2AhQgBSAKIAQgAUkgEyAESWoiASADKAIYaiIEayIJNgIYIAUgDCAEIAFJIAogBElqIgQgAygCHGoiB2siATYCHCAHIARJQX9BACAMIAdJG0YNAAsMAQtBAEEAIAAgBUEJIANBCBAdCyAFQTBqJAALCgAgACABIAIQPwsJACAAIAEQqQELigICAX8CfiAAIAKtIgUgATUCAH4iBD4CACAAIARCIIinIgIgATUCBCAFfiIEp2oiAzYCBCAAIARCIIinIAMgAklqIgIgATUCCCAFfiIEp2oiAzYCCCAAIARCIIinIAMgAklqIgIgATUCDCAFfiIEp2oiAzYCDCAAIARCIIinIAMgAklqIgIgATUCECAFfiIEp2oiAzYCECAAIARCIIinIAMgAklqIgIgATUCFCAFfiIEp2oiAzYCFCAAIARCIIinIAMgAklqIgIgATUCGCAFfiIEp2oiAzYCGCAAIARCIIinIAMgAklqIgIgATUCHCAFfiIFp2oiATYCHCAAIAVCIIinIAEgAklqNgIgCxIAQQBBACAAIAFBCSACQQgQHQuQBAENfyAAIAEgAhBvIQQgACgCICIBIAMoAgAiAkkhBSAEBEAgACABIAJrNgIgIAAgACgCJCICIAUgAygCBCIFaiIBazYCJCAAIAAoAigiBCABIAVJIAIgAUlqIgIgAygCCGoiAWs2AiggACAAKAIsIgUgASACSSAEIAFJaiICIAMoAgxqIgFrNgIsIAAgACgCMCIEIAEgAkkgBSABSWoiAiADKAIQaiIBazYCMCAA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NQIUIAhCIIh8fCIJPgIUIAAgAjUCGCABNQIYIAlCIIh8fCIKPgIYIAAgAjUCHCABNQIcIApCIIh8fCILPgIcIAAgAjUCICABNQIgIAtCIIh8fCIMPgIgIAAgAjUCJCABNQIkIAxCIIh8fCINPgIkIAAgAjUCKCABNQIoIA1CIIh8fCIOPgIoIAAgDkIgiKcgAigCLCABKAIsamoiATYCLCABrSADNQIsfSAOQv////8PgyADNQIofSANQv////8PgyADNQIkfSAMQv////8PgyADNQIgfSALQv////8PgyADNQIcfSAKQv////8PgyADNQIYfSAJQv////8PgyADNQIUfSAIQv////8PgyADNQIQfSAHQv////8PgyADNQIMfSAGQv////8PgyADNQIIfSAFQv////8PgyADNQIEfSAEQv////8PgyADNQIAfSIEQj+HfCIFQj+HfCIGQj+HfCIHQj+HfCIIQj+HfCIJQj+HfCIKQj+HfCILQj+HfCIMQj+HfCINQj+HfCIOQj+HfCIPQgBZBEAgACAPPgIsIAAgDj4CKCAAIA0+AiQgACAMPgIgIAAgCz4CHCAAIAo+AhggACAJPgIUIAAgCD4CECAAIAc+AgwgACAGPgIIIAAgBT4CBCAAIAQ+AgALC+gEAQx+IAAgATUCACACNQIAfSIEPgIAIAAgATUCBCACNQIEfSAEQj+HfCIFPgIEIAAgATUCCCACNQIIfSAFQj+HfCIGPgIIIAAgATUCDCACNQIMfSAGQj+HfCIHPgIMIAAgATUCECACNQIQfSAHQj+HfCIIPgIQIAAgATUCFCACNQIUfSAIQj+HfCIJPgIUIAAgATUCGCACNQIYfSAJQj+HfCIKPgIYIAAgATUCHCACNQIcfSAKQj+HfCILPgIcIAAgATUCICACNQIgfSALQj+HfCIMPgIgIAAgATUCJCACNQIkfSAMQj+HfCINPgIkIAAgATUCKCACNQIofSANQj+HfCIOPgIoIAAgATUCLCACNQIsfSAOQj+HfCIPPgIsIA9Cf1cEQCAAIAM1AgAgBEL/////D4N8IgQ+AgAgACADNQIEIAVC/////w+DIARCIIh8fCIEPgIEIAAgAzUCCCAGQv////8Pg3wgBEIgiHwiBD4CCCAAIAM1AgwgB0L/////D4N8IARCIIh8IgQ+AgwgACADNQIQ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ACADNgIYCwJAIARBD00EQCABIAQgBWoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAVBA3I2AgQgCyAEQQFyNgIEIAQgC2ogBDYCACAIBEAgCEEDdiIDQQN0QdyCAmohAEHIggIoAgAhAgJ/QQEgA3QiAyAHcUUEQEG0ggIgAyAHcjYCACAADAELIAAoAggLIQMgACACNgIIIAMgAjYCDCACIAA2AgwgAiADNgIIC0HIggIgCzYCAEG8ggIgBDYCAAsgAUEIaiEACyAMQRBqJAAgAAsyAQF/IwBBEGsiASQAIAEgACgCBDYCCCABKAIIQQE6AAAgACgCCEEBOgAAIAFBEGokAAsuAQF/AkAgACgCCCIALQAAIgFBAUcEfyABQQJxDQEgAEECOgAAQQEFQQALDwsACzYBAn8jAEEQayIBJAACfyABIAAoAgQ2AgggASgCCC0AAEULBEAgABDhASECCyABQRBqJAAgAgsuAQF/IwBB4ABrIgQkACAEIAEgAhA+QQBBACAAIARBGCADQQwQHSAEQeAAaiQAC4URAQd/IwBBwBZrIgUkAAJAAkACQANAIAMiBkUNASACIAZBf2oiA0ECdGoiCCgCAEUNAAsCQCAEDQAgBkEBRw0AAkACQAJAAkAgAigCAEF/ag4EAAECAwQLIAAgAUGoxQEoAgARAgAgAEEwaiABQTBqQajFASgCABECACAAQeAAaiABQeAAakGoxQEoAgARAgAgAEGQAWogAUGQAWpBqMUBKAIAEQIAIABBwAFqIAFBwAFqQajFASgCABECACAAQfABaiABQfABakGoxQEoAgARAgAgAEGgAmogAUGgAmpBqMUBKAIAEQIAIABB0AJqIAFB0AJqQajFASgCABECACAAQYADaiABQYADakGoxQEoAgARAgAgAEGwA2ogAUGwA2pBqMUBKAIAEQIAIABB4ANqIAFB4ANqQajFASgCABECACAAQZAEaiABQZAEakGoxQEoAgARAgAMBgsgACABQZoBEQIADAULIAAgAUGaARECACAAIAAgAUGZAREBAAwECyAAIAFBmgERAgAgACAAQZoBEQIADAMLIAVBwARqIAFBqMUBKAIAEQIAIAVB8ARqIAFBMGpBqMUBKAIAEQIAIAVBoAVqIAFB4ABqQajFASgCABECACAFQdAFaiABQZABakGoxQEoAgARAgAgBUGABmogAUHAAWpBqMUBKAIAEQIAIAVBsAZqIAFB8AFqQajFASgCABECACAFQeAGaiABQaACakGoxQEoAgARAgAgBUGQB2ogAUHQAmpBqMUBKAIAEQIAIAVBwAdqIAFBgANqQajFASgCABECACAFQfAHaiABQbADakGoxQEoAgARAgAgBUGgCGogAUHgA2pBqMUBKAIAEQIAIAVB0AhqIAFBkARqQajFASgCABECACAFQYAJaiIKIAVBwARqQajFASgCABECACAFQbAJaiAFQfAEakGoxQEoAgARAgAgBUHgCWogBUGgBWpBqMUBKAIAEQIAIAVBkApqIAVB0AVqQajFASgCABECACAFQcAKaiAFQYAGakGoxQEoAgARAgAgBUHwCmogBUGwBmpBqMUBKAIAEQIAIAVBoAtqIAVB4AZqQajFASgCABECACAFQdALaiAFQZAHakGoxQEoAgARAgAgBUGADGogBUHAB2pBqMUBKAIAEQIAIAVBsAxqIAVB8AdqQajFASgCABECACAFQeAMaiAFQaAIakGoxQEoAgARAgAgBUGQDWogBUHQCGpBqMUBKAIAEQIAIAVBwA1qIgYgCkGaARECACAFQYASaiAGIAFBmQERAQACQCAIKAIAIgZnQR9zIghBAXEEQCAAIAVBwARqIAYgCEF/aiIBdkEDcUHABGxqIgZBqMUBKAIAEQIAIABBMGogBkEwakGoxQEoAgARAgAgAEHgAGogBkHgAGpBqMUBKAIAEQIAIABBkAFqIAZBkAFqQajFASgCABECACAAQcABaiAGQcABakGoxQEoAgARAgAgAEHwAWogBkHwAWpBqMUBKAIAEQIAIABBoAJqIAZBoAJqQajFASgCABECACAAQdACaiAGQdACakGoxQEoAgARAgAgAEGAA2ogBkGAA2pBqMUBKAIAEQIAIABBsANqIAZBsANqQajFASgCABECACAAQeADaiAGQeADakGoxQEoAgARAgAgAEGQBGogBkGQBGpBqMUBKAIAEQIADAELIAAgAUGoxQEoAgARAgAgAEEwaiABQTBqQajFASgCABECACAAQeAAaiABQeAAakGoxQEoAgARAgAgAEGQAWogAUGQAWpBqMUBKAIAEQIAIABBwAFqIAFBwAFqQajFASgCABECACAAQfABaiABQfABakGoxQEoAgARAgAgAEGgAmogAUGgAmpBqMUBKAIAEQIAIABB0AJqIAFB0AJqQajFASgCABECACAAQYADaiABQYADakGoxQEoAgARAgAgAEGwA2ogAUGwA2pBqMUBKAIAEQIAIABB4ANqIAFB4ANqQajFASgCABECACAAQZAEaiABQZAEakGoxQEoAgARAgAgCCEBCwJAIANBAEgNACAERQRAIAMhBgNAIAFBAUoEQCACIAZBAnRqKAIAIQoDQCAAIABBmgERAgAgACAAQZoBEQIAIAogAUF+aiIHdkEDcSIJBEAgACAAIAVBwARqIAlBwARsakGZAREBAAsgAUEDSiEJIAchASAJDQALCyAGQQBKIQdBICEBIAZBf2ohBiAHDQALDAELIAMhBgNAIAFBAUoEQCACIAZBAnRqKAIAIQkDQCAAIABBmgERAgAgACAAQZoBEQIAAkAgCSABQX5qIgd2QQNxIgtFBEAgBUHABGogBUHABGogCkGZAREBAAwBCyAAIAAgBUHABGogC0HABGxqQZkBEQEACyABQQNKIQsgByEBIAsNAAsLIAZBAEohB0EgIQEgBkF/aiEGIAcNAAsLIARFDQIgA0EFdEEBciAIaiEBDAELQQEhASAERQ0BCyAFIABBqMUBKAIAEQIAIAVBMGogAEEwakGoxQEoAgARAgAgBUHgAGogAEHgAGpBqMUBKAIAEQIAIAVBkAFqIABBkAFqQajFASgCABECACAFQcABaiAAQcABakGoxQEoAgARAgAgBUHwAWogAEHwAWpBqMUBKAIAEQIAIAVBoAJqIABBoAJqQajFASgCABECACAFQdACaiAAQdACakGoxQEoAgARAgAgBUGAA2ogAEGAA2pBqMUBKAIAEQIAIAVBsANqIABBsANqQajFASgCABECACAFQeADaiAAQeADakGoxQEoAgARAgAgBUGQBGogAEGQBGpBqMUBKAIAEQIAIAEgBE8NACAFQYAJaiEAA0AgBSAFQZoBEQIAIAUgBUGaARECACAFIAUgAEGZAREBACABQQJqIgEgBEkNAAsLIAVBwBZqJAAL3AMBBX8jAEHAAWsiAiQAIAAgARAFAkBBtLcBKAIAQQFGDQAgAEEwaiIBIAFBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACAAQZABaiIBIAFBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACAAQfABaiIBIAFBmLYBQbDFASgCABEBAAsgAiAAQdCwAUGIxQEoAgARAQAgACACQZi2AUHsxQEoAgARAQAgAEEwaiIBIAJB4ABqIgNBmLYBQezFASgCABEBACACIABB4ABqIgRBsLEBQYjFASgCABEBACAEIAJBmLYBQezFASgCABEBACAAQZABaiIFIANBmLYBQezFASgCABEBAAJAQbS3ASgCAEEBRg0AIAEgAUGYtgFBsMUBKAIAEQEAQbS3ASgCAEEBRg0AIAUgBUGYtgFBsMUBKAIAEQEAQbS3ASgCAEEBRg0AIABB8AFqIgYgBkGYtgFBsMUBKAIAEQEACyACIABB0LABQYjFASgCABEBACAAIAJBmLYBQezFASgCABEBACABIANBmLYBQezFASgCABEBACACIARBsLEBQYjFASgCABEBACAEIAJBmLYBQezFASgCABEBACAFIANBmLYBQezFASgCABEBACACQcABaiQAC6kJAQR/IwBBoAhrIgIkAEHYgwEoAgAhAwJAAkACQAJ/QdyDAS0AAARAIANBAUdB+IIBKAIAQQBHcgwBCyADQQFGDQEgA0ULIQUgA0UNAQsCQAJAA0AgAyIERQ0BIARBf2oiA0ECdEGUggFqKAJkRQ0ACyAEQQFLDQELQQEhBCACQcAEaiABQfiCASgCACAFEFANAgsgAkHABGogAUH4ggEgBCAFEEcMAQsgAkHABGpBpMUBKAIAEQMAIAJB8ARqQaTFASgCABEDACACQaAFakGkxQEoAgARAwAgAkHQBWpBpMUBKAIAEQMAIAJBgAZqQaTFASgCABEDACACQbAGakGkxQEoAgARAwALAkACQAJAAkACQEGYggIoAgAiAw4DAAECBAsgAkGgAmogAkHABGoQEQwCCyACQaACaiACQcAEahAQDAELIAJBoAJqIAJBwARqEBQLQZiCAigCACEDCwJAAkACQAJAIAMOAwABAgMLIAJBoAJqIAJBoAJqIAJBwARqEAsMAgsgAkGgAmogAkGgAmogAkHABGoQCgwBCyACQaACaiACQaACaiACQcAEahAJCwJAQbS3ASgCAEEBRg0AIAJB0AJqIgMgA0GYtgFBsMUBKAIAEQEAQbS3ASgCAEEBRg0AIAJBsANqIgMgA0GYtgFBsMUBKAIAEQEAQbS3ASgCAEEBRg0AIAJBkARqIgMgA0GYtgFBsMUBKAIAEQEACyACIAJBoAJqQdCwAUGIxQEoAgARAQAgAkGgAmogAkGYtgFB7MUBKAIAEQEAIAJB0AJqIAJB4ABqIgNBmLYBQezFASgCABEBACACIAJBgANqIgRBsLEBQYjFASgCABEBACAEIAJBmLYBQezFASgCABEBACACQbADaiADQZi2AUHsxQEoAgARAQAgAiACQcAEahAFAkBBtLcBKAIAQQFGDQAgAkEwaiIEIARBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACACQZABaiIEIARBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACACQfABaiIEIARBmLYBQbDFASgCABEBAAsgAkHgBmogAkHQsAFBiMUBKAIAEQEAIAIgAkHgBmpBmLYBQezFASgCABEBACACQTBqIAJBwAdqIgRBmLYBQezFASgCABEBACACQeAGaiADQbCxAUGIxQEoAgARAQAgAyACQeAGakGYtgFB7MUBKAIAEQEAIAJBkAFqIARBmLYBQezFASgCABEBAAJAAkACQAJAAkBBmIICKAIAIgMOAwABAgQLIAJBwARqIAJBwARqIAJBoAJqEAsMAgsgAkHABGogAkHABGogAkGgAmoQCgwBCyACQcAEaiACQcAEaiACQaACahAJC0GYggIoAgAhAwsCQAJAAkACQCADDgMAAQIDCyACQcAEaiACQcAEaiACEAsMAgsgAkHABGogAkHABGogAhAKDAELIAJBwARqIAJBwARqIAIQCQsgAiABEOUBAkACQAJAAkBBmIICKAIADgMAAQIDCyAAIAJBwARqIAIQCwwCCyAAIAJBwARqIAIQCgwBCyAAIAJBwARqIAIQCQsgAkGgCGokAAvLDwEIfyMAQbAFayICJAAgAkHwA2ogAUHUxQEoAgARAgAgAkGwAmogAUEwaiIDQdTFASgCABECACACQfADaiACQfADaiACQbACakH4xQEoAgARBQAaIAJB0AFqIAJB8ANqQZi2AUHsxQEoAgARAQAgAkEPaiACQdABahB3IQkCQCACLQAPRQ0AIAFBoMUBKAIAEQQABEAgA0GgxQEoAgARBAANAQsgAkHwA2ogAUEwaiIDQZi2AUHExQEoAgARAQAgAkHwA2ogAkHwA2ogAUGYtgFBvMUBKAIAEQAAIAJBsAJqIAEgA0GYtgFBtMUBKAIAEQAAIAJB0AFqIAEgA0GYtgFBuMUBKAIAEQAAIAJBEGogAkGwAmogAkHQAWpBmLYBQbzFASgCABEAACACQUBrIgQgAkHwA2pBqMUBKAIAEQIAIAJBEGogAkEQakGg2gFBmLYBQbTFASgCABEAACAEIARB0NoBQZi2AUG0xQEoAgARAAAgAkEQaiACQRBqQYjDAUGYtgFBtMUBKAIAEQAAIAJBEGpBoMUBKAIAEQQABEAgBEGgxQEoAgARBAANAQsgAkHwA2ogAkEQakHUxQEoAgARAgAgAkGwAmogBEHUxQEoAgARAgAgAkHwA2ogAkHwA2ogAkGwAmpB+MUBKAIAEQUAGiACQdABaiACQfADakGYtgFB7MUBKAIAEQEAIAJB0AFqIAJB0AFqQZS2AUHIxQEoAgARAQAgAkEQaiACQRBqIAJB0AFqQZi2AUG8xQEoAgARAAAgBCAEIAJB0AFqQZi2AUG8xQEoAgARAAAgBCAEQZi2AUGwxQEoAgARAQAgAkEQaiACQRBqQZSCAUGYtgFBvMUBKAIAEQAAIAQgBEGUggFBmLYBQbzFASgCABEAACACQfADaiACQRBqIAFBiMUBKAIAEQEAIAJBEGogAkHwA2pBmLYBQezFASgCABEBACAEIAJB0ARqIgdBmLYBQezFASgCABEBACACQaABaiEGIAJB4AJqIQUgAkGAAmohAwNAAkACQAJAAkAgCA4DAAECAwsgAkHwA2ogASACQRBqQYjFASgCABEBACACQdABaiACQfADakGYtgFB7MUBKAIAEQEAIAMgB0GYtgFB7MUBKAIAEQEAIAJB0AFqIAJB0AFqQZi2AUGwxQEoAgARAQAgAyADQZi2AUGwxQEoAgARAQAgAkHQAWogAkHQAWpBxIIBQZi2AUG0xQEoAgARAAAMAgsgAkHQAWogAkHQAWpBmLYBQbDFASgCABEBACADIANBmLYBQbDFASgCABEBACACQdABaiACQdABakGIwwFBmLYBQbjFASgCABEAAAwBCyACQfADaiAEQZi2AUHExQEoAgARAQAgAkHwA2ogAkHwA2ogAkEQakGYtgFBvMUBKAIAEQAAIAJBsAJqIAJBEGogBEGYtgFBtMUBKAIAEQAAIAJBwANqIAJBEGogBEGYtgFBuMUBKAIAEQAAIAJB0AFqIAJBsAJqIAJBwANqQZi2AUG8xQEoAgARAAAgAyACQfADakGoxQEoAgARAgAgAkHwA2ogAkHQAWpB1MUBKAIAEQIAIAJBsAJqIANB1MUBKAIAEQIAIAJB8ANqIAJB8ANqIAJBsAJqQfjFASgCABEFABogAkHAA2ogAkHwA2pBmLYBQezFASgCABEBACACQcADaiACQcADakGUtgFByMUBKAIAEQEAIAJB0AFqIAJB0AFqIAJBwANqQZi2AUG8xQEoAgARAAAgAyADIAJBwANqQZi2AUG8xQEoAgARAAAgAyADQZi2AUGwxQEoAgARAQAgAkHQAWogAkHQAWpBiMMBQZi2AUG0xQEoAgARAAALIAJB8ANqIANBmLYBQcTFASgCABEBACACQfADaiACQfADaiACQdABakGYtgFBvMUBKAIAEQAAIAJBwANqIAJB0AFqIANBmLYBQbTFASgCABEAACACQZADaiACQdABaiADQZi2AUG4xQEoAgARAAAgAkGwAmogAkHAA2ogAkGQA2pBmLYBQbzFASgCABEAACAFIAJB8ANqQajFASgCABECACACQbACaiACQbACakGcxgFBmLYBQbTFASgCABEAACAFIAVBzMYBQZi2AUG0xQEoAgARAAAgAkHwA2ogAkGwAmogAkHQAWpBiMUBKAIAEQEAIAJBsAJqIAJB8ANqQZi2AUHsxQEoAgARAQAgBSAHQZi2AUHsxQEoAgARAQAgAkHwAGogAkGwAmpBoNoBQZi2AUG0xQEoAgARAAAgBiAFQdDaAUGYtgFBtMUBKAIAEQAAIAJB8ABqIAJB8ABqEFEEQCAJQX9MBEAgAkHwAGogAkHwAGpBmLYBQbDFASgCABEBACAGIAZBmLYBQbDFASgCABEBAAsgACACQdABakGoxQEoAgARAgAgAEEwaiADQajFASgCABECACAAQeAAaiACQfAAakGoxQEoAgARAgAgAEGQAWogAkGgAWpBqMUBKAIAEQIAIAJB8ANqQYjDAUGoxQEoAgARAgAgAkGgBGoiAUGkxQEoAgARAwAgAEHAAWogAkHwA2pBqMUBKAIAEQIAIABB8AFqIAFBqMUBKAIAEQIAQQEhBSACQQE6AA8MAgsgCEEBaiIIQQNHDQALQQAhBQsgAkGwBWokACAFC+cEAQR/IwBBwARrIgIkACACQeAAaiABQajFASgCABECACACQZABaiIDIAFBMGpBqMUBKAIAEQIAIAJBMGohBCACQeADaiEFIAJB8AFqIQEDQCACQYADaiADQZi2AUHExQEoAgARAQAgAkGAA2ogAkGAA2ogAkHgAGpBmLYBQbzFASgCABEAACACQdACaiACQeAAaiADQZi2AUG0xQEoAgARAAAgAkGgAmogAkHgAGogA0GYtgFBuMUBKAIAEQAAIAJBwAFqIAJB0AJqIAJBoAJqQZi2AUG8xQEoAgARAAAgASACQYADakGoxQEoAgARAgAgAkHAAWogAkHAAWpBnMYBQZi2AUG0xQEoAgARAAAgASABQczGAUGYtgFBtMUBKAIAEQAAIAJBgANqIAJBwAFqIAJB4ABqQYjFASgCABEBACACQcABaiACQYADakGYtgFB7MUBKAIAEQEAIAEgBUGYtgFB7MUBKAIAEQEAIAIgAkHAAWpBoNoBQZi2AUG0xQEoAgARAAAgBCABQdDaAUGYtgFBtMUBKAIAEQAAIAIgAhBRRQRAIAJB4ABqIAJB4ABqQYjDAUGYtgFBtMUBKAIAEQAADAELCyAAIAJB4ABqQajFASgCABECACAAQTBqIANBqMUBKAIAEQIAIABB4ABqIAJBqMUBKAIAEQIAIABBkAFqIAJBMGpBqMUBKAIAEQIAIAJBgANqQYjDAUGoxQEoAgARAgAgAkGwA2oiAUGkxQEoAgARAwAgAEHAAWogAkGAA2pBqMUBKAIAEQIAIABB8AFqIAFBqMUBKAIAEQIAIAJBwARqJAALLQEBfyMAQeAAayIDJAAgAyABEKYBQQBBACAAIANBGCACQQwQHSADQeAAaiQAC5gSAQt/IwBB4A9rIgIkAAJAIAEQjwEEQCACQdAIakGIwwFBqMUBKAIAEQIAIAJBgAlqIgFBpMUBKAIAEQMAIAJBsAlqIgNBpMUBKAIAEQMAIAJB4AlqIgRBpMUBKAIAEQMAIAJBkApqIgVBpMUBKAIAEQMAIAJBwApqIgdBpMUBKAIAEQMAIAJB8ApqIgZBpMUBKAIAEQMAIAJBoAtqIghBpMUBKAIAEQMAIAJB0AtqIglBpMUBKAIAEQMAIAJBgAxqIgpBpMUBKAIAEQMAIAJBsAxqIgtBpMUBKAIAEQMAIAJB4AxqIgxBpMUBKAIAEQMAIAAgAkHQCGpBqMUBKAIAEQIAIABBMGogAUGoxQEoAgARAgAgAEHgAGogA0GoxQEoAgARAgAgAEGQAWogBEGoxQEoAgARAgAgAEHAAWogBUGoxQEoAgARAgAgAEHwAWogB0GoxQEoAgARAgAgAEGgAmogBkGoxQEoAgARAgAgAEHQAmogCEGoxQEoAgARAgAgAEGAA2ogCUGoxQEoAgARAgAgAEGwA2ogCkGoxQEoAgARAgAgAEHgA2ogC0GoxQEoAgARAgAgAEGQBGogDEGoxQEoAgARAgAMAQsgAkHQCGogAUGoxQEoAgARAgAgAkGACWogAUEwakGoxQEoAgARAgAgAkGwCWogAUHgAGoiA0GoxQEoAgARAgAgAkHgCWogAUGQAWoiBEGoxQEoAgARAgAgAkGQCmogAUHAAWoiBUGoxQEoAgARAgAgAkHACmogAUHwAWoiB0GoxQEoAgARAgAgAkHwCmogAUGgAmoiBkGoxQEoAgARAgAgAkGgC2ogAUHQAmoiCEGoxQEoAgARAgAgAkHQC2ogAUGAA2pBqMUBKAIAEQIAIAJBgAxqIAFBsANqQajFASgCABECACACQbAMaiABQeADaiIJQajFASgCABECACACQeAMaiABQZAEaiIBQajFASgCABECACACIABB4ANqNgKMASACIABB4ABqNgKIASACIABBwAFqNgKEASACIABBoAJqIgo2AoABIAIgAEGAA2o2AnwgAiAANgJ4IAogBkGoxQEoAgARAgAgAEHQAmogCEGoxQEoAgARAgAgAigChAEiBiAFQajFASgCABECACAGQTBqIAdBqMUBKAIAEQIAIAIoAogBIgUgA0GoxQEoAgARAgAgBUEwaiAEQajFASgCABECACACKAKMASIDIAlBqMUBKAIAEQIAIANBMGogAUGoxQEoAgARAgAgAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4AGoQDyACQfgAahAPIAJB+ABqEA8gAkH4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IAFBkARqQZi2AUGwxQEoAgARAQALIAIgAEHgA2oiAUGQ7AFBiMUBKAIAEQEAIAEgAkGYtgFB7MUBKAIAEQEADAILIABBkAFqIAFBkAFqQZi2AUGwxQEoAgARAQALIAIgA0GQ6QFBiMUBKAIAEQEAIAMgAkGYtgFB7MUBKAIAEQEAIABBkAFqIARBmLYBQezFASgCABEBAEG0twEoAgAhBSAAQcABaiIDIAFBwAFqQajFASgCABECAAJAIAVBAUcEQCAAQfABaiABQfABakGYtgFBsMUBKAIAEQEADAELIABB8AFqIAFB8AFqQajFASgCABECAAsgAiADQfDpAUGIxQEoAgARAQAgAyACQZi2AUHsxQEoAgARAQAgAEHwAWogBEGYtgFB7MUBKAIAEQEAQbS3ASgCACEFIABBoAJqIgMgAUGgAmpBqMUBKAIAEQIAAkAgBUEBRwRAIABB0AJqIAFB0AJqQZi2AUGwxQEoAgARAQAMAQsgAEHQAmogAUHQAmpBqMUBKAIAEQIACyACIANB0OoBQYjFASgCABEBACADIAJBmLYBQezFASgCABEBACAAQdACaiAEQZi2AUHsxQEoAgARAQBBtLcBKAIAIQUgAEGAA2oiAyABQYADakGoxQEoAgARAgACQCAFQQFHBEAgAEGwA2ogAUGwA2pBmLYBQbDFASgCABEBAAwBCyAAQbADaiABQbADakGoxQEoAgARAgALIAIgA0Gw6wFBiMUBKAIAEQEAIAMgAkGYtgFB7MUBKAIAEQEAIABBsANqIARBmLYBQezFASgCABEBAEG0twEoAgAhBSAAQeADaiIDIAFB4ANqQajFASgCABECAAJAIAVBAUcEQCAAQZAEaiABQZAEakGYtgFBsMUBKAIAEQEADAELIABBkARqIAFBkARqQajFASgCABECAAsgAiADQZDsAUGIxQEoAgARAQAgAyACQZi2AUHsxQEoAgARAQALIABBkARqIARBmLYBQezFASgCABEBACACQcABaiQACxIAQQBBACAAIAFBGCACQQwQHQuOAwEEfyMAQaACayIDJAAgAEHwkgFBqMUBKAIAEQIAIABBMGoiBEGgkwFBqMUBKAIAEQIAIANB4ABqIAAgAUGIxQEoAgARAQAgACADQeAAakGYtgFB7MUBKAIAEQEAIAQgA0HAAWoiBUGYtgFB7MUBKAIAEQEAIANB4ABqIAJBkJIBQYjFASgCABEBACADIANB4ABqQZi2AUHsxQEoAgARAQAgA0EwaiIGIAVBmLYBQezFASgCABEBACAAIAAgA0GYtgFBtMUBKAIAEQAAIAQgBCAGQZi2AUG0xQEoAgARAAAgA0HgAGogACABQYjFASgCABEBACAAIANB4ABqQZi2AUHsxQEoAgARAQAgBCAFQZi2AUHsxQEoAgARAQAgA0HgAGogAkHgAGpBsJEBQYjFASgCABEBACADIANB4ABqQZi2AUHsxQEoAgARAQAgBiAFQZi2AUHsxQEoAgARAQAgACAAIANBmLYBQbTFASgCABEAACAEIAQgBkGYtgFBtMUBKAIAEQAAIANBoAJqJAALyRcBCX8jAEGgBWsiAiQAAkACQCABQcABaiIHQaDFASgCABEEAEUNACABQfABakGgxQEoAgARBABFDQAgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMAIABBkAFqQaTFASgCABEDACAAQcABakGkxQEoAgARAwAgAEHwAWpBpMUBKAIAEQMADAELAkACQEGYxQEoAgAiBUUNACAHKAIAQYjDASgCAEcNAUEBIQYDQCAGIgQgBUYNASAEQQFqIQYgASAEQQJ0IgNqKALAASADQYjDAWooAgBGDQALIAQgBUkNAQsgAUHwAWpBoMUBKAIAEQQAIQkLIAJB4ANqIAFBMGoiA0GYtgFBxMUBKAIAEQEAIAJB4ANqIAJB4ANqIAFBmLYBQbzFASgCABEAACACQcABaiABIANBmLYBQbTFASgCABEAACACQeAAaiABIANBmLYBQbjFASgCABEAACACQaACaiACQcABaiACQeAAakGYtgFBvMUBKAIAEQAAIAJB0AJqIgUgAkHgA2pBqMUBKAIAEQIAIAJB4ANqIAFBkAFqIgRBmLYBQcTFASgCABEBACACQeADaiACQeADaiABQeAAaiIKQZi2AUG8xQEoAgARAAAgAkHgAGogCiAEQZi2AUG0xQEoAgARAAAgAiAKIARBmLYBQbjFASgCABEAACACQcABaiACQeAAaiACQZi2AUG8xQEoAgARAAAgAkHwAWoiBiACQeADakGoxQEoAgARAgAgAkHgAGogASACQcABakGYtgFBtMUBKAIAEQAAIAJBkAFqIgQgAyAGQZi2AUG0xQEoAgARAAAgAkHgA2ogBkGYtgFBxMUBKAIAEQEAIAJB4ANqIAJB4ANqIAJBwAFqQZi2AUG8xQEoAgARAAAgAiACQcABaiAGQZi2AUG0xQEoAgARAAAgAkGwA2ogAkHAAWogBkGYtgFBuMUBKAIAEQAAIAJBwAFqIAIgAkGwA2pBmLYBQbzFASgCABEAACAGIAJB4ANqQajFASgCABECACACQeADaiAEQZi2AUHExQEoAgARAQAgAkHgA2ogAkHgA2ogAkHgAGpBmLYBQbzFASgCABEAACACIAJB4ABqIARBmLYBQbTFASgCABEAACACQbADaiACQeAAaiAEQZi2AUG4xQEoAgARAAAgAkHgAGogAiACQbADakGYtgFBvMUBKAIAEQAAIAQgAkHgA2pBqMUBKAIAEQIAIAJB4ABqIAJB4ABqIAJBoAJqQZi2AUG4xQEoAgARAAAgBCAEIAVBmLYBQbjFASgCABEAACACQeAAaiACQeAAaiACQcABakGYtgFBuMUBKAIAEQAAIAQgBCAGQZi2AUG4xQEoAgARAAAgAkHgAGogAkHgAGogAkHgAGpBmLYBQbTFASgCABEAACAEIAQgBEGYtgFBtMUBKAIAEQAAAkACQAJAAkBB9IECKAIADgIAAQILIAIgAkGgAmpBmLYBQcTFASgCABEBACACQTBqIgMgBUGYtgFBxMUBKAIAEQEAIAJBoAJqIAJBoAJqIAJBmLYBQbTFASgCABEAACAFIAUgA0GYtgFBtMUBKAIAEQAADAILAkAgCQRAIAJBoAJqIAJBoAJqIAdBmLYBQbjFASgCABEAACACQdACaiIDIAMgAUHwAWpBmLYBQbjFASgCABEAAAwBCyACQeADaiABQfABaiIDQZi2AUHExQEoAgARAQAgAkHgA2ogAkHgA2ogB0GYtgFBvMUBKAIAEQAAIAJBsANqIAcgA0GYtgFBtMUBKAIAEQAAIAJBgANqIAcgA0GYtgFBuMUBKAIAEQAAIAIgAkGwA2ogAkGAA2pBmLYBQbzFASgCABEAACACQTBqIgMgAkHgA2pBqMUBKAIAEQIAIAJB4ANqIANBmLYBQcTFASgCABEBACACQeADaiACQeADaiACQZi2AUG8xQEoAgARAAAgAkGwA2ogAiADQZi2AUG0xQEoAgARAAAgAkGAA2ogAiADQZi2AUG4xQEoAgARAAAgAiACQbADaiACQYADakGYtgFBvMUBKAIAEQAAIAMgAkHgA2pBqMUBKAIAEQIAIAJBoAJqIAJBoAJqIAJBmLYBQbjFASgCABEAACACQdACaiIIIAggA0GYtgFBuMUBKAIAEQAACyACIAJBoAJqQZi2AUHExQEoAgARAQAgAkEwaiIDIAVBmLYBQcTFASgCABEBACACQaACaiACQaACaiACQZi2AUG0xQEoAgARAAAgAkHQAmoiCCAIIANBmLYBQbTFASgCABEAAAwBCwJAIAkEQCACQfDXAUGoxQEoAgARAgAgAkEwakGg2AFBqMUBKAIAEQIADAELIAJB4ANqIAFB8AFqIgNBmLYBQcTFASgCABEBACACQeADaiACQeADaiAHQZi2AUG8xQEoAgARAAAgAkGwA2ogByADQZi2AUG0xQEoAgARAAAgAkGAA2ogByADQZi2AUG4xQEoAgARAAAgAiACQbADaiACQYADakGYtgFBvMUBKAIAEQAAIAJBMGoiAyACQeADakGoxQEoAgARAgAgAkHgA2ogA0GYtgFBxMUBKAIAEQEAIAJB4ANqIAJB4ANqIAJBmLYBQbzFASgCABEAACACQbADaiACIANBmLYBQbTFASgCABEAACACQYADaiACIANBmLYBQbjFASgCABEAACACIAJBsANqIAJBgANqQZi2AUG8xQEoAgARAAAgAyACQeADakGoxQEoAgARAgAgAkHgA2ogAkHw1wFBiMUBKAIAEQEAIAIgAkHgA2pBmLYBQezFASgCABEBACADIAJBwARqQZi2AUHsxQEoAgARAQALIAIgAiACQaACakGYtgFBtMUBKAIAEQAAIAJBMGoiAyADIAVBmLYBQbTFASgCABEAACACQaACaiACQaACakGYtgFBxMUBKAIAEQEAIAUgBUGYtgFBxMUBKAIAEQEAIAJBoAJqIAJBoAJqIAJBmLYBQbTFASgCABEAACACQdACaiIIIAggA0GYtgFBtMUBKAIAEQAACyACQeADaiAFQZi2AUHExQEoAgARAQAgAkHgA2ogAkHgA2ogAkGgAmpBmLYBQbzFASgCABEAACACQbADaiACQaACaiAFQZi2AUG0xQEoAgARAAAgAkGAA2ogAkGgAmogBUGYtgFBuMUBKAIAEQAAIAAgAkGwA2ogAkGAA2pBmLYBQbzFASgCABEAACAAQTBqIgUgAkHgA2pBqMUBKAIAEQIAIAAgACACQeAAakGYtgFBuMUBKAIAEQAAIAUgBSAEQZi2AUG4xQEoAgARAAAgACAAIAJB4ABqQZi2AUG4xQEoAgARAAAgBSAFIARBmLYBQbjFASgCABEAAAJAIAkEQCAAQcABaiAKQajFASgCABECACAAQfABaiABQZABakGoxQEoAgARAgAMAQsgAkHgA2ogCiAHQYjFASgCABEBACAAQcABaiACQeADakGYtgFB7MUBKAIAEQEAIABB8AFqIAJBwARqQZi2AUHsxQEoAgARAQALIABBwAFqIgEgAUGYtgFBxMUBKAIAEQEAIABB8AFqIgEgAUGYtgFBxMUBKAIAEQEAIABB4ABqIgEgAkHgAGogAEGYtgFBuMUBKAIAEQAAIABBkAFqIgAgBCAFQZi2AUG4xQEoAgARAAAgAkHgA2ogASACQaACakGIxQEoAgARAQAgASACQeADakGYtgFB7MUBKAIAEQEAIAAgAkHABGpBmLYBQezFASgCABEBACACQcABaiACQcABakGYtgFBxMUBKAIAEQEAIAYgBkGYtgFBxMUBKAIAEQEAIAJBwAFqIAJBwAFqQZi2AUHExQEoAgARAQAgBiAGQZi2AUHExQEoAgARAQAgAkHAAWogAkHAAWpBmLYBQcTFASgCABEBACAGIAZBmLYBQcTFASgCABEBACABIAEgAkHAAWpBmLYBQbjFASgCABEAACAAIAAgBkGYtgFBuMUBKAIAEQAACyACQaAFaiQAC7YDACAAQbCjAUGoxQEoAgARAgAgACAAIAFBmLYBQbzFASgCABEAACAAIABBgKMBQZi2AUG0xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACAAIABB0KIBQZi2AUG0xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACAAIABBoKIBQZi2AUG0xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACAAIABB8KEBQZi2AUG0xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACAAIABBwKEBQZi2AUG0xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACAAIABBkKEBQZi2AUG0xQEoAgARAAAgACAAIAFBmLYBQbzFASgCABEAACAA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IABB4ABqIAJB4ABqQajFASgCABECAAwBCyACQeAAakGgxQEoAgARBAAEQCAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogBEGoxQEoAgARAgAMAQsgAUHgAGohBwJ/QZjFASgCACIFRQRAQQEhBkEBDAELQYjDASgCACIJIAcoAgBGBEBBASEIA0ACQCAFIAgiBEYEQCAFIQQMAQsgBEEBaiEIIAEgBEECdCIGaigCYCAGQYjDAWooAgBGDQELCyAEIAVPIQYLQQAgAigCYCAJRw0AGkEBIQgDQAJAIAUgCCIERgRAIAUhBAwBCyAEQQFqIQggAiAEQQJ0IglqKAJgIAlBiMMBaigCAEYNAQsLIAQgBU8LIQQgBkUEQCADQcABaiAHQZi2AUHAxQEoAgARAQALIAJB4ABqIQUCQCAEBEAgA0GQAWogAUGoxQEoAgARAgACQCAGBEAgA0EwaiACQajFASgCABECAAwBCyADQTBqIAIgA0HAAWpBmLYBQbzFASgCABEAAAsgA0EwaiADQTBqIANBkAFqQZi2AUG4xQEoAgARAAAgA0HgAGogAUEwakGoxQEoAgARAgAMAQsgA0HgAGogBUGYtgFBwMUBKAIAEQEAIANBkAFqIAEgA0HgAGpBmLYBQbzFASgCABEAAAJAIAYEQCADQTBqIAJBqMUBKAIAEQIADAELIANBMGogAiADQcABakGYtgFBvMUBKAIAEQAACyADQTBqIANBMGogA0GQAWpBmLYBQbjFASgCABEAACADQeAAaiADQeAAaiAFQZi2AUG8xQEoAgARAAAgA0HgAGogA0HgAGogAUEwakGYtgFBvMUBKAIAEQAACwJAIAYEQCADQcABaiACQTBqQajFASgCABECAAwBCyADQcABaiADQcABaiAHQZi2AUG8xQEoAgARAAAgA0HAAWogA0HAAWogAkEwakGYtgFBvMUBKAIAEQAACyADQcABaiADQcABaiADQeAAakGYtgFBuMUBKAIAEQAAIANBMGpBoMUBKAIAEQQABEAgA0HAAWpBoMUBKAIAEQQABEAgACABEPEBDAILIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDAAwBCwJAIAYEQCAEBEAgAEHgAGogA0EwakGoxQEoAgARAgAMAgsgAEHgAGogA0EwaiAFQZi2AUG8xQEoAgARAAAMAQsgAEHgAGohAUG8xQEoAgAhAiAEBEAgASAHIANBMGpBmLYBIAIRAAAMAQsgASAHIAVBmLYBIAIRAAAgASABIANBMGpBmLYBQbzFASgCABEAAAsgAyADQTBqQZi2AUHAxQEoAgARAQAgAEEwaiIBIANBwAFqQZi2AUHAxQEoAgARAQAgA0GQAWogA0GQAWogA0GYtgFBvMUBKAIAEQAAIAMgAyADQTBqQZi2AUG8xQEoAgARAAAgASABIANBkAFqQZi2AUG4xQEoAgARAAAgASABIANBkAFqQZi2AUG4xQEoAgARAAAgACABIANBmLYBQbjFASgCABEAACADQZABaiADQZABaiAAQZi2AUG4xQEoAgARAAAgA0GQAWogA0GQAWogA0HAAWpBmLYBQbzFASgCABEAACADIAMgA0HgAGpBmLYBQbzFASgCABEAACABIANBkAFqIANBmLYBQbjFASgCABEAAAsgA0HwAWokAAuhAgECfyMAQYADayIDJAAgAyADQfABaiIEIANB0AJqIAEQZSADQZABaiADIARBmLYBQbzFASgCABEAACADQcABaiIBIARBmLYBQcDFASgCABEBACABIAEgBEGYtgFBvMUBKAIAEQAAIAEgASADQdACakGYtgFBvMUBKAIAEQAAIAIEQCADQdACaiADQeAAaiIEIANBoAJqIAIQZSADIANB0AJqIARBmLYBQbzFASgCABEAACADQTBqIgEgBEGYtgFBwMUBKAIAEQEAIAEgASAEQZi2AUG8xQEoAgARAAAgASABIANBoAJqQZi2AUG8xQEoAgARAAAgA0GQAWogA0GQAWogAxD1AQsgACADQZABahCGASAAIAAQ9AEgA0GAA2okAAvRJAEQfyMAQdCmAmsiAyQAIANBADoA5AQgA0EAOgDQBSADQQE2AuAEIANBADoAvAYgA0EBNgLMBSADQQE2ArgGIANBATYC9AMgA0IBNwOQAyADQQA6APgDIANCATcC/AMgA0IBNwPoBCADQgE3AtQFIANBATYChAMgA0IBNwOgAiADQQA6AIgDQcjMASADQaACaiACEFIgAygChAMhAgJAAkAgAy0AiAMEQCACQQFHDQEgAygCpAJFDQIMAQsCQCACDgIBAAILA0AgAkUNAiACQX9q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DAELAkAgAg4CAQACCwNAIAJFDQIgAkF/aiICQQJ0IANqKAKkAkUNAAsMAQsgA0GgAmogA0GgAmpBtMcBEB4LIANBkANqIANBoAJqEEMgAygC9AMhAgJAAkAgAy0A+AMiBARAQQEhEiACQQFHDQEgAygClANFDQIMAQtBASESAkAgAg4CAQACCwNAIAJFDQIgAkF/aiICQQJ0IANqKAKUA0UNAAsMAQsgAyAEQQFzOgD4A0EAIRILIANBwAZqQaTFASgCABEDACADQfAGakGkxQEoAgARAwAgA0GgB2pBpMUBKAIAEQMAIANB0AdqQaTFASgCABEDACADQYAIakGkxQEoAgARAwAgA0GwCGpBpMUBKAIAEQMAIAMoAuAEIQICQAJAIAMtAOQEIgQEQEEBIRMgAkEBRw0BIAMoAoAERQ0CDAELQQEhEwJAIAIOAgEAAgsDQCACRQ0CIAJBf2oiAkECdCADaigCgARFDQALDAELIAMgBEEBczoA5ARBACETCyADQcAqakGkxQEoAgARAwAgA0HwKmpBpMUBKAIAEQMAIANBoCtqQaTFASgCABEDACADQdArakGkxQEoAgARAwAgA0GALGpBpMUBKAIAEQMAIANBsCxqQaTFASgCABEDACADKALMBSECAkACQCADLQDQBSIEBEBBASEUIAJBAUcNASADKALsBEUNAgwBC0EBIRQCQCACDgIBAAILA0AgAkUNAiACQX9qIgJBAnQgA2ooAuwERQ0ACwwBCyADIARBAXM6ANAFQQAhFAsgA0HAzgBqQaTFASgCABEDACADQfDOAGpBpMUBKAIAEQMAIANBoM8AakGkxQEoAgARAwAgA0HQzwBqQaTFASgCABEDACADQYDQAGpBpMUBKAIAEQMAIANBsNAAakGkxQEoAgARAwAgAygCuAYhAgJAAkAgAy0AvAYiBARAQQEhFSACQQFHDQEgAygC2AVFDQIMAQtBASEVAkAgAg4CAQACCwNAIAJFDQIgAkF/aiICQQJ0IANqKALYBUUNAAsMAQsgAyAEQQFzOgC8BkEAIRULIANBwPIAakGkxQEoAgARAwAgA0Hw8gBqQaTFASgCABEDACADQaDzAGpBpMUBKAIAEQMAIANB0PMAakGkxQEoAgARAwAgA0GA9ABqQaTFASgCABEDACADQbD0AGpBpMUBKAIAEQMAIANB4AhqIhAgAUGoxQEoAgARAgAgA0GQCWogAUEwakGoxQEoAgARAgAgA0HACWogAUHgAGpBqMUBKAIAEQIAIANB8AlqIAFBkAFqQajFASgCABECACADQaAKaiABQcABakGoxQEoAgARAgAgA0HQCmogAUHwAWpBqMUBKAIAEQIAIANBgAtqIQICQAJAAkACQAJAQZiCAigCACIHDgMCAQAECyACIBAgARAJDAILIAIgECABEAoMAQsgAiAQIAEQCwtBmIICKAIAIQcLIANBoA1qIQQCQAJAAkACQCAHDgMCAQADCyAEIAIgARAJDAILIAQgAiABEAoMAQsgBCACIAEQCwsgA0HAD2ohBwJAAkACQAJAAkBBmIICKAIAIgUOAwIBAAQLIAcgBCABEAkMAgsgByAEIAEQCgwBCyAHIAQgARALC0GYggIoAgAhBQsgA0HgEWohCgJAAkACQAJAIAUOAwIBAAMLIAogByABEAkMAgsgCiAHIAEQCgwBCyAKIAcgARALCyADQYAUaiEFAkACQAJAAkACQEGYggIoAgAiDA4DAgEABAsgBSAKIAEQCQwCCyAFIAogARAKDAELIAUgCiABEAsLQZiCAigCACEMCyADQaAWaiEJAkACQAJAAkAgDA4DAgEAAwsgCSAFIAEQCQwCCyAJIAUgARAKDAELIAkgBSABEAsLIANBwBhqIQYCQAJAAkACQAJAQZiCAigCACIIDgMCAQAECyAGIAkgARAJDAILIAYgCSABEAoMAQsgBiAJIAEQCwtBmIICKAIAIQgLIANB4BpqIQwCQAJAAkACQCAIDgMCAQADCyAMIAYgARAJDAILIAwgBiABEAoMAQsgDCAGIAEQCwsgA0GAHWohCAJAAkACQAJAAkBBmIICKAIAIgsOAwIBAAQLIAggDCABEAkMAgsgCCAMIAEQCgwBCyAIIAwgARALC0GYggIoAgAhCwsgA0GgH2ohDQJAAkACQAJAIAsOAwIBAAMLIA0gCCABEAkMAgsgDSAIIAEQCgwBCyANIAggARALCyADQcAhaiELAkACQAJAAkACQEGYggIoAgAiDw4DAgEABAsgCyANIAEQCQwCCyALIA0gARAKDAELIAsgDSABEAsLQZiCAigCACEPCyADQeAjaiEOAkACQAJAAkAgDw4DAgEAAwsgDiALIAEQCQwCCyAOIAsgARAK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JAAgAiABIAFB4ABqIgNBmLYBQeTFASgCABEAACAAIAEgA0GYtgFB6MUBKAIAEQAAQZjFASgCACIBQf////8HcQRAIABB4ABqIAIgAUEDdBADGgsgAkHgAGokAAuuAwETfyAAIAEgAhA5GgJAIAAoAiwiASADKAIsIgJJDQAgASACSwRAIAAgACADEC4aDwsgAygCBCICIAAoAgAiDSADKAIAIg5JaiIBIAJJIAAoAgQiDyABSWoiBCADKAIIaiICIARJIAAoAggiECACSWoiBSADKAIMaiIEIAVJIAAoAgwiESAESWoiBiADKAIQaiIFIAZJIAAoAhAiEiAFSWoiByADKAIUaiIGIAdJIAAoAhQiEyAGSWoiCCADKAIYaiIHIAhJIAAoAhgiFCAHSWoiCSADKAIcaiIIIAlJIAAoAhwiFSAISWoiCiADKAIgaiIJIApJIAAoAiAiFiAJSWoiCyADKAIkaiIKIAtJIAAoAiQiCyAKSWoiDCADKAIoaiIDIAxJQX9BACAAKAIoIgwgA0kbRw0AIABBADYCLCAAIAwgA2s2AiggACALIAprNgIkIAAgFiAJazYCICAAIBUgCGs2AhwgACAUIAdrNgIYIAAgEyAGazYCFCAAIBIgBWs2AhAgACARIARrNgIMIAAgECACazYCCCAAIA8gAWs2AgQgACANIA5rNgIACwuxAQECfyMAQcABayICJAAgAkHgAGogAUGoxQEoAgARAgAgAkGQAWoiAyABQTBqQajFASgCABECACACQTBqIAMgA0HwxQEoAgARBQAaIAIgAkHgAGogA0HwxQEoAgARBQAaIABB4ABqIAJBMGogAkHgAGpB0MUBKAIAEQEAIAJBMGogAkHgAGogA0GYtgFBuMUBKAIAEQAAIAAgAkEwaiACQdDFASgCABEBACACQcABaiQAC5gCAQJ/IwBBgANrIgMkACADQaACaiABQajFASgCABECACADQdACaiIEIAFBMGpBqMUBKAIAEQIAIANBwAFqIAJBqMUBKAIAEQIAIANB8AFqIgEgAkEwakGoxQEoAgARAgAgA0EwaiADQaACaiAEQfDFASgCABEFABogAyADQcABaiABQfDFASgCABEFABogAEHgAGoiAiADQTBqIANB0MUBKAIAEQEAIAAgA0GgAmogA0HAAWpB0MUBKAIAEQEAIANB4ABqIAQgAUHQxQEoAgARAQAgAiACIABB/MUBKAIAEQUAGiACIAIgA0HgAGpB/MUBKAIAEQUAGiAAIAAgA0HgAGpBmLYBQejFASgCABEAACADQYADaiQAC6IBAQR/IwBBMGsiAiQAIAIgAUGAxgEoAgAiAxBYRQRAIAIgASADQZi2AUHMxQEoAgARAAALIAIgAiABQTBqIgRBmLYBQbjFASgCABEAACAAQTBqIgMgBEGAxgEoAgAiBRBYRQRAIAMgBCAFQZi2AUHMxQEoAgARAAALIAMgAyABQZi2AUG0xQEoAgARAAAgACACQajFASgCABECACACQTBqJAALUgECfyMAQTBrIgIkACACIAEgAUEwaiIDQZi2AUG0xQEoAgARAAAgACABIANBmLYBQbjFASgCABEAACAAQTBqIAJBqMUBKAIAEQIAIAJBMGokAAutFQERfyMAQeCtEmsiBCQAIARB3K0SakEANgIAIARBlK0SakEANgIAIARBzKwSakEANgIAIARBhKwSakEANgIAIARBvKsSakEANgIAIARB9KoSakEANgIAIARBrKoSakEANgIAIARB5KkSakEANgIAIARBnKkSakEANgIAIARB1KgSakEANgIAIARBjKgSakEANgIAIARBxKcSakEANgIAIARB/KYSakEANgIAIARBtKYSakEANgIAIARB7KUSakEANgIAIARBpKUSakEANgIAIARB3KQSakEANgIAIARBlKQSakEANgIAIARBzKMSakEANgIAIARBhKMSakEANgIAIARBvKISakEANgIAIARB9KESakEANgIAIARBrKESakEANgIAIARB5KASakEANgIAIARBnKASakEANgIAIARB1J8SakEANgIAIARBjJ8SakEANgIAIARBxJ4SakEANgIAIARB/J0SakEANgIAIARBtJ0SakEANgIAIARB7JwSakEANgIAIARBpJwSakEANgIAIARB3JsSakEANgIAIARBlJsSakEANgIAIARBzJoSakEANgIAIARBhJoSakEANgIAIARBvJkSakEANgIAIARB9JgSakEANgIAIARBrJgSakEANgIAIARB5JcSakEANgIAIARBnJcSakEANgIAIARB1JYSakEANgIAIARBjJYSakEANgIAIARBxJUSakEANgIAIARB/JQSakEANgIAIARBtJQSakEANgIAIARB7JMSakEANgIAIARBpJMSakEANgIAIARB3JISakEANgIAIARBlJISakEANgIAIARBzJESakEANgIAIARBhJESakEANgIAIARBvJASakEANgIAIARB9I8SakEANgIAIARBrI8SakEANgIAIARB5I4SakEANgIAIARBnI4SakEANgIAIARB1I0SakEANgIAIARBjI0SakEANgIAIARBxIwSakEANgIAIARB/IsSakEANgIAIARBtIsSakEANgIAIARB7IoSakEANgIAIARBADYCpIoSIARBADoA9AcgBEHgCGpBADoAACAEQQE2AvAHIARBzAlqQQA6AAAgBEHcCGpBATYCACAEQcgJakEBNgIAIARBATYChAcgBEIBNwOgBiAEQQA6AIgHIARCATcCjAcgBEIBNwP4ByAEQgE3AuQIIARBATYClAYgBEIBNwOwBSAEQQA6AJgGAkAgA0EQIANBEEkbIgtFBEAgABAvDAELIARBsAVqQQRyIRAgBEHoCGohESAEQfwHaiESIARBkAdqIRMgBEGgBmpBBHIhFCAEQcAEakEEciEKA0AgBCACIAZB7ABsaiIDKAIAIgU2ArAFIAUEQCAQIANBBGogBUECdBADGgsgBCADKAJkNgKUBiAEIAMtAGg6AJgGIARBsAVqIARBsAVqQbTHARAaIAQoApQGIQMCQAJAIAQtAJgGBEAgA0EBRw0BIAQoArQFDQEMAgsgAw0BCyAEQbAFaiAEQbAFakG0xwEQHgsgBEGgBmogBEGwBWoQQyAEIAQoAqAGIgM2AsAEIAMEQCAKIBQgA0ECdBADGgsgBCAEKAKEBzYCpAUgBCAELQCIBzoAqAUgBEHfCWogBEHgiRJqIAZBoAJsaiIDIARBwARqECMgAygCRCEMIAQgBCgCjAciBTYCwAQgBQRAIAogEyAFQQJ0EAMaCyAEIAQoAvAHNgKkBSAEIAQtAPQHOgCoBSAEQd8JaiADQcgAaiAEQcAEahAjIAMoAowBIQ0gBCAEKAL4ByIFNgLABCAFBEAgCiASIAVBAnQQAxoLIAQgBCgC3Ag2AqQFIAQgBC0A4Ag6AKgFIARB3wlqIANBkAFqIARBwARqECMgAygC1AEhDiAEIAQoAuQIIgU2AsAEIAUEQCAKIBEgBUECdBADGgsgBCAEKALICTYCpAUgBCAELQDMCToAqAUgBEHfCWogA0HYAWogBEHABGoQIyADKAKcAiEPIAQgASAGQcAEbGoiBRAlIARB4AlqIAZBgJABbGoiAyAFQajFASgCABECACADQTBqIAVBMGpBqMUBKAIAEQIAIANB4ABqIAVB4ABqQajFASgCABECACADQZABaiAFQZABakGoxQEoAgARAgAgA0HAAWogBUHAAWpBqMUBKAIAEQIAIANB8AFqIAVB8AFqQajFASgCABECACADQaACaiAFQaACakGoxQEoAgARAgAgA0HQAmogBUHQAmpBqMUBKAIAEQIAIANBgANqIAVBgANqQajFASgCABECACADQbADaiAFQbADakGoxQEoAgARAgAgA0HgA2ogBUHgA2pBqMUBKAIAEQIAIANBkARqIAVBkARqQajFASgCABECACADQYAkaiIFIAMQBiADQYDIAGoiByAFEAYgA0GA7ABqIAcQBiADQcAEaiIFIAMgBBAHIANBwChqIgcgBRAGIANBwMwAaiIIIAcQBiADQcDwAGogCBAGIANBgAlqIgcgBSAEEAcgA0GALWoiBSAHEAYgA0GA0QBqIgggBRAGIANBgPUAaiAIEAYgA0HADWoiBSAHIAQQByADQcAxaiIHIAUQBiADQcDVAGoiCCAHEAYgA0HA+QBqIAgQBiADQYASaiIHIAUgBBAHIANBgDZqIgUgBxAGIANBgNoAaiIIIAUQBiADQYD+AGogCBAGIANBwBZqIgUgByAEEAcgA0HAOmoiByAFEAYgA0HA3gBqIgggBxAGIANBwIIBaiAIEAYgA0GAG2oiByAFIAQQByADQYA/aiIFIAcQBiADQYDjAGoiCCAFEAYgA0GAhwFqIAgQBiADQcAfaiIFIAcgBBAHIANBwMMAaiIHIAUQBiADQcDnAGoiBSAHEAYgA0HAiwFqIAUQBiAPIA4gDSAMIAkgDCAJSxsiAyANIANLGyIDIA4gA0sbIgMgDyADSxshCSAGQQFqIgYgC0cNAAsgABAvIAlFDQBBACEDA0AgACAAECUgCSADQX9zaiEBQQAhBgNAAkAgBEHgiRJqIAZBoAJsaiICKAJEIAFNDQAgASACaiwAACIFQQBMBEAgBUF/Sg0BIAAgACAEQeAJaiAGQYCQAWxqIAVBAXVBf3NBwARsahAyDAELIAAgACAEQeAJaiAGQYCQAWxqIAVBf2pBAXVBwARsahAHCwJAIAIoAowBIAFNDQAgASACaiwASCIFQQBMBEAgBUF/Sg0BIAAgACAGQYCQAWwgBGogBUEBdUF/c0HABGxqQeAtahAyDAELIAAgACAGQYCQAWwgBGogBUF/akEBdUHABGxqQeAtahAHCwJAIAIoAtQBIAFNDQAgASACaiwAkAEiBUEATARAIAVBf0oNASAAIAAgBkGAkAFsIARqIAVBAXVBf3NBwARsakHg0QBqEDIMAQsgACAAIAZBgJABbCAEaiAFQX9qQQF1QcAEbGpB4NEAahAHCwJAIAIoApwCIAFNDQAgASACaiwA2AEiAkEATARAIAJBf0oNASAAIAAgBkGAkAFsIARqIAJBAXVBf3NBwARsakHg9QBqEDIMAQsgACAAIAZBgJABbCAEaiACQX9qQQF1QcAEbGpB4PUAahAHCyAGQQFqIgYgC0cNAAsgA0EBaiIDIAlHDQALCyAEQeCtEmokACALC8gOAQN/IwBBgJwBayIEJAACQCADBEAgACABIAIQ9wEMAQsgBEH8mwFqQQA2AgAgBEG0mwFqQQA2AgAgBEHsmgFqQQA2AgAgBEEANgKkmgEgBEEAOgD0ByAEQeAIakEAOgAAIARBATYC8AcgBEHMCWpBADoAACAEQdwIakEBNgIAIARByAlqQQE2AgAgBEEBNgKEByAEQgE3A6AGIARBADoAiAcgBEIBNwKMByAEQgE3A/gHIARCATcC5AggBEEBNgKUBiAEQQA2ArQFIARBADoAmAYgBCACKAIAIgM2ArAFIAMEQCAEQbAFakEEciACQQRqIANBAnQQAxoLIAQgAigCZDYClAYgBCACLQBoOgCYBiAEQbAFaiAEQbAFakG0xwEQGiAEKAKUBiECAkACQCAELQCYBgRAIAJBAUcNASAEKAK0BQ0BDAILIAINAQsgBEGwBWogBEGwBWpBtMcBEB4LIARBoAZqIARBsAVqEEMgBCAEKAKgBiIDNgLABCAEQcAEakEEciECIAMEQCACIARBoAZqQQRyIANBAnQQAxoLIAQgBCgChAc2AqQFIAQgBC0AiAc6AKgFIARB3wlqIARB4JkBaiAEQcAEahAjIAQgBCgCjAciAzYCwAQgBCgCpJoBIQYgAwRAIAIgBEGQB2ogA0ECdBADGgsgBCAEKALwBzYCpAUgBCAELQD0BzoAqAUgBEHfCWogBEGomgFqIARBwARqECMgBCAEKAL4ByIDNgLABCAEKALsmgEiBSAGIAUgBksbIQYgAwRAIAIgBEH8B2ogA0ECdBADGgsgBCAEKALcCDYCpAUgBCAELQDgCDoAqAUgBEHfCWogBEHwmgFqIARBwARqECMgBCAEKALkCCIDNgLABCAEKAK0mwEiBSAGIAUgBksbIQYgAwRAIAIgBEHoCGogA0ECdBADGgsgBCAEKALICTYCpAUgBCAELQDMCToAqAUgBEHfCWogBEG4mwFqIARBwARqECMgBCgC/JsBIQIgBCABECUgBEHgCWogAUGoxQEoAgARAgAgBEGQCmogAUEwakGoxQEoAgARAgAgBEHACmogAUHgAGpBqMUBKAIAEQIAIARB8ApqIAFBkAFqQajFASgCABECACAEQaALaiABQcABakGoxQEoAgARAgAgBEHQC2ogAUHwAWpBqMUBKAIAEQIAIARBgAxqIAFBoAJqQajFASgCABECACAEQbAMaiABQdACakGoxQEoAgARAgAgBEHgDGogAUGAA2pBqMUBKAIAEQIAIARBkA1qIAFBsANqQajFASgCABECACAEQcANaiABQeADakGoxQEoAgARAgAgBEHwDWogAUGQBGpBqMUBKAIAEQIAIARB4C1qIgEgBEHgCWoQBiAEQeDRAGoiAyABEAYgBEHg9QBqIAMQBiAEQaAOaiIBIARB4AlqIAQQByAEQaAyaiIDIAEQBiAEQaDWAGoiBSADEAYgBEGg+gBqIAUQBiAEQeASaiIDIAEgBBAHIARB4DZqIgEgAxAGIARB4NoAaiIFIAEQBiAEQeD+AGogBRAGIARBoBdqIgEgAyAEEAcgBEGgO2oiAyABEAYgBEGg3wBqIgUgAxAGIARBoIMBaiAFEAYgBEHgG2oiAyABIAQQByAEQeA/aiIBIAMQBiAEQeDjAGoiBSABEAYgBEHghwFqIAUQBiAEQaAgaiIBIAMgBBAHIARBoMQAaiIDIAEQBiAEQaDoAGoiBSADEAYgBEGgjAFqIAUQBiAEQeAkaiIDIAEgBBAHIARB4MgAaiIBIAMQBiAEQeDsAGoiBSABEAYgBEHgkAFqIAUQBiAEQaApaiIBIAMgBBAHIARBoM0AaiIDIAEQBiAEQaDxAGoiASADEAYgBEGglQFqIAEQBiAAEC8gAiAGIAIgBksbIgZFDQBBACECA0AgACAAECUCQCAEKAKkmgEgBiACQX9zaiIBTQ0AIARB4JkBaiABaiwAACIDQQFOBEAgACAAIARB4AlqIANBf2pBAXVBwARsahAHDAELIANBf0oNACAAIAAgBEHgCWogA0EBdUF/c0HABGxqEDILAkAgBCgC7JoBIAFNDQAgASAEakGomgFqLAAAIgNBAEwEQCADQX9KDQEgACAAIANBAXVBf3NBwARsIARqQeAtahAyDAELIAAgACADQX9qQQF1QcAEbCAEakHgLWoQBwsCQCAEKAK0mwEgAU0NACABIARqQfCaAWosAAAiA0EATARAIANBf0oNASAAIAAgA0EBdUF/c0HABGwgBGpB4NEAahAyDAELIAAgACADQX9qQQF1QcAEbCAEakHg0QBqEAcLAkAgBCgC/JsBIAFNDQAgASAEakG4mwFqLAAAIgFBAEwEQCABQX9KDQEgACAAIAFBAXVBf3NBwARsIARqQeD1AGoQMgwBCyAAIAAgAUF/akEBdUHABGwgBGpB4PUAahAHCyACQQFqIgIgBkcNAAsLIARBgJwBaiQAC4EWARF/IwBBwKsJayIEJAAgBEG8qwlqQQA2AgAgBEH0qglqQQA2AgAgBEGsqglqQQA2AgAgBEHkqQlqQQA2AgAgBEGcqQlqQQA2AgAgBEHUqAlqQQA2AgAgBEGMqAlqQQA2AgAgBEHEpwlqQQA2AgAgBEH8pglqQQA2AgAgBEG0pglqQQA2AgAgBEHspQlqQQA2AgAgBEGkpQlqQQA2AgAgBEHcpAlqQQA2AgAgBEGUpAlqQQA2AgAgBEHMowlqQQA2AgAgBEGEowlqQQA2AgAgBEG8oglqQQA2AgAgBEH0oQlqQQA2AgAgBEGsoQlqQQA2AgAgBEHkoAlqQQA2AgAgBEGcoAlqQQA2AgAgBEHUnwlqQQA2AgAgBEGMnwlqQQA2AgAgBEHEnglqQQA2AgAgBEH8nQlqQQA2AgAgBEG0nQlqQQA2AgAgBEHsnAlqQQA2AgAgBEGknAlqQQA2AgAgBEHcmwlqQQA2AgAgBEGUmwlqQQA2AgAgBEHMmglqQQA2AgAgBEGEmglqQQA2AgAgBEG8mQlqQQA2AgAgBEH0mAlqQQA2AgAgBEGsmAlqQQA2AgAgBEHklwlqQQA2AgAgBEGclwlqQQA2AgAgBEHUlglqQQA2AgAgBEGMlglqQQA2AgAgBEHElQlqQQA2AgAgBEH8lAlqQQA2AgAgBEG0lAlqQQA2AgAgBEHskwlqQQA2AgAgBEGkkwlqQQA2AgAgBEHckglqQQA2AgAgBEGUkglqQQA2AgAgBEHMkQlqQQA2AgAgBEGEkQlqQQA2AgAgBEG8kAlqQQA2AgAgBEH0jwlqQQA2AgAgBEGsjwlqQQA2AgAgBEHkjglqQQA2AgAgBEGcjglqQQA2AgAgBEHUjQlqQQA2AgAgBEGMjQlqQQA2AgAgBEHEjAlqQQA2AgAgBEH8iwlqQQA2AgAgBEG0iwlqQQA2AgAgBEHsiglqQQA2AgAgBEGkiglqQQA2AgAgBEHciQlqQQA2AgAgBEGUiQlqQQA2AgAgBEHMiAlqQQA2AgAgBEEANgKEiAkgBEEAOgDUBSAEQQA6AMAGIARBATYC0AUgBEEAOgCsByAEQQE2ArwGIARBATYCqAcgBEEBNgLkBCAEQgE3A4AEIARBADoA6AQgBEIBNwLsBCAEQgE3A9gFIARCATcCxAYgBEEBNgL0AyAEQgE3A5ADIARBADoA+AMgA0EQIANBEEkbIgsEQCAEQZADakEEciEQIARByAZqIREgBEHcBWohEiAEQfAEaiETIARBgARqQQRyIRQgBEGgAmpBBHIhDANAIAQgAiAJQewAbGoiAygCACIFNgKQAyAFBEAgECADQQRqIAVBAnQQAxoLIAQgAygCZDYC9AMgBCADLQBoOgD4AyAEQZADaiAEQZADakG0xwEQGiAEKAL0AyEDAkACQCAELQD4AwRAIANBAUcNASAEKAKUAw0BDAILIAMNAQsgBEGQA2ogBEGQA2pBtMcBEB4LIARBgARqIARBkANqEEMgBCAEKAKABCIFNgKgAiAJQaACbCIKIARBwIcJamohAyAFBEAgDCAUIAVBAnQQAxoLIAQgBCgC5AQ2AoQDIAQgBC0A6AQ6AIgDIARBvwdqIAMgBEGgAmoQIyADKAJEIQcgBCAEKALsBCIFNgKgAiAFBEAgDCATIAVBAnQQAxoLIAQgBCgC0AU2AoQDIAQgBC0A1AU6AIgDIARBvwdqIANByABqIARBoAJqECMgAygCjAEhCCAEIAQoAtgFIgU2AqACIAUEQCAMIBIgBUECdBADGgsgBCAEKAK8BjYChAMgBCAELQDABjoAiAMgBEG/B2ogA0GQAWogBEGgAmoQIyADKALUASENIAQgBCgCxAYiBTYCoAIgBQRAIAwgESAFQQJ0EAMaCyAEIAQoAqgHNgKEAyAEIAQtAKwHOgCIAyAEQb8HaiADQdgBaiAEQaACahAjIAMoApwCIQ8gASAKaiEFAkACQAJAAkBBmIICKAIADgMAAQIDCyAEIAUQEQwCCyAEIAUQEAwBCyAEIAUQFAsgByAGSyEKIARBwAdqIAlBgMgAbGoiAyAFQajFASgCABECACADQTBqIAVBMGpBqMUBKAIAEQIAIANB4ABqIAVB4ABqQajFASgCABECACADQZABaiAFQZABakGoxQEoAgARAgAgA0HAAWogBUHAAWpBqMUBKAIAEQIAIANB8AFqIAVB8AFqQajFASgCABECACADQYASaiIFIAMQBSADQYAkaiIOIAUQBSADQYA2aiAOEAUgA0GgAmohBQJAAkACQAJAQZiCAigCAA4DAAECAwsgBSADIAQQCwwCCyAFIAMgBBAKDAELIAUgAyAEEAkLIAcgBiAKGyEHIANBoBRqIgYgBRAFIANBoCZqIgogBhAFIANBoDhqIAoQBSADQcAEaiEGAkACQAJAAkBBmIICKAIADgMCAQADCyAGIAUgBBAJDAILIAYgBSAEEAoMAQsgBiAFIAQQCwsgCCAHSyEKIANBwBZqIgUgBhAFIANBwChqIg4gBRAFIANBwDpqIA4QBSADQeAGaiEFAkACQAJAAkBBmIICKAIADgMCAQADCyAFIAYgBBAJDAILIAUgBiAEEAoMAQsgBSAGIAQQCwsgCCAHIAobIQcgA0HgGGoiBiAFEAUgA0HgKmoiCCAGEAUgA0HgPGogCBAFIANBgAlqIQYCQAJAAkACQEGYggIoAgAOAwIBAAMLIAYgBSAEEAkMAgsgBiAFIAQQCgwBCyAGIAUgBBALCyANIAdLIQggA0GAG2oiBSAGEAUgA0GALWoiCiAFEAUgA0GAP2ogChAFIANBoAtqIQUCQAJAAkACQEGYggIoAgAOAwIBAAMLIAUgBiAEEAkMAgsgBSAGIAQQCgwBCyAFIAYgBBALCyANIAcgCBshByADQaAdaiIGIAUQBSADQaAvaiIIIAYQBSADQaDBAGogCBAFIANBwA1qIQYCQAJAAkACQEGYggIoAgAOAwIBAAMLIAYgBSAEEAkMAgsgBiAFIAQQCgwBCyAGIAUgBBALCyAPIAdLIQggA0HAH2oiBSAGEAUgA0HAMWoiDSAFEAUgA0HAwwBqIA0QBSADQeAPaiEFAkACQAJAAkBBmIICKAIADgMCAQADCyAFIAYgBBAJDAILIAUgBiAEEAoMAQsgBSAGIAQQCwsgDyAHIAgbIQYgA0HgIWoiByAFEAUgA0HgM2oiBSAHEAUgA0HgxQBqIAUQBSAJQQFqIgkgC0cNAAsLIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDACAAQZABakGkxQEoAgARAwAgAEHAAWpBpMUBKAIAEQMAIABB8AFqQaTFASgCABEDAAJAIAZFDQBBACEBIAsEQANAIAFBf3MhAgJAAkACQAJAQZiCAigCAA4DAgEAAwsgACAAEBQMAgsgACAAEBAMAQsgACAAEBELIAIgBmohAkEAIQMDQCAAIARBwAdqIANBgMgAbGoiBSAEQcCHCWogA0GgAmxqIgkgAhAzIAAgBUGAEmogCUHIAGogAhAzIAAgBUGAJGogCUGQAWogAhAzIAAgBUGANmogCUHYAWogAhAzIANBAWoiAyALRw0ACyABQQFqIgEgBkcNAAwCCwALA0ACQAJAAkACQEGYggIoAgAOAwABAgMLIAAgABARDAILIAAgABAQDAELIAAgABAUCyABQQFqIgEgBkcNAAsLIARBwKsJaiQAIAsLlQ8BEH8jAEHg0QBrIgQkAAJAIAMEQCAAIAEgAhD5AQwBCyAEQdzRAGpBADYCACAEQZTRAGpBADYCACAEQczQAGpBADYCACAEQQA2AoRQIARBADoA1AUgBEEAOgDABiAEQQE2AtAFIARBADoArAcgBEEBNgK8BiAEQQE2AqgHIARBATYC5AQgBEIBNwOABCAEQQA6AOgEIARCATcC7AQgBEIBNwPYBSAEQgE3AsQGIARBATYC9AMgBEEANgKUAyAEQQA6APgDIAQgAigCACIDNgKQAyADBEAgBEGQA2pBBHIgAkEEaiADQQJ0EAMaCyAEIAIoAmQ2AvQDIAQgAi0AaDoA+AMgBEGQA2ogBEGQA2pBtMcBEBogBCgC9AMhAgJAAkAgBC0A+AMEQCACQQFHDQEgBCgClAMNAQwCCyACDQELIARBkANqIARBkANqQbTHARAeCyAEQYAEaiAEQZADahBDIAQgBCgCgAQiAzYCoAIgBEGgAmpBBHIhAiADBEAgAiAEQYAEakEEciADQQJ0EAMaCyAEIAQoAuQENgKEAyAEIAQtAOgEOgCIAyAEQb8HaiAEQcDPAGogBEGgAmoQIyAEIAQoAuwEIgM2AqACIAQoAoRQIQUgAwRAIAIgBEHwBGogA0ECdBADGgsgBCAEKALQBTYChAMgBCAELQDUBToAiAMgBEG/B2ogBEGI0ABqIg0gBEGgAmoQIyAEIAQoAtgFIgM2AqACIAQoAsxQIQYgAwRAIAIgBEHcBWogA0ECdBADGgsgBCAEKAK8BjYChAMgBCAELQDABjoAiAMgBEG/B2ogBEHQ0ABqIg4gBEGgAmoQIyAEIAQoAsQGIgM2AqACIAQoApRRIQggAwRAIAIgBEHIBmogA0ECdBADGgsgAUHwAWohAiABQcABaiEJIAFBkAFqIQogAUHgAGohCyABQTBqIQcgBEGwCWohDCAEQYAJaiEPIARB0AhqIRAgBEGgCGohESAEQfAHaiESIAQgBCgCqAc2AoQDIAQgBC0ArAc6AIgDIARBvwdqIARBmNEAaiITIARBoAJqECMgBCgC3FEhAwJAAkACQAJAQZiCAigCAA4DAAECAwsgBCABEBEMAgsgBCABEBAMAQsgBCABEBQLIARBwAdqIAFBqMUBKAIAEQIAIBIgB0GoxQEoAgARAgAgESALQajFASgCABECACAQIApBqMUBKAIAEQIAIA8gCUGoxQEoAgARAgAgDCACQajFASgCABECACAEQcAZaiIJIARBwAdqEAUgBEHAK2oiCiAJEAUgBEHAPWoiCyAKEAUgBEHgCWohAQJAAkACQAJAQZiCAigCAA4DAAECAwsgASAEQcAHaiAEEAsMAgsgASAEQcAHaiAEEAoMAQsgASAEQcAHaiAEEAkLIAYgBUshByAEQeAbaiICIAEQBSAEQeAtaiIMIAIQBSAEQeA/aiAMEAUgBEGADGohAgJAAkACQAJAQZiCAigCAA4DAgEAAwsgAiABIAQQCQwCCyACIAEgBBAKDAELIAIgASAEEAsLIAYgBSAHGyEFIARBgB5qIgEgAhAFIARBgDBqIgYgARAFIARBgMIAaiAGEAUgBEGgDmohAQJAAkACQAJAQZiCAigCAA4DAgEAAwsgASACIAQQCQwCCyABIAIgBBAKDAELIAEgAiAEEAsLIAggBUshBiAEQaAgaiICIAEQBSAEQaAyaiIHIAIQBSAEQaDEAGogBxAFIARBwBBqIQICQAJAAkACQEGYggIoAgAOAwIBAAMLIAIgASAEEAkMAgsgAiABIAQQCgwBCyACIAEgBBALCyAIIAUgBhshBSAEQcAiaiIBIAIQBSAEQcA0aiIGIAEQBSAEQcDGAGogBhAFIARB4BJqIQECQAJAAkACQEGYggIoAgAOAwIBAAMLIAEgAiAEEAkMAgsgASACIAQQCgwBCyABIAIgBBALCyADIAVLIQYgBEHgJGoiAiABEAUgBEHgNmoiCCACEAUgBEHgyABqIAgQBSAEQYAVaiECAkACQAJAAkBBmIICKAIADgMCAQADCyACIAEgBBAJDAILIAIgASAEEAoMAQsgAiABIAQQCwsgAyAFIAYbIQMgBEGAJ2oiASACEAUgBEGAOWoiBSABEAUgBEGAywBqIAUQBSAEQaAXaiEBAkACQAJAAkBBmIICKAIADgMCAQADCyABIAIgBBAJDAILIAEgAiAEEAoMAQsgASACIAQQCwsgBEGgKWoiAiABEAUgBEGgO2oiASACEAUgBEGgzQBqIAEQBUEAIQIgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMAIABBkAFqQaTFASgCABEDACAAQcABakGkxQEoAgARAwAgAEHwAWpBpMUBKAIAEQMAIANFDQADQCADIAJBf3NqIQECQAJAAkACQEGYggIoAgAOAwABAgMLIAAgABARDAILIAAgABAQDAELIAAgABAUCyAAIARBwAdqIARBwM8AaiABEDMgACAJIA0gARAzIAAgCiAOIAEQMyAAIAsgEyABEDMgAkEBaiICIANHDQALCyAEQeDRAGokAAvlDwEIfyMAQeAYayIEJAACQCADBEAgACABIAIQ+gEMAQsgBEHcGGpBADYCACAEQQA2AtQXIARBADoAxAQgBEEBNgLABCAEQQE2AtQDIARCATcD8AIgBEEAOgDYAyAEQgE3AtwDIARBATYC5AIgBEEANgKEAiAEQQA6AOgCIAQgAigCACIDNgKAAiADBEAgBEGAAmpBBHIgAkEEaiADQQJ0EAMaCyAEIAIoAmQ2AuQCIAQgAi0AaDoA6AIgBEGAAmogBEGAAmpBtMcBEBogBCgC5AIhAgJAAkAgBC0A6AIEQCACQQFHDQEgBCgChAINAQwCCyACDQELIARBgAJqIARBgAJqQbTHARAeCyAEQfACaiAEQYACahBjIAQgBCgC8AIiAjYCkAEgBEGQAWpBBHIhAyACBEAgAyAEQfACakEEciACQQJ0EAMaCyAEIAQoAtQDNgL0ASAEIAQtANgDOgD4ASAEQc8EaiAEQdAWaiAEQZABahBZIAQgBCgC3AMiAjYCkAEgBCgC1BchBSACBEAgAyAEQeADaiACQQJ0EAMaCyABQeAAaiEHIAFBMGohCCAEQbAOaiEJIARBgA5qIQogBEHQDWohCyAEQbAFaiECIARBgAVqIQMgBCAEKALABDYC9AEgBCAELQDEBDoA+AEgBEHPBGogBEHYF2ogBEGQAWoQWSAEKALcGCEGAkACQAJAAkBB7IECKAIADgMAAQIDCyAEIAEQEwwCCyAEIAEQEgwBCyAEIAEQFQsgBEHQBGogAUGoxQEoAgARAgAgAyAIQajFASgCABECACACIAdBqMUBKAIAEQIAIAsgBEHQBGpBhNsBQZi2AUG8xQEoAgARAAAgCiADQajFASgCABECACAJIAJBqMUBKAIAEQIAIARB4AVqIQECQAJAAkACQEHsgQIoAgAOAwABAgMLIAEgBEHQBGogBBAODAILIAEgBEHQBGogBBANDAELIAEgBEHQBGogBBAMCyAEQeAOaiABQYTbAUGYtgFBvMUBKAIAEQAAIARBkA9qIARBkAZqQajFASgCABECACAEQcAPaiAEQcAGakGoxQEoAgARAgAgBEHwBmohAgJAAkACQAJAQeyBAigCAA4DAgEAAwsgAiABIAQQDAwCCyACIAEgBBANDAELIAIgASAEEA4LIARB8A9qIAJBhNsBQZi2AUG8xQEoAgARAAAgBEGgEGogBEGgB2pBqMUBKAIAEQIAIARB0BBqIARB0AdqQajFASgCABECACAEQYAIaiEBAkACQAJAAkBB7IECKAIADgMCAQADCyABIAIgBBAMDAILIAEgAiAEEA0MAQsgASACIAQQDgsgBEGAEWogAUGE2wFBmLYBQbzFASgCABEAACAEQbARaiAEQbAIakGoxQEoAgARAgAgBEHgEWogBEHgCGpBqMUBKAIAEQIAIARBkAlqIQICQAJAAkACQEHsgQIoAgAOAwIBAAMLIAIgASAEEAwMAgsgAiABIAQQDQwBCyACIAEgBBAOCyAEQZASaiACQYTbAUGYtgFBvMUBKAIAEQAAIARBwBJqIARBwAlqQajFASgCABECACAEQfASaiAEQfAJakGoxQEoAgARAgAgBEGgCmohAQJAAkACQAJAQeyBAigCAA4DAgEAAwsgASACIAQQDAwCCyABIAIgBBANDAELIAEgAiAEEA4LIAYgBUshAyAEQaATaiABQYTbAUGYtgFBvMUBKAIAEQAAIARB0BNqIARB0ApqQajFASgCABECACAEQYAUaiAEQYALakGoxQEoAgARAgAgBEGwC2ohAgJAAkACQAJAQeyBAigCAA4DAgEAAwsgAiABIAQQDAwCCyACIAEgBBANDAELIAIgASAEEA4LIAYgBSADGyEDIARBsBRqIAJBhNsBQZi2AUG8xQEoAgARAAAgBEHgFGogBEHgC2pBqMUBKAIAEQIAIARBkBVqIARBkAxqQajFASgCABECACAEQcAMaiEBAkACQAJAAkBB7IECKAIADgMCAQADCyABIAIgBBAMDAILIAEgAiAEEA0MAQsgASACIAQQDgtBACECIARBwBVqIAFBhNsBQZi2AUG8xQEoAgARAAAgBEHwFWogBEHwDGpBqMUBKAIAEQIAIARBoBZqIARBoA1qQajFASgCABECACAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgA0UNAANAIAMgAkF/c2ohAQJAAkACQAJAQeyBAigCAA4DAAECAwsgACAAEBMMAgsgACAAEBIMAQsgACAAEBULAkAgBCgC1BcgAU0NACAEQdAWaiABaiwAACIFQQFOBEAgBEHQBGogBUF/akEBdUGQAWxqIQUCQAJAAkBB7IECKAIADgMAAQIECyAAIAAgBRAODAMLIAAgACAFEA0MAgsgACAAIAUQDAwBCyAFQX9KDQAgACAEQdAEaiAFQQF1QX9zQZABbGoQRAsCQCAEKALcGCABTQ0AIAEgBGpB2BdqLAAAIgFBAEwEQCABQX9KDQEgACABQQF1QX9zQZABbCAEakHQDWoQRAwBCyABQX9qQQF1QZABbCAEakHQDWohAQJAAkACQEHsgQIoAgAOAwIBAAMLIAAgACABEAwMAgsgACAAIAEQDQwBCyAAIAAgARAOCyACQQFq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NwIAQdS7AUEBNgIAQfC6AUIBNwIAQey6AUEAOgAAQdi7AUEAOgAAQdjCAUEAQb8DEBZBmMYBQQE2AgALCzsAIABBhLUBQajFASgCABECACAAQTBqQbS1AUGoxQEoAgARAgAgAEHgAGpB5LUBQajFASgCABECAEEACw8AQQAgACABEJMBQQFzawtwAQV/AkACQEGYxQEoAgAiA0UNACAAKAIAQYjDASgCAEcNAUEBIQQDQCAEIgEgA0YNASABQQFqIQQgACABQQJ0IgVqKAIAIAVBiMMBaigCAEYNAAsgASADSQ0BCyAAQTBqQaDFASgCABEEACECCyACCyUBAX8gAEGgxQEoAgARBAAEfyAAQTBqQaDFASgCABEEAAVBAAsLrAEBBX9BmMUBKAIAIgNFBEBBAQ8LAkAgACgCACABKAIARw0AQQEhBAJAA0AgBCICIANGDQEgAkEBaiEEIAAgAkECdCIGaigCACABIAZqKAIARg0ACyACIANJDQELIAAoAjAgASgCMEcNAEEBIQQDQAJAIAMgBCICRgRAIAMhAgwBCyACQQFqIQQgACACQQJ0IgVqKAIwIAEgBWooAjBGDQELCyACIANPIQULIAULHQAgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwALlQEAAkAgASgCAA0AIAEoAgQNACABKAIIDQAgASgCDA0AIAEoAhANACABKAIUDQAgASgCGA0AIAEoAhwNACABKAIgDQAgASgCJA0AIAEoAigNACABKAIsDQAgACABRwRAIABCADcCACAAQgA3AiggAEIANwIgIABCADcCGCAAQgA3AhAgAEIANwIICw8LIAAgAiABEC4aC3oBAn8jAEEgayIDJAAgA0EANgIYIAMgATYCFCADIAA2AhAgAkEwaiIAIAJBzIECLQAAIgEbIANBD2ogA0EQakGABBAXIAMtAA8EQCACIAAgARsgA0EPaiADQRBqQYAEEBcgAygCGEEAIAMtAA8bIQQLIANBIGokACAEC3oBAn8jAEEgayIDJAAgA0EANgIYIAMgAjYCFCADIAE2AhAgAEEwaiIBIABBzIECLQAAIgIbIANBD2ogA0EQakGABBAEIAMtAA8EQCAAIAEgAhsgA0EPaiADQRBqQYAEEAQgAygCGEEAIAMtAA8bIQQLIANBIGokACAEC84BAQN/AkACQEH4hQEoAgBBAUcNAEHEhAEoAgAhAQJAAn9ByIQBLQAABEAgAUEBR0HkgwEoAgBBAEdyDAELIAFBAUYNASABRQshAyABRQ0CCwJAAkADQCABIgJFDQEgAkF/aiIBQQJ0QZSCAWooAtABRQ0ACyACQQFLDQELQQEhAiAAIABB5IMBKAIAIAMQPQ0BCyAAIABB5IMBIAIgAxA3Cw8LIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDAAvCBwECfyMAQdABayICJAAgAkEPaiABEHchAwJ/QQAgAi0AD0UNABpBACABQaDFASgCABEEAA0AGiACQRBqIAFBmLYBQcDFASgCABEBACACQRBqIAJBEGpB7NkBQZi2AUG0xQEoAgARAAAgAkEQaiACQRBqQYjDAUGYtgFBtMUBKAIAEQAAQQAgAkEQakGgxQEoAgARBAANABogAkEQaiACQRBqQZS2AUHIxQEoAgARAQAgAkEQaiACQRBqQZSCAUGYtgFBvMUBKAIAEQAAIAJBEGogAkEQaiABQZi2AUG8xQEoAgARAAAgAkHwAGogASACQRBqQZi2AUG8xQEoAgARAAAgAkHwAGogAkHwAGpBmLYBQbDFASgCABEBACACQfAAaiACQfAAakHEggFBmLYBQbTFASgCABEAACACQaABaiACQfAAakGYtgFBwMUBKAIAEQEAIAJBoAFqIAJBoAFqQbjZAUGYtgFBtMUBKAIAEQAAIAJBoAFqIAJBoAFqIAJB8ABqQZi2AUG8xQEoAgARAAAgAkFAayACQaABakHs2QFBmLYBQbTFASgCABEAAAJAIAJBQGsgAkFAaxAkDQAgAkHwAGogAkHwAGpBmLYBQbDFASgCABEBACACQfAAaiACQfAAakGIwwFBmLYBQbjFASgCABEAACACQaABaiACQfAAakGYtgFBwMUBKAIAEQEAIAJBoAFqIAJBoAFqQbjZAUGYtgFBtMUBKAIAEQAAIAJBoAFqIAJBoAFqIAJB8ABqQZi2AUG8xQEoAgARAAAgAkFAayACQaABakHs2QFBmLYBQbTFASgCABEAACACQUBrIAJBQGsQJA0AIAJB8ABqIAJBEGpBmLYBQcDFASgCABEBACACQfAAaiACQfAAakGUtgFByMUBKAIAEQEAIAJB8ABqIAJB8ABqQYjDAUGYtgFBtMUBKAIAEQAAIAJBoAFqIAJB8ABqQZi2AUHAxQEoAgARAQAgAkGgAWogAkGgAWpBuNkBQZi2AUG0xQEoAgARAAAgAkGgAWogAkGgAWogAkHwAGpBmLYBQbzFASgCABEAACACQUBrIAJBoAFqQezZAUGYtgFBtMUBKAIAEQAAQQAgAkFAayACQUBrECRFDQEaCyADQX9MBEAgAkFAayACQUBrQZi2AUGwxQEoAgARAQALIAAgAkHwAGpBqMUBKAIAEQIAIABBMGogAkFAa0GoxQEoAgARAgAgAEHgAGpBiMMBQajFASgCABECACACQQE6AA9BAQshACACQdABaiQAIAALNQEBfyMAQRBrIgIkACACQQ9qIAAgARCZASACLQAPIQAgAkEQaiQAIABBGHRBgICAeGpBGHULLwEBfyMAQUBqIgMkACAAIAMgA0HAACABIAJBjMYBKAIAEQYAEF4gA0FAayQAQQALoAEBBX8jAEFAaiICJAAgAkGYxQEoAgAiAzYCDAJAQZXGAS0AAARAIAJBEGoiBCAAQbjDAUGYtgFBvMUBKAIAEQAAQZjFASgCACEDDAELIAAhBAsgAiAENgIIAkADQCADIgBFDQEgBCAAQX9qIgNBAnQiAWooAgAiBSABQdjCAWooAgAiAUYNAAsgBSABTyEBCyACQUBrJAAgAEUgAXJBAXELYQECfyMAQUBqIgEkACABQZjFASgCADYCDAJAQZXGAS0AAARAIAFBEGoiAiAAQbjDAUGYtgFBvMUBKAIAEQAADAELIAAhAgsgASACNgIIIAIoAgAhACABQUBrJAAgAEEBcQtbAAJAIAAoAgANACAAKAIEDQAgACgCCA0AIAAoAgwNACAAKAIQDQAgACgCFA0AIAAoAhgNACAAKAIcDQAgACgCIA0AIAAoAiQNACAAKAIoDQAgACgCLEUPC0EAC2cBBH9BmMUBKAIAIgJFBEBBAQ8LIAAoAgBBiMMBKAIARgR/QQEhAwNAAkAgAiADIgFGBEAgAiEBDAELIAFBAWohAyAAIAFBAnQiBGooAgAgBEGIwwFqKAIARg0BCwsgASACTwVBAAsLDgAgAEGgxQEoAgARBAALYwEEf0GYxQEoAgAiA0UEQEEBDwsgACgCACABKAIARgR/QQEhBANAAkAgAyAEIgJGBEAgAyECDAELIAJBAWohBCAAIAJBAnQiBWooAgAgASAFaigCAEYNAQsLIAIgA08FQQALC0wBBH9BmMUBKAIAIQICQANAIAIiA0UNASAAIANBf2oiAkECdCIBaigCACIEIAFBmLYBaigCACIBRg0ACyAEIAFJIQELIAEgA0EAR3ELtQIBB38jAEFAaiIFJAAgBUGYxQEoAgAiBjYCDAJAQZXGAS0AAARAIAVBEGoiByAAQbjDAUGYtgFBvMUBKAIAEQAAIAUoAgwhBgwBCyAAIQcLIAUgBzYCCCAFIAZBAnQiA0EPakFwcWsiBCQAAkAgBkUNAEEAIQADQCAAIARqIAcgCEECdGooAgAiCToAACAEIABBAXJqIAlBCHY6AAAgBCAAQQJyaiAJQRB2OgAAIAQgAEEDcmogCUEYdjoAACAAQQRqIQAgCEEBaiIIIAZHDQALIAMgAE0NACAAIARqQQAgAyAAaxAWCwNAAkAgAyIARQRAQQEhAAwBCyAEIABBf2oiA2otAABFDQELC0EAIQMgACACTQRAIAEgBCAAQQEgAEEBSxsQAxogACEDCyAFQUBrJAAgAwsLACACIAAgARCtAgt/AQJ/IwBB0ABrIgMkAAJ/IAJBwQBPBEAgA0EAOgAPQX8MAQsgAgRAA0AgA0EQaiAEQX9zIAJqaiABIARqLQAAOgAAIARBAWoiBCACRw0ACwsgACADQQ9qIANBEGogAhA1IAMtAA9BGHRBgICAeGpBGHULIQQgA0HQAGokACAEC00BAX8jAEEQayIDJAACfyACQcEATwRAIANBADoAD0F/DAELIAAgA0EPaiABIAIQNSADLQAPQRh0QYCAgHhqQRh1CyECIANBEGokACACCwwAIAAgASACEF5BAAssACAAQgA3AgAgAEIANwIoIABCADcCICAAQgA3AhggAEIANwIQIABCADcCCAsOACAAQaTFASgCABEDAAtPAQF/IwBBIGsiAyQAIAMgATYCFCADIAA2AhAgA0EANgIYIAIgA0EPaiADQRBqQYAEEBcgAy0ADyEAIAMoAhghASADQSBqJAAgAUEAIAAbC08BAX8jAEEgayIDJAAgAyACNgIUIAMgATYCECADQQA2AhggACADQQ9qIANBEGpBgAQQBCADLQAPIQAgAygCGCEBIANBIGokACABQQAgABsLUQEBfyMAQSBrIgQkACAEIAI2AhQgBCABNgIQIARBADYCGCAAIARBD2ogBEEQaiADEAQgBCgCGCEAIAQtAA8hASAEQSBqJABBACABRSAARXJrC2gBAn8jAEEgayIEJAAgBEEANgIYIAQgADYCECAEIAE2AhQgAiAEQQ9qIARBEGogAxAXAkAgBCgCGEEAIAQtAA8bIgJFDQAgAiABQX9qRg0AIAAgAmpBADoAACACIQULIARBIGokACAFC5cCAQN/IwBB8ABrIgEkAAJAAkACfwJAIAAEQCABQaiBASgCACICNgIAIAIEQCABQQRyQayBASACQQJ0EAMaCyABQYyCASgCACIANgJkIAFBkIIBLQAAIgM6AGggAwRAQQEgAEEBRw0DGkEBIQBBASABKAIEDQMaDAQLQQAgAEEBRw0CGgwBC0EBIQIgAUEBNgJkIAFCATcDACABQQA6AGgLQQEhAANAIABFDQIgASAAQX9qIgBBAnRqKAIERQ0AC0EBIQBBAAshA0Hk7QEgAjYCAEGUggJBAToAACACBEBB6O0BIAFBBHIgAkECdBADGgtBzO4BIAM6AABByO4BIAA2AgAMAQtBlIICQQA6AAALIAFB8ABqJAALoQIBA38jAEHwAGsiASQAAkBBuYABLQAARQ0AAkACfwJAIAAEQCABQaiBASgCACICNgIAIAIEQCABQQRyQayBASACQQJ0EAMaCyABQYyCASgCACIANgJkIAFBkIIBLQAAIgM6AGggAwRAQQEgAEEBRw0DGkEBIQBBASABKAIEDQMaDAQLQQAgAEEBRw0CGgwBC0EBIQIgAUEBNgJkIAFCATcDACABQQA6AGgLQQEhAANAIABFDQIgASAAQX9qIgBBAnRqKAIERQ0AC0EBIQBBAAshA0H07AEgAjYCAEHggQJBAToAACACBEBB+OwBIAFBBHIgAkECdBADGgtB3O0BIAM6AABB2O0BIAA2AgAMAQtB4IECQQA6AAALIAFB8ABqJAALegAgACABKAIANgIAIAAgASgCBDYCBCAAIAEoAgg2AgggACABKAIMNgIMIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAAgASgCHDYCHCAAIAEoAiA2AiAgACABKAIkNgIkIAAgASgCKDYCKCAAIAEoAiw2AiwLoAQBB38jAEGgAmsiBSQAAkACQAJAAkAgAw4CAgABCyABIAJBqMUBKAIAEQIAIAFBMGogAkEwakGoxQEoAgARAgAgAUHgAGogAkHgAGpBqMUBKAIAEQIAIAFBkAFqIAJBkAFqQajFASgCABECACABQcABaiACQcABakGoxQEoAgARAgAgAUHwAWogAkHwAWpBqMUBKAIAEQIAIABBAToAAAwCCyAFIANBoAJsIAJqIgZB4H1qQajFASgCABECACAFQTBqIgcgBkGQfmpBqMUBKAIAEQIAIAVB4ABqIgggBkHAfmpBqMUBKAIAEQIAIAVBkAFqIgkgBkHwfmpBqMUBKAIAEQIAIAVBwAFqIgogBkGgf2pBqMUBKAIAEQIAIAVB8AFqIgsgBkFQakGoxQEoAgARAgAgA0ECTgRAIANBfmohAwNAIAUgBSAEEFwgAiADQaACbGohBgJAAkACQAJAQZiCAigCAA4DAAECAwsgBSAFIAYQCwwCCyAFIAUgBhAKDAELIAUgBSAGEAkLIANBAEohBiADQX9qIQMgBg0ACwsgASAFQajFASgCABECACABQTBqIAdBqMUBKAIAEQIAIAFB4ABqIAhBqMUBKAIAEQIAIAFBkAFqIAlBqMUBKAIAEQIAIAFBwAFqIApBqMUBKAIAEQIAIAFB8AFqIAtBqMUBKAIAEQIAIABBAToAAAwBCyAAQQA6AAALIAVBoAJqJAALOQEBfyMAQRBrIgQkACAEQQ9qIAAgASACIAMQuwIgBC0ADyEAIARBEGokACAAQRh0QYCAgHhqQRh1C/oEAQd/IwBB0AFrIgUkAAJAAkACQAJAIAMOAgIAAQsgASACQajFASgCABECACABQTBqIAJBMGpBqMUBKAIAEQIAIAFB4ABqIAJB4ABqQajFASgCABECACAAQQE6AAAMAgsgBUEIaiADQZABbCACaiIGQfB+akGoxQEoAgARAgAgBUE4aiIJIAZBoH9qQajFASgCABECACAFQegAaiIKIAZBUGpBqMUBKAIAEQIAIANBAk4EQCADQX5qIQMgBUGgAWohCwNAIAMhCCAFQYTWASgCACIDNgKcASAFAn8gBEGB1wEtAABFDQAaIAsgBEGk1AFBhMcBQajWASgCABEAACAFKAKcASEDIAsLIgY2ApgBAkAgA0UEQCAFQQhqQaTFASgCABEDACAJQaTFASgCABEDACAKQaTFASgCABEDAAwBCwJAAkACQANAIAMiB0UNASAGIAdBf2oiA0ECdGooAgBFDQALIAdBAUsNAQtBASEHIAVBCGogBUEIaiAGKAIAQQAQPQ0CDAELIAdBAnRBCUkNAEHkgQIoAgAiA0UNACAFQQhqIAVBCGogBiAHQQBBACADEQgADAELIAVBCGogBUEIaiAGIAdBABA3CyACIAhBkAFsaiEDAkACQAJAAkBB7IECKAIADgMAAQIDCyAFQQhqIAVBCGogAxAODAILIAVBCGogBUEIaiADEA0MAQsgBUEIaiAFQQhqIAMQDAsgCEF/aiEDIAhBAEoNAAsLIAEgBUEIakGoxQEoAgARAgAgAUEwaiAJQajFASgCABECACABQeAAaiAKQajFASgCABECACAAQQE6AAAMAQsgAEEAOgAACyAFQdABaiQACzkBAX8jAEEQayIEJAAgBEEPaiAAIAEgAiADEL0CIAQtAA8hACAEQRBqJAAgAEEYdEGAgIB4akEYdQu5AQEDfyMAQSBrIgQkAEF/IQUCQAJAAkAgAg4CAgEAC0EAIQUgBCACQQV0IAFqQWBqQZTWASgCABECACACQQJOBEAgAkF+aiECA0AgBCAEIANBhMcBQajWASgCABEAACAEIAQgASACQQV0akGExwFBoNYBKAIAEQAAIAJBAEohBiACQX9qIQIgBg0ACwsgACAEQZTWASgCABECAAwBC0EAIQUgACABQZTWASgCABECAAsgBEEgaiQAIAULrAYBCX8jAEGgBWsiBSQAAkACQAJAAkAgBA4CAAECCyAAQQA6AAAMAgsgASADQajFASgCABECACABQTBqIANBMGpBqMUBKAIAEQIAIAFB4ABqIANB4ABqQajFASgCABECACABQZABaiADQZABakGoxQEoAgARAgAgAUHAAWogA0HAAWpBqMUBKAIAEQIAIAFB8AFqIANB8AFqQajFASgCABECACAAQQE6AAAMAQsgBUGABWogAkGU1gEoAgARAgBBASEGA0AgBUGABWogBUGABWogAiAGQQV0akGExwFBqNYBKAIAEQAAIAZBAWoiBiAERw0ACyAFQYAFakGM1gEoAgARBAAEQCAAQQA6AAAMAQsgBUHgAmpBpMUBKAIAEQMAIAVBkANqIghBpMUBKAIAEQMAIAVBwANqIglBpMUBKAIAEQMAIAVB8ANqIgpBpMUBKAIAEQMAIAVBoARqIgtBpMUBKAIAEQMAIAVB0ARqIgxBpMUBKAIAEQMAAkAgBARAA0AgBUHAAmogAiAHQQV0aiINQZTWASgCABECAEEAIQYDQCAGIAdHBEAgBUEgaiACIAZBBXRqIA1BhMcBQaTWASgCABEAACAFQSBqQYzWASgCABEEAA0EIAVBwAJqIAVBwAJqIAVBIGpBhMcBQajWASgCABEAAAsgBkEBaiIGIARHDQALIAUgBUHAAmpBgMcBQbTWASgCABEBACAFIAUgBUGABWpBhMcBQajWASgCABEAACAFQSBqIAMgB0GgAmxqIAUQXAJAAkACQAJAQZiCAigCAA4DAgEAAwsgBUHgAmogBUHgAmogBUEgahAJDAILIAVB4AJqIAVB4AJqIAVBIGoQCgwBCyAFQeACaiAFQeACaiAFQSBqEAsLIAdBAWoiByAERw0ACwsgASAFQeACakGoxQEoAgARAgAgAUEwaiAIQajFASgCABECACABQeAAaiAJQajFASgCABECACABQZABaiAKQajFASgCABECACABQcABaiALQajFASgCABECACABQfABaiAMQajFASgCABECACAAQQE6AAAMAQsgAEEAOgAACyAFQaAFaiQACzkBAX8jAEEQayIEJAAgBEEPaiAAIAEgAiADEMACIAQtAA8hACAEQRBqJAAgAEEYdEGAgIB4akEYdQuWBwELfyMAQcADayIFJAACQAJAAkACQCAEDgIAAQILIABBADoAAAwCCyABIANBqMUBKAIAEQIAIAFBMGogA0EwakGoxQEoAgARAgAgAUHgAGogA0HgAGpBqMUBKAIAEQIAIABBAToAAAwBCyAFQegCaiACQZTWASgCABECAEEBIQYDQCAFQegCaiAFQegCaiACIAZBBXRqQYTHAUGo1gEoAgARAAAgBkEBaiIGIARHDQALIAVB6AJqQYzWASgCABEEAARAIABBADoAAAwBCyAFQdgBakGkxQEoAgARAwAgBUGIAmoiDEGkxQEoAgARAwAgBUG4AmoiDUGkxQEoAgARAwAgBARAIAVBiAFqIQ4gBUHYAGohDyAFQZADaiELA0AgBUG4AWogAiAIQQV0aiIHQZTWASgCABECAEEAIQYCQAJAAkADQCAGIAhHBEAgBUEoaiACIAZBBXRqIAdBhMcBQaTWASgCABEAACAFQShqQYzWASgCABEEAA0CIAVBuAFqIAVB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+JuRo7Pw2wA3A9ABIARC6/qG2r+19sEfNwPIASAEQp/Y+dnCkdqCm383A8ABIARC0YWa7/rPlIfRADcDuAEgBELx7fT4paf9p6V/NwOwASAEQqvw0/Sv7ry3PDcDqAEgBEK7zqqm2NDrs7t/NwOgASAEQoiS853/zPmE6gA3A5gBIARBADYCECAEQgA3AwggBEHgCDYC2AEgBEEIaiAAIAEgAiADEPMBIQAgBEHgAWokACAACzkBAX8jAEEQayIEJAAgBEEPaiAAIAEgAiADEMQCIAQtAA8hACAEQRBqJAAgAEEYdEGAgIB4akEYdQvnIAEifyMAQeAeayIFJAAgBUGQHGogAUGoxQEoAgARAgAgBUHAHGoiByABQTBqQajFASgCABECACAFQfAcaiABQeAAakGoxQEoAgARAgAgBUGAG2ogA0GoxQEoAgARAgAgBUGwG2oiCSADQTBqQajFASgCABECACAFQeAbaiADQeAAakGoxQEoAgARAgAgBUHgGGogAkGoxQEoAgARAgAgBUGQGWoiCCACQTBqQajFASgCABECACAFQcAZaiIKIAJB4ABqQajFASgCABECACAFQfAZaiIPIAJBkAFqQajFASgCABECACAFQaAaaiIQIAJBwAFqQajFASgCABECACAFQdAaaiIGIAJB8AFqQajFASgCABECACAFQZAcahAwIAVBgBtqEDACQAJAAkBBmIICKAIADgIAAQILIAVB4BhqEEYMAQsgBUHgGGoQRQsCQAJAIBBBoMUBKAIAEQQARQ0AIAZBoMUBKAIAEQQARQ0AIAAgAyAEEIgBDAELIAVBwBZqIAVB4BhqQajFASgCABECACAFQfAWaiIUIAhBqMUBKAIAEQIAIAVBoBdqIhUgCkGoxQEoAgARAgAgBUHQF2oiICAPQajFASgCABECACAFQYAYaiIRIBBBqMUBKAIAEQIAIAVBsBhqIhIgBkGoxQEoAgARAgACQEH8swEtAABFDQACQCAQQaDFASgCABEEAEUNACAGQaDFASgCABEEAEUNACAFQaAUakGkxQEoAgARAwAgBUHQFGpBpMUBKAIAEQMAIAVBgBVqQaTFASgCABEDACAFQbAVakGkxQEoAgARAwAgBUHgFWpBpMUBKAIAEQMAIAVBkBZqQaTFASgCABEDAAwBCyAFQaAUaiAFQeAYakGoxQEo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Ag4CAQACCwNAIAJFDQIgAkF/aiICQQJ0QeT+AGooAgBFDQALDAELAkACQCARQaDFASgCABEEAEUNACASQaDFASgCABEEAEUNACAFQcAWakGkxQEoAgARAwAgFEGkxQEoAgARAwAgFUGkxQEoAgARAwAgIEGkxQEoAgARAwAgEUGkxQEoAgARAwAgEkGkxQEoAgARAwAMAQsgBUHAFmogBUHAFmpBqMUBKAIAEQIAIBQgFEGoxQEoAgARAgAgFSAVQZi2AUGwxQEoAgARAQAgBUHQF2oiASABQZi2AUGwxQEoAgARAQAgESARQajFASgCABECACASIBJBqMUBKAIAEQIACyAAQaACaiIBIAFBmLYBQbDFASgCABEBACAAQdACaiIBIAFBmLYBQbDFASgCABEBACAAQYADaiIBIAFBmLYBQbDFASgCABEBACAAQbADaiIBIAFBmLYBQbDFASgCABEBACAAQeADaiIBIAFBmLYBQbDFASgCABEBACAAQZAEaiIBIAFBmLYBQbDFASgCABEBAAtBuYABLQAADQACQEG0twEoAgBBAUYNACAIIAhBmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACAPIA9BmLYBQbDFASgCABEBAEG0twEoAgBBAUYNACAGIAZBmLYBQbDFASgCABEBAAsgBUGgHWogBUHgGGpB0LABQYjFASgCABEBACAFQeAYaiAFQaAdakGYtgFB7MUBKAIAEQEAIAggBUGAHmoiAkGYtgFB7MUBKAIAEQEAIAVBoB1qIApBsLEBQYjFASgCABEBACAKIAVBoB1qQZi2AUHsxQEoAgARAQAgDyACQZi2AUHsxQEoAgARAQAgBUHgD2ogBUHAFmogBUHgGGoQISAWIBYgB0GYtgFBvMUBKAIAEQAAIBcgFyAHQZi2AUG8xQEoAgARAAAgGCAYIAVBkBxqQZi2AUG8xQEoAgARAAAgGSAZIAVBkBxqQZi2AUG8xQEoAgARAAAgBUHADWogBCADQaACbGoiAUGoxQEoAgARAgAgISABQTBqQajFASgCABECACAiIAFBwAFqIAVBgBtqQZi2AUG8xQEoAgARAAAgIyABQfABaiAFQYAbakGYtgFBvMUBKAIAEQAAICQgAUHgAGogCUGYtgFBvMUBKAIAEQAAICUgAUGQAWogCUGYtgFBvMUBKAIAEQAA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kAFqIAdBmLYBQbzFASgCABEAACAFQcAEaiAFQeAPahAgAkBB2P4ALQAABEAgBUHABGogBUGgC2oQHAwBCyAFQcAEaiAFQaALahAbCyAFIAVBwA1qECACQEHY/gAtAAAEQCAFIAVBgAlqEBwMAQsgBSAFQYAJahAbCyAAIAAgBUHABGoQByAAIAAgBRAHCyAFQcAWaiQACw8AIAAgASACIAMgBBDKAgsLACAAIAEgAhCIAQulEAEOfyMAQaAIayICJAAgAkHABGogAUGoxQEoAgARAgAgAkHwBGoiBCABQTBqQajFASgCABECACACQaAFaiIHIAFB4ABqQajFASgCABECACACQdAFaiIIIAFBkAFqQajFASgCABECACACQYAGaiIJIAFBwAFqQajFASgCABECACACQbAGaiIDIAFB8AFqQajFASgCABECAAJAAkACQEGYggIoAgAOAgABAgsgAkHABGoQRgwBCyACQcAEahBFCwJAAkAgCUGgxQEoAgARBABFDQAgA0GgxQEoAgARBABFDQBB+LMBKAIARQ0BIAJBkARqIQUgAkHgA2ohAyACQbADaiEEIAJBgANqIQcgAkHQAmohCANAIAJBoAJqQYjDAUGoxQEoAgARAgAgCEGkxQEoAgARAwAgB0GkxQEoAgARAwAgBEGkxQEoAgARAwAgA0GkxQEoAgARAwAgBUGkxQEoAgARAwAgACAGQaACbGoiASACQaACakGoxQEoAgARAgAgAUEwaiAIQajFASgCABECACABQeAAaiAHQajFASgCABECACABQZABaiAEQajFASgCABECACABQcABaiADQajFASgCABECACABQfABaiAFQajFASgCABECACAGQQFqIgZB+LMBKAIASQ0ACwwBCyACQaACaiACQcAEakGoxQEoAgARAgAgAkHQAmoiDCAEQajFASgCABECACACQYADaiINIAdBqMUBKAIAEQIAIAJBsANqIg4gCEGoxQEoAgARAgAgAkHgA2oiCiAJQajFASgCABECACACQZAEaiILIANBqMUBKAIAEQIAAkBB/LMBLQAARQ0AAkAgCUGgxQEoAgARBABFDQAgA0GgxQEoAgARBABFDQAgAkGkxQEoAgARAwAgAkEwakGkxQEoAgARAwAgAkHgAGpBpMUBKAIAEQMAIAJBkAFqQaTFASgCABEDACAC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DEEfdiAEIAJJayACIANJa0F/TARAIAAgBDYCHCAAIAU2AhggACAGNgIUIAAgBzYCECAAIAg2AgwgACAJNgIIIAAgCjYCBCAAIAE2AgALC1oBAn8gACABIAIgA0EQIANBEEkbIgRBARCJASADQRFPBEADQCAAIAEgBEGQAWxqIAIgBEGgAmxqIAMgBGsiBUEQIAVBEEkbQQAQiQEgBEEQaiIEIANJDQALCwsLACAAIAEgAhCLAQvbBQECfyMAQYASayICJAAgAkGACWogARAxIAJBgAlqIAJBgAlqEE4gAkHADWogAkGACWoQTiACQcANaiACQcANaiACQYAJahAHIAJBwARqIAJBwA1qEDEgAkHADWogAkHADWogAkHABGoQByACIAJBwARqEE4gAiACEDEgAkHADWogAkHADWogAhAHIAJBoAtqIgMgA0GYtgFBsMUBKAIAEQEAIAJB0AtqIgMgA0GYtgFBsMUBKAIAEQEAIAJBgAxqIgMgA0GYtgFBsMUBKAIAEQEAIAJBsAxqIgMgA0GYtgFBsMUBKAIAEQEAIAJB4AxqIgMgA0GYtgFBsMUBKAIAEQEAIAJBkA1qIgMgA0GYtgFBsMUBKAIAEQEAIAJBgAlqIAJBgAlqIAJBwA1qEAcgAkHABGogAkHABGogAkHADWoQByACQcANaiACQcANahBmIAJBwA1qIAJBwA1qIAJBwARqEAcgAkHADWogAkHADWogARAHIAAgAUcEQCAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogAUHgAGpBqMUBKAIAEQIAIABBkAFqIAFBkAFqQajFASgCABECACAAQcABaiABQcABakGoxQEoAgARAgAgAEHwAWogAUHwAWpBqMUBKAIAEQIACyAAQaACaiABQaACakGYtgFBsMUBKAIAEQEAIABB0AJqIAFB0AJqQZi2AUGwxQEoAgARAQAgAEGAA2ogAUGAA2pBmLYBQbDFASgCABEBACAAQbADaiABQbADakGYtgFBsMUBKAIAEQEAIABB4ANqIAFB4ANqQZi2AUGwxQEoAgARAQAgAEGQBGogAUGQBGpBmLYBQbDFASgCABEBACAAIAAgAkGACWoQByACQYAJaiACQYAJahAGIAJBwA1qIAJBwA1qIAJBgAlqEAcgACAAEOsBIAAgACACQcANahAHIAJBgBJqJAALnQYBB38jAEHADWsiAiQAIAJBgAlqIAEQMSABIAJBwARqRwRAIAJBwARqIAFBqMUBKAIAEQIAIAJB8ARqIAFBMGpBqMUBKAIAEQIAIAJBoAVqIAFB4ABqQajFASgCABECACACQdAFaiABQZABakGoxQEoAgARAgAgAkGABmogAUHAAWpBqMUBKAIAEQIAIAJBsAZqIAFB8AFqQajFASgCABECAAsgAkHgBmogAUGgAmpBmLYBQbDFASgCABEBACACQZAHaiABQdACakGYtgFBsMUBKAIAEQEAIAJBwAdqIAFBgANqQZi2AUGwxQEoAgARAQAgAkHwB2ogAUGwA2pBmLYBQbDFASgCABEBACACQaAIaiABQeADakGYtgFBsMUBKAIAEQEAIAJB0AhqIAFBkARqQZi2AUGwxQEoAgARAQAgAkGACWogAkGACWogAkHABGoQByACQcAEaiACQYAJahAxIAJBoAtqIgMgA0GYtgFBsMUBKAIAEQEAIAJB0AtqIgQgBEGYtgFBsMUBKAIAEQEAIAJBgAxqIgUgBUGYtgFBsMUBKAIAEQEAIAJBsAxqIgYgBkGYtgFBsMUBKAIAEQEAIAJB4AxqIgcgB0GYtgFBsMUBKAIAEQEAIAJBkA1qIgggCEGYtgFBsMUBKAIAEQEAIAJBgAlqIAJBgAlqIAJBwARqEAcgAkHABGogAkGACWoQMSACQYAJaiACQYAJahAGIAJBgAlqIAJBgAlqIAJBwARqEAcgAkHABGogAkGACWoQMSACQcAEaiACQcAEahAxIAIgAkGACWoQZiADIANBmLYBQbDFASgCABEBACAEIARBmLYBQbDFASgCABEBACAFIAVBmLYBQbDFASgCABEBACAGIAZBmLYBQbDFASgCABEBACAHIAdBmLYBQbDFASgCABEBACAIIAhBmLYBQbDFASgCABEBACACQYAJaiACQYAJaiACQcAEahAHIAJBgAlqIAJBgAlqIAIQByACQcAEaiABEE4gAkHABGogAkHABGogARAHIAAgAkGACWogAkHABGoQByACQcANaiQAC7AFAQx/IAAgAigCACIEIAEoAgBqIgw2AgAgACABKAIEIgYgDCAESWoiCiACKAIEaiIENgIEIAAgBCAKSSAKIAZJaiIHIAEoAghqIgYgAigCCGoiCjYCCCAAIAogBkkgBiAHSWoiCCABKAIMaiIHIAIoAgxqIgY2AgwgACAGIAdJIAcgCElqIgkgASgCEGoiCCACKAIQaiIHNgIQIAAgByAISSAIIAlJaiIFIAEoAhRqIgkgAigCFGoiCDYCFCAAIAggCUkgCSAFSWoiCyABKAIYaiIFIAIoAhhqIgk2AhggACACKAIcIAEoAhxqIAUgC0lqIAkgBUlqIgE2AhwCQCABIAMoAhwiC0kNACAMIAMoAgAiAkkhBSABIAtLBEAgACAMIAJrNgIAIAAgBCADKAIEIgwgBWoiAms2AgQgACAKIAIgDEkgBCACSWoiBCADKAIIaiICazYCCCAAIAYgAiAESSAKIAJJaiIEIAMoAgxqIgJrNgIMIAAgByACIARJIAYgAklqIgQgAygCEGoiAms2AhAgACAIIAIgBEkgByACSWoiBCADKAIUaiICazYCFCAAIAkgAiAESSAIIAJJaiIEIAMoAhhqIgJrNgIYIAAgASADKAIcayAJIAJJayACIARJazYCHA8LIAUgAygCBCIFaiIBIAVJIAQgAUlqIgsgAygCCGoiBSALSSAKIAVJaiINIAMoAgxqIgsgDUkgBiALSWoiDiADKAIQaiINIA5JIAcgDUlqIg8gAygCFGoiDiAPSSAIIA5JaiIPIAMoAhhqIgMgD0lBf0EAIAkgA0kbRw0AIABBADYCHCAAIAkgA2s2AhggACAIIA5rNgIUIAAgByANazYCECAAIAYgC2s2AgwgACAKIAVrNgIIIAAgBCABazYCBCAAIAwgAms2AgALCwkAIAAgARCKAQsSACAAIAEgAhCLASAAIAAQigEL0AoBF38jAEHAFmsiBCQAIARBgBJqQaTFASgCABEDACAEQbASaiIPQaTFASgCABEDACAEQeASaiIQQaTFASgCABEDACAEQZATaiIRQaTFASgCABEDACAEQcATaiISQaTFASgCABEDACAEQfATaiITQaTFASgCABEDACAEQaAUaiIUQaTFASgCABEDACAEQdAUaiIVQaTFASgCABEDACAEQYAVaiIWQaTFASgCABEDACAEQbAVaiIXQaTFASgCABEDACAEQeAVaiIYQaTFASgCABEDACAEQZAWaiIZQaTFASgCABEDACAEQYASakGIwwFBqMUBKAIAEQIAIARBADoAlAYgBEEAOgCAByAEQQE2ApAGIARBADoA7AcgBEEBNgL8BiAEQdgIakEAOgAAIARBATYC6AcgBEHECWpBADoAACAEQdQIakEBNgIAIARBwAlqQQE2AgAgBEGwCmpBADoAACAEQQE2AqQFIARCATcDwAQgBEEAOgCoBSAEQgE3AqwFIARCATcDmAYgBEIBNwKEByAEQgE3A/AHIARCATcC3AggBEGcC2pBADoAACAEQawKakEBNgIAIARBmAtqQQE2AgAgBEGIDGpBADoAACAEQYQMakEBNgIAIARB9AxqQQA6AAAgBEHwDGpBATYCACAEQeANakEAOgAAIARB3A1qQQE2AgAgBEHMDmpBADoAACAEQcgOakEBNgIAIARBuA9qQQA6AAAgBEIBNwPICSAEQgE3ArQKIARCATcDoAsgBEIBNwKMDCAEQgE3A/gMIARCATcC5A0gBEGkEGpBADoAACAEQbQPakEBNgIAIARBkBFqQQA6AAAgBEGgEGpBATYCACAEQfwRakEAOgAAIARBjBFqQQE2AgAgBEH4EWpBATYCACAEQgE3A9AOIARCATcCvA8gBEIBNwOoECAEQgE3ApQRIAMEQCAEQQhqIQwDQCADQRAgA0EQSRsiDUEBIA1BAUsbIRpBACEKA0AgBEGE1gEoAgAiCDYCBCACIApBBXRqIQdBgdcBLQAABEAgDCAHQaTUAUGExwFBqNYBKAIAEQAAIAQoAgQhCCAMIQcLIAQgBzYCACAEQcAEaiAKQewAbGoiBUEAOgBoAkAgCEUEQCAFQQA6AGggBUEBNgIAIAVBATYCZCAFQQA2AgQMAQsgCEH/////A3EiBkEYSw0AIAUgBjYCAAJAIAZFDQBBACELQQAhCSAGQQJ0IAhBAnRJDQADQEEAIQ4gCSAISQRAIAcgCUECdGooAgAhDiAJQQFqIQkLIAUgC0ECdGogDjYCBCALQQFqIgsgBkcNAAsLAkADQCAGIgdBAkgNASAFIAdBf2oiBkECdGooAgRFDQALIAUgBzYCZAwBCyAFQQE2AmQgBSgCBA0AIAVBADoAaAsgCkEBaiIKIBpHDQALIAIgBCABIARBwARqIA1BhIICKAIAEQYAIgZBBXRqIQIgASAGQcAEbGohASAEQYASaiAEQYASaiAEEAcgAyAGayIDDQALCyAAIARBgBJqQajFASgCABECACAAQTBqIA9BqMUBKAIAEQIAIABB4ABqIBBBqMUBKAIAEQIAIABBkAFqIBFBqMUBKAIAEQIAIABBwAFqIBJBqMUBKAIAEQIAIABB8AFqIBNBqMUBKAIAEQIAIABBoAJqIBRBqMUBKAIAEQIAIABB0AJqIBVBqMUBKAIAEQIAIABBgANqIBZBqMUBKAIAEQIAIABBsANqIBdBqMUBKAIAEQIAIABB4ANqIBhBqMUBKAIAEQIAIABBkARqIBlBqMUBKAIAEQIAIARBwBZqJAALDQAgACABIAIgAxDYAgvoDgENfyMAQYCGBmsiBCQAIARB/IUGakEANgIAIARB9P8FakEANgIAIARB7PkFakEANgIAIARB5PMFakEANgIAIARB3O0FakEANgIAIARB1OcFakEANgIAIARBzOEFakEANgIAIARBxNsFakEANgIAIARBvNUFakEANgIAIARBtM8FakEANgIAIARBrMkFakEANgIAIARBpMMFakEANgIAIARBnL0FakEANgIAIARBlLcFakEANgIAIARBjLEFakEANgIAIARBhKsFakEANgIAIARB/KQFakEANgIAIARB9J4FakEANgIAIARB7JgFakEANgIAIARB5JIFakEANgIAIARB3IwFakEANgIAIARB1IYFakEANgIAIARBzIAFakEANgIAIARBxPoEakEANgIAIARBvPQEakEANgIAIARBtO4EakEANgIAIARBrOgEakEANgIAIARBpOIEakEANgIAIARBnNwEakEANgIAIARBlNYEakEANgIAIARBjNAEakEANgIAIARBADYChMoEIARBATYC9AMgBEIBNwOQAyAEQQA6APgDIANBICADQSBJGyINBEAgBEGQA2pBBHIhDyAEQaACakEEciEQIARBCGohDkEBIQhBASEMA0AgBEGE1gEoAgAiCzYCBCACIApBBXRqIQZBgdcBLQAABEAgDiAGQaTUAUGExwFBqNYBKAIAEQAAIAQoAgQhCyAOIQYLIAQgBjYCAAJAAkAgC0UEQEEBIQwgBEEBOgCPAyAEQQA2ApQDIARBATYCoAIgBEGAxARqIApBiAZsaiEDQQEhCAwBCwJAIAtB/////wNxIgVBGU8EQCAEQQA6AI8DDAELIARBAToAjwMCQCAFRQ0AQQAhA0EAIQggBUECdCALQQJ0SQ0AA0BBACEHIAggC0kEQCAGIAhB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QCAFQQA6AGggBUEBNgIAIAVBATYCZCAFQQA2AgQMAQsgCEH/////A3EiBkEYSw0AIAUgBjYCAAJAIAZFDQBBACEMQQAhCiAGQQJ0IAhBAnRJDQADQEEAIQ0gCiAISQRAIAcgCkECdGooAgAhDSAKQQFqIQoLIAUgDEECdGogDTYCBCAMQQFqIgwgBkcNAAsLAkADQCAGIgdBAkgNASAFIAdBf2oiBkECdGooAgRFDQALIAUgBzYCZAwBCyAFQQE2AmQgBSgCBA0AIAVBADoAaAsgCUEBaiIJIANHDQALCyAAIAEgBEGgAmogA0H8gQIoAgARBgAaDAELIARBoAJqQaTFASgCABEDACAEQdACaiIHQaTFASgCABEDACAEQYADaiILQaTFASgCABEDACAEQbADaiIFQaTFASgCABEDACAEQeADaiIIQaTFASgCABEDACAEQZAEaiIJQaTFASgCABEDACADBEADQCAEIAEgAiADENoCIQYCQAJAAkACQEGYggIoAgAOAwABAgMLIARBoAJqIARBoAJqIAQQCwwCCyAEQaACaiAEQaACaiAEEAoMAQsgBEGgAmogBEGgAmogBBAJCyACIAZBBXRqIQIgASAGQaACbGohASADIAZrIgMNAAsLIAAgBEGgAmpBqMUBKAIAEQIAIABBMGogB0GoxQEoAgARAgAgAEHgAGogC0GoxQEoAgARAgAgAEGQAWogBUGoxQEoAgARAgAgAEHAAWogCEGoxQEoAgARAgAgAEHwAWogCUGoxQEoAgARAgALIARB4A9qJAALDQAgACABIAIgAxDbAgv2DgENfyMAQfCEA2siBCQAIARB7IQDakEANgIAIARB5IEDakEANgIAIARB3P4CakEANgIAIARB1PsCakEANgIAIARBzPgCakEANgIAIARBxPUCakEANgIAIARBvPICakEANgIAIARBtO8CakEANgIAIARBrOwCakEANgIAIARBpOkCakEANgIAIARBnOYCakEANgIAIARBlOMCakEANgIAIARBjOACakEANgIAIARBhN0CakEANgIAIARB/NkCakEANgIAIARB9NYCakEANgIAIARB7NMCakEANgIAIARB5NACakEANgIAIARB3M0CakEANgIAIARB1MoCakEANgIAIARBzMcCakEANgIAIARBxMQCakEANgIAIARBvMECakEANgIAIARBtL4CakEANgIAIARBrLsCakEANgIAIARBpLgCakEANgIAIARBnLUCakEANgIAIARBlLICakEANgIAIARBjK8CakEANgIAIARBhKwCakEANgIAIARB/KgCakEANgIAIARBADYC9KUCIARBATYC5AIgBEIBNwOAAiAEQQA6AOgCIANBICADQSBJGyINBEAgBEGAAmpBBHIhDyAEQZABakEEciEQIARBCGohDkEBIQNBASEMA0AgBEGE1gEoAgAiCDYCBCACIAtBBXRqIQdBgdcBLQAABEAgDiAHQaTUAUGExwFBqNYBKAIAEQAAIAQoAgQhCCAOIQcLIAQgBzYCAAJAAkAgCEUEQEEBIQwgBEEBOgD/ASAEQQA2AoQCIARBATYCkAEgBEHwogJqIAtBiANsaiEGQQEhAwwBCwJAIAhB/////wNxIgVBGU8EQCAEQQA6AP8BDAELIARBAToA/wECQCAFRQ0AQQAhA0EAIQYgBUECdCAIQQJ0SQ0AA0BBACEJIAYgCEkEQCAHIAZBAnRqKAIAIQkgBkEBaiEGCyADQQJ0IARqIAk2AoQCIANBAWoiAyAFRw0ACwsgBSEGA0ACQCAGIgNBAkgEQEEBIQMMAQsgA0F/aiIGQQJ0IARqKAKEAkUNAQsLIAUhDAsgBCAMNgKQASAEQfCiAmogC0GIA2xqIQYgDA0AQQAhDAwBCyAQIA8gDEECdBADGgsgBCADNgL0ASAEQQA6APgBIARB/wFqIAYgBEGQAWpBBRB8IARB8KICaiALQYgDbGooAoQDIQggASALQZABbGohBQJAAkACQAJAQeyBAigCAA4DAAECAwsgBCAFEBMMAgsgBCAFEBIMAQsgBCAFEBULIARB8AJqIAtBgAlsaiIGIAVBqMUBKAIAEQIAIAZBMGogBUEwakGoxQEoAgARAgAgBkHgAGogBUHgAGpBqMUBKAIAEQIAIAZBkAFqIQUCQAJAAkACQAJAQeyBAigCACIJDgMAAQIECyAFIAYgBBAODAILIAUgBiAEEA0MAQsgBSAGIAQQDAtB7IECKAIAIQkLIAZBoAJqIQcCQAJAAkACQCAJDgMCAQADCyAHIAUgBBAMDAILIAcgBSAEEA0MAQsgByAFIAQQDgsgBkGwA2ohBQJAAkACQAJAAkBB7IECKAIAIgkOAwIBAAQLIAUgByAEEAwMAgsgBSAHIAQQDQwBCyAFIAcgBBAOC0HsgQIoAgAhCQsgBkHABGohBwJAAkACQAJAIAkOAwIBAAMLIAcgBSAEEAwMAgsgByAFIAQQDQwBCyAHIAUgBBAOCyAGQdAFaiEFAkACQAJAAkACQEHsgQIoAgAiCQ4DAgEABAsgBSAHIAQQDAwCCyAFIAcgBBANDAELIAUgByAEEA4LQeyBAigCACEJCyAGQeAGaiEHAkACQAJAAkAgCQ4DAgEAAwsgByAFIAQQDAwCCyAHIAUgBBANDAELIAcgBSAEEA4LIAggCkshBSAGQfAHaiEGAkACQAJAAkBB7IECKAIADgMCAQADCyAGIAcgBBAMDAILIAYgByAEEA0MAQsgBiAHIAQQDgsgCCAKIAUbIQogC0EBaiILIA1HDQALIAQgAzYC5AIgBCAMNgKAAiAEQQA6AOgCCyAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwACQCAKRQ0AQQAhCCANBEADQAJAAkACQAJAQeyBAigCAA4DAQACAwsgACAAEBIMAgsgACAAEBMMAQsgACAAEBULIAogCEF/c2ohAkEAIQMDQAJAIARB8KICaiADQYgDbGoiASgChAMgAk0NACABIAJqLAAAIgFBAEwEQCABQX9KDQEgACAEQfACaiADQYAJbGogAUEBdUF/c0GQAWxqEEQMAQsgBEHwAmogA0GACWxqIAFBf2pBAXVBkAFsaiEBAkACQAJAQeyBAigCAA4DAgEAAwsgACAAIAEQDAwCCyAAIAAgARANDAELIAAgACABEA4LIANBAWoiAyANRw0ACyAIQQFqIgggCkcNAAwCCwALA0ACQAJAAkACQEHsgQIoAgAOAwABAgMLIAAgABATDAILIAAgABASDAELIAAgABAVCyAIQQFqIgggCkcNAAsLIARB8IQDaiQAIA0LrwgBCn8jAEHQDmsiBCQAAkACQCADQQ9LDQBB6IECKAIARQ0AIARBADoA5AIgBEEAOgDQAyAEQQE2AuACIARBADoAvAQgBEEBNgLMAyAEQQA6AKgFIARBATYCuAQgBEEAOgCUBiAEQQE2AqQFIARBATYCkAYgBEEAOgCAByAEQQE2AvQBIARCATcDkAEgBEEAOgD4ASAEQgE3AvwBIARCATcD6AIgBEIBNwLUAyAEQgE3A8AEIARCATcCrAUgBEEAOgDsByAEQQE2AvwGIARBATYC6AcgBEHYCGpBADoAACAEQdQIakEBNgIAIARBxAlqQQA6AAAgBEHACWpBATYCACAEQbAKakEAOgAAIARBrApqQQE2AgAgBEGcC2pBADoAACAEQZgLakEBNgIAIARBiAxqQQA6AAAgBEIBNwOYBiAEQgE3AoQHIARCATcD8AcgBEIBNwLcCCAEQgE3A8gJIARCATcCtAogBEH0DGpBADoAACAEQYQMakEBNgIAIARB4A1qQQA6AAAgBEHwDGpBATYCACAEQcwOakEAOgAAIARB3A1qQQE2AgAgBEHIDmpBATYCACAEQgE3A6ALIARCATcCjAwgBEIBNwP4DCAEQgE3AuQNIAMEQCAEQQhqIQoDQCAEQYTWASgCACIINgIEIAIgC0EFdGohB0GB1wEtAAAEQCAKIAdBpNQBQYTHAUGo1gEoAgARAAAgBCgCBCEIIAohBwsgBCAHNgIAIARBkAFqIAtB7ABsaiIFQQA6AGgCQCAIRQRAIAVBADoAaCAFQQE2AgAgBUEBNgJkIAVBADYCBAwBCyAIQf////8DcSIGQRhLDQAgBSAGNgIAAkAgBkUNAEEAIQxBACEJIAZBAnQgCEECdEkNAANAQQAhDSAJIAhJBEAgByAJQQJ0aigCACENIAlBAWohCQsgBSAMQQJ0aiANNgIEIAxBAWoiDCAGRw0ACwsCQANAIAYiB0ECSA0BIAUgB0F/aiIGQQJ0aigCBEUNAAsgBSAHNgJkDAELIAVBATYCZCAFKAIEDQAgBUEAOgBoCyALQQFqIgsgA0cNAAsLIAAgASAEQZABaiADQeiBAigCABEGABoMAQsgBEGQAWpBpMUBKAIAEQMAIARBwAFqIgdBpMUBKAIAEQMAIARB8AFqIgpBpMUBKAIAEQMAIAMEQANAIAQgASACIAMQ3QIhBgJAAkACQAJAQeyBAigCAA4DAAECAwsgBEGQAWogBEGQAWogBBAODAILIARBkAFqIARBkAFqIAQQDQwBCyAEQZABaiAEQZABaiAEEAwLIAIgBkEFdGohAiABIAZBkAFsaiEBIAMgBmsiAw0ACwsgACAEQZABakGoxQEoAgARAgAgAEEwaiAHQajFASgCABECACAAQeAAaiAKQajFASgCABECAAsgBEHQDmokAAsNACAAIAEgAiADEN4CC2kBA38jAEFAaiIDJAAgA0GE1gEoAgAiBTYCDAJAQYHXAS0AAARAIANBEGoiBCACQaTUAUGExwFBqNYBKAIAEQAAIAMoAgwhBQwBCyACIQQLIAMgBDYCCCAAIAEgBCAFEI0BIANBQGskAAuVAQEDfyMAQUBqIgMkACADQYTWASgCACIENgIMAkBBgdcBLQAABEAgA0EQaiIFIAJBpNQBQYTHAUGo1gEoAgARAAAgAygCDCEEDAELIAIhBQsgAyAFNgIIAkACQCAEQQJJDQBBgIICKAIAIgJFDQAgACABIAUgBEEAQQAgAhEIAAwBCyAAIAEgBSAEEI0BCyADQUBrJAALJAEBfyMAQcAEayIDJAAgAyACEGcgACABIAMQByADQcAEaiQACwoAIAAgASACEAcL8wIAIAAgASACQZi2AUG4xQEoAgARAAAgAEEwaiABQTBqIAJBMGpBmLYBQbjFASgCABEAACAAQeAAaiABQeAAaiACQeAAakGYtgFBuMUBKAIAEQAAIABBkAFqIAFBkAFqIAJBkAFqQZi2AUG4xQEoAgARAAAgAEHAAWogAUHAAWogAkHAAWpBmLYBQbjFASgCABEAACAAQfABaiABQfABaiACQfABakGYtgFBuMUBKAIAEQAAIABBoAJqIAFBoAJqIAJBoAJqQZi2AUG4xQEoAgARAAAgAEHQAmogAUHQAmogAkHQAmpBmLYBQbjFASgCABEAACAAQYADaiABQYADaiACQYADakGYtgFBuMUBKAIAEQAAIABBsANqIAFBsANqIAJBsANqQZi2AUG4xQEoAgARAAAgAEHgA2ogAUHgA2ogAkHgA2pBmLYBQbjFASgCABEAACAAQZAEaiABQZAEaiACQZAEakGYtgFBuMUBKAIAEQAAC94DAQl/IwBBIGsiBCABKAIcQQF0IAEoAhgiBkEfdnI2AhwgBCAGQQF0IAEoAhQiBkEfdnI2AhggBCAGQQF0IAEoAhAiB0EfdnIiBjYCFCAEIAdBAXQgASgCDCIIQR92ciIHNgIQIAQgCEEBdCABKAIIIglBH3ZyIgg2AgwgBCAJQQF0IAEoAgQiCkEfdnIiCTYCCCAEIAEoAgAiA0EBdCIBNgIAIAQgCkEBdCADQR92ciIKNgIEIAAgASACKAIAIgNrNgIAIAAgCiACKAIEIgUgASADSWoiA2s2AgQgACAJIAMgBUkgCiADSWoiBSACKAIIaiIDazYCCCAAIAggAyAFSSAJIANJaiIFIAIoAgxqIgNrNgIMIAAgByADIAVJIAggA0lqIgUgAigCEGoiA2s2AhAgACAGIAMgBUkgByADSWoiCyACKAIUaiIDazYCFCAAIAQoAhgiBSADIAtJIAYgA0lqIgsgAigCGGoiA2s2AhggACAEKAIcIgQgAyALSSAFIANJaiIDIAIoAhxqIgJrNgIcIAIgA0lBf0EAIAQgAkkbRwRAIAAgBDYCHCAAIAU2AhggACAGNgIUIAAgBzYCECAAIAg2AgwgACAJNgIIIAAgCjYCBCAAIAE2AgALC/MCACAAIAEgAkGYtgFBtMUBKAIAEQAAIABBMGogAUEwaiACQTBqQZi2AUG0xQEoAgARAAAgAEHgAGogAUHgAGogAkHgAGpBmLYBQbTFASgCABEAACAAQZABaiABQZABaiACQZABakGYtgFBtMUBKAIAEQAAIABBwAFqIAFBwAFqIAJBwAFqQZi2AUG0xQEoAgARAAAgAEHwAWogAUHwAWogAkHwAWpBmLYBQbTFASgCABEAACAAQaACaiABQaACaiACQaACakGYtgFBtMUBKAIAEQAAIABB0AJqIAFB0AJqIAJB0AJqQZi2AUG0xQEoAgARAAAgAEGAA2ogAUGAA2ogAkGAA2pBmLYBQbTFASgCABEAACAAQbADaiABQbADaiACQbADakGYtgFBtMUBKAIAEQAAIABB4ANqIAFB4ANqIAJB4ANqQZi2AUG0xQEoAgARAAAgAEGQBGogAUGQBGogAkGQBGpBmLYBQbTFASgCABEAAAsIACAAIAEQJQv5CAEGfyMAQdARayICJAAgAkHADWogAUGMxQEoAgARAgAgAkGADGogAUHgAGoiBEGMxQEoAgARAgAgAkHACmogAUHAAWoiBUGMxQEoAgARAgAgAkGACWogASAEQYjFASgCABEBACACQcAHaiAEIAVBiMUBKAIAEQEAIAJBgAZqIAUgAUGIxQEoAgARAQAgAkGgAmogAkHAB2pBkMUBKAIAEQIAIAJBoAJqIAJBwA1qIAJBoAJqQZi2AUHoxQEoAgARAAAgAkGAA2oiAyACQaAOaiADQZi2AUHoxQEoAgARAAAgAkHgA2ogAkGgAmpBmLYBQezFASgCABEBACACQZAEaiADQZi2AUHsxQEoAgARAQAgAkGgAmogAkHACmpBkMUBKAIAEQIAIAJBoAJqIAJBoAJqIAJBgAlqQZi2AUHoxQEoAgARAAAgAyADIAJB4AlqQZi2AUHoxQEoAgARAAAgAkHABGoiBiACQaACakGYtgFB7MUBKAIAEQEAIAJB8ARqIANBmLYBQezFASgCABEBACACQaACaiACQYAMaiACQYAGakGYtgFB6MUBKAIAEQAAIAMgAkHgDGogAkHgBmpBmLYBQejFASgCABEAACACQaAFaiIHIAJBoAJqQZi2AUHsxQEoAgARAQAgAkHQBWogA0GYtgFB7MUBKAIAEQEAIAJBoAJqIAYgBUGIxQEoAgARAQAgAkHgAGogByAEQYjFASgCABEBACACQaACaiACQaACaiACQeAAakGYtgFB5MUBKAIAEQAAIAMgAyACQcABaiIEQZi2AUHkxQEoAgARAAAgAkGgAmogAkGgAmpBkMUBKAIAEQIAIAJB4ABqIAJB4ANqIAFBiMUBKAIAEQEAIAJBoAJqIAJBoAJqIAJB4ABqQfjFASgCABEFABogAyADIARB+MUBKAIAEQUAGiACIAJBoAJqQZi2AUHsxQEoAgARAQAgAkEwaiIBIANBmLYBQezFASgCABEBACACQZAQaiACQdTFASgCABECACACQbAPaiABQdTFASgCABECACACQZAQaiACQZAQaiACQbAPakH4xQEoAgARBQAaIAJBgA9qIAJBkBBqQZi2AUHsxQEoAgARAQAgAkGAD2ogAkGAD2pBlLYBQcjFASgCABEBACACIAIgAkGAD2pBmLYBQbzFASgCABEAACABIAEgAkGAD2pBmLYBQbzFASgCABEAACABIAFBmLYBQbDFASgCABEBACACQZAQaiACQeADaiACQYjFASgCABEBACAAIAJBkBBqQZi2AUHsxQEoAgARAQAgAEEwaiACQfAQaiIBQZi2AUHsxQEoAgARAQAgAkGQEGogBiACQYjFASgCABEBACAAQeAAaiACQZAQakGYtgFB7MUBKAIAEQEAIABBkAFqIAFBmLYBQezFASgCABEBACACQZAQaiAHIAJBiMUBKAIAEQEAIABBwAFqIAJBkBBqQZi2AUHsxQEoAgARAQAgAEHwAWogAUGYtgFB7MUBKAIAEQEAIAJB0BFqJAAL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IgQgASgCGGoiA2s2AhggACACKAIcIAEoAhxrIAUgA0lrIAMgBElrNgIcC28BAX8jAEEgayIEJAAgBEEANgIYIAQgAjYCFCAEIAE2AhAgACAEQQ9qIARBEGogAxBbAn9BfyAELQAPRQ0AGiAAQaACaiAEQQ9qIARBEGogAxBbQQAgBC0AD0UgBCgCGEVyawshACAEQSBqJAAgAAu9AQAgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMAIABBkAFqQaTFASgCABEDACAAQcABakGkxQEoAgARAwAgAEHwAWpBpMUBKAIAEQMAIABBoAJqQaTFASgCABEDACAAQdACakGkxQEoAgARAwAgAEGAA2pBpMUBKAIAEQMAIABBsANqQaTFASgCABEDACAAQeADakGkxQEoAgARAwAgAEGQBGpBpMUBKAIAEQMAC5kBAQN/IwBBQGoiAyQAIANBhNYBKAIAIgQ2AgwCQEGB1wEtAAAEQCADQRBqIgUgAkGk1AFBhMcBQajWASgCABEAACADKAIMIQQMAQsgAiEFCyADIAU2AggCQAJAIARBAnRBCUkNAEH4gQIoAgAiAkUNACAAIAEgBSAEQQBBASACEQgADAELIAAgASAFIARBABBHCyADQUBrJAALCgAgACABIAIQXAsKACAAIAEgAhA8Cz8AAkAgACgCAA0AIAAoAgQNACAAKAIIDQAgACgCDA0AIAAoAhANACAAKAIUDQAgACgCGA0AIAAoAhxFDwtBAAs1AAJAAkACQAJAQZiCAigCAA4DAAECAwsgACABIAIQCw8LIAAgASACEAoPCyAAIAEgAhAJCwuaAQAgACABQajFASgCABECACAAQTBqIAFBMGpBqMUBKAIAEQIAIABB4ABqIAFB4ABqQajFASgCABECACAAQZABaiABQZABakGoxQEoAgARAgAgAEHAAWogAUHAAWpBqMUBKAIAEQIAIABB8AFqIAFB8AFqQajFASgCABECAAJAAkACQEGYggIoAgAOAgABAgsgABBGDwsgABBFCwsvAAJAAkACQAJAQZiCAigCAA4DAAECAwsgACABEBEPCyAAIAEQEA8LIAAgARAUCwuJAgEBfwJAIAFBwAFqIgJBoMUBKAIAEQQARQ0AIAFB8AFqQaDFASgCABEEAEUNACAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgAEGQAWpBpMUBKAIAEQMAIABBwAFqQaTFASgCABEDACAAQfABakGkxQEoAgARAwAPCyAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogAUHgAGpBmLYBQbDFASgCABEBACAAQZABaiABQZABakGYtgFBsMUBKAIAEQEAIABBwAFqIAJBqMUBKAIAEQIAIABB8AFqIAFB8AFqQajFASgCABECAAseACAAQgA3AgAgAEIANwIYIABCADcCECAAQgA3AggLUAEBfyMAQSBrIgMkACADIAE2AhQgAyAANgIQIANBADYCGCACIANBD2ogA0EQakGABBCSASADLQAPIQAgAygCGCEBIANBIGokACABQQAgABsLaQECfyMAQSBrIgQkACAEQQA2AhggBCAANgIQIAQgATYCFCACIARBD2ogBEEQaiADEJIBAkAgBCgCGEEAIAQtAA8bIgJFDQAgAiABQX9qRg0AIAAgAmpBADoAACACIQULIARBIGokACAFC8AZAQl/IwBBgAZrIgMkAAJAAkAgAUHAAWoiBEGgxQEoAgARBABFDQAgAUHwAWpBoMUBKAIAEQQARQ0AIAAgAkGoxQEoAgARAgAgAEEwaiACQTBqQajFASgCABECACAAQeAAaiACQeAAakGoxQEoAgARAgAgAEGQAWogAkGQAWpBqMUBKAIAEQIAIABBwAFqIAJBwAFqQajFASgCABECACAAQfABaiACQfABakGoxQEoAgARAgAMAQsCQCACQcABakGgxQEoAgARBABFDQAgAkHwAWpBoMUBKAIAEQQARQ0AIAAgAUGoxQEoAgARAgAgAEEwaiABQTBqQajFASgCABECACAAQeAAaiABQeAAakGoxQEoAgARAgAgAEGQAWogAUGQAWpBqMUBKAIAEQIAIABBwAFqIARBqMUBKAIAEQIAIABB8AFqIAFB8AFqQajFASgCABECAAwBCyABQcABaiEGAkACQAJAAkBBmMUBKAIAIglFDQAgBigCAEGIwwEoAgBGBEBBASEEA0AgBCIFIAlGDQIgBUEBaiEEIAEgBUECdCIHaigCwAEgB0GIwwFqKAIARg0ACyAFIAlPDQELIAJBwAFqIQcMAQsgAkHAAWohByABQfABakGgxQEoAgARBAAhCEGYxQEoAgAiCUUNAQsgAigCwAFBiMMBKAIARw0BQQEhBANAIAQiBSAJRg0BIAVBAWohBCACIAVBAnQiC2ooAsABIAtBiMMBaigCAEYNAAsgBSAJSQ0BCyACQfABakGgxQEoAgARBAAhCgsgCEUEQCADQcAEaiABQfABaiIEQZi2AUHExQEoAgARAQAgA0HABGogA0HABGogBkGYtgFBvMUBKAIAEQAAIANBoAJqIAYgBEGYtgFBtMUBKAIAEQAAIANBwAFqIAYgBEGYtgFBuMUBKAIAEQAAIANBgANqIANBoAJqIANBwAFqQZi2AUG8xQEoAgARAAAgA0GwA2ogA0HABGpBqMUBKAIAEQIACwJAIAoEQCADQaACaiABQajFASgCABECACADQdACaiABQTBqQajFASgCABECAAJAIAgEQCADQeAAaiACQajFASgCABECACADQZABaiACQTBqQajFASgCABECAAwBCyADQcAEaiACIANBgANqQYjFASgCABEBACADQeAAaiADQcAEakGYtgFB7MUBKAIAEQEAIANBkAFqIANBoAVqQZi2AUHsxQEoAgARAQALIANB4ABqIANB4ABqIANBoAJqQZi2AUG4xQEoAgARAAAgA0GQAWoiBCAEIANB0AJqQZi2AUG4xQEoAgARAAAgA0HAAWogAUHgAGpBqMUBKAIAEQIAIANB8AFqIAFBkAFqQajFASgCABECAAwBCyADQcAEaiACQfABaiIEQZi2AUHExQEoAgARAQAgA0HABGogA0HABGogB0GYtgFBvMUBKAIAEQAAIANBoAJqIAcgBEGYtgFBtMUBKAIAEQAAIANB4ABqIAcgBEGYtgFBuMUBKAIAEQAAIANBwAFqIANBoAJqIANB4ABqQZi2AUG8xQEoAgARAAAgA0HwAWogA0HABGpBqMUBKAIAEQIAIANBwARqIAEgA0HAAWpBiMUBKAIAEQEAIANBoAJqIANBwARqQZi2AUHsxQEoAgARAQAgA0HQAmoiBCADQaAFaiIFQZi2AUHsxQEoAgARAQACQCAIBEAgA0HgAGogAkGoxQEoAgARAgAgA0GQAWogAkEwakGoxQEoAgARAgAMAQsgA0HABGogAiADQYADakGIxQEoAgARAQAgA0HgAGogA0HABGpBmLYBQezFASgCABEBACADQZABaiAFQZi2AUHsxQEoAgARAQALIANB4ABqIANB4ABqIANBoAJqQZi2AUG4xQEoAgARAAAgA0GQAWoiBSAFIARBmLYBQbjFASgCABEAACADQcAEaiADQcABaiAHQYjFASgCABEBACADQcABaiADQcAEakGYtgFB7MUBKAIAEQEAIANB8AFqIgQgA0GgBWoiBUGYtgFB7MUBKAIAEQEAIANBwARqIANBwAFqIAFB4ABqQYjFASgCABEBACADQcABaiADQcAEakGYtgFB7MUBKAIAEQEAIAQgBUGYtgFB7MUBKAIAEQEACwJAIAgEQCADQYADaiACQeAAakGoxQEoAgARAgAgA0GwA2ogAkGQAWpBqMUBKAIAEQIADAELIANBwARqIANBgANqIAZBiMUBKAIAEQEAIANBgANqIANBwARqQZi2AUHsxQEoAgARAQAgA0GwA2oiBCADQaAFaiIFQZi2AUHsxQEoAgARAQAgA0HABGogA0GAA2ogAkHgAGpBiMUBKAIAEQEAIANBgANqIANBwARqQZi2AUHsxQEoAgARAQAgBCAFQZi2AUHsxQEoAgARAQALIANBgANqIANBgANqIANBwAFqQZi2AUG4xQEoAgARAAAgA0GwA2oiAiACIANB8AFqQZi2AUG4xQEoAgARAAACQCADQeAAakGgxQEoAgARBABFDQAgA0GQAWpBoMUBKAIAEQQARQ0AAkAgA0GAA2pBoMUBKAIAEQQARQ0AIAJBoMUBKAIAEQQARQ0AIAAgARDuAQwCCyAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgAEGQAWpBpMUBKAIAEQMAIABBwAFqQaTFASgCABEDACAAQfABakGkxQEoAgARAwAMAQsCQCAIBEAgCgRAIABBwAFqIANB4ABqQajFASgCABECACAAQfABaiADQZABakGoxQEoAgARAgAMAgsgA0HABGogA0HgAGogB0GIxQEoAgARAQAgAEHAAWogA0HABGpBmLYBQezFASgCABEBACAAQfABaiADQaAFakGYtgFB7MUBKAIAEQEADAELIABBwAFqIQEgCgRAIANBwARqIAYgA0HgAGpBiMUBKAIAEQEAIAEgA0HABGpBmLYBQezFASgCABEBACAAQfABaiADQaAFakGYtgFB7MUBKAIAEQEADAELIANBwARqIAYgB0GIxQEoAgARAQAgASADQcAEakGYtgFB7MUBKAIAEQEAIABB8AFqIgIgA0GgBWoiBEGYtgFB7MUBKAIAEQEAIANBwARqIAEgA0HgAGpBiMUBKAIAEQEAIAEgA0HABGpBmLYBQezFASgCABEBACACIARBmLYBQezFASgCABEBAAsgA0HABGogA0GQAWoiAUGYtgFBxMUBKAIAEQEAIANBwARqIANBwARqIANB4ABqQZi2AUG8xQEoAgARAAAgA0GQBGogA0HgAGogAUGYtgFBtMUBKAIAEQAAIANB4ANqIANB4ABqIAFBmLYBQbjFASgCABEAACADIANBkARqIANB4ANqQZi2AUG8xQEoAgARAAAgA0EwaiIFIANBwARqQajFASgCABECACADQcAEaiADQbADaiIBQZi2AUHExQEoAgARAQAgA0HABGogA0HABGogA0GAA2pBmLYBQbzFASgCABEAACADQZAEaiADQYADaiABQZi2AUG0xQEoAgARAAAgA0HgA2ogA0GAA2ogAUGYtgFBuMUBKAIAEQAAIABB4ABqIgEgA0GQBGogA0HgA2pBmLYBQbzFASgCABEAACAAQZABaiICIANBwARqQajFASgCABECACADQcAEaiADQaACaiADQYjFASgCABEBACADQaACaiADQcAEakGYtgFB7MUBKAIAEQEAIANB0AJqIgQgA0GgBWoiBkGYtgFB7MUBKAIAEQEAIANBwARqIAMgA0HgAGpBiMUBKAIAEQEAIAMgA0HABGpBmLYBQezFASgCABEBACAFIAZBmLYBQezFASgCABEBACABIAEgA0GgAmpBmLYBQbjFASgCABEAACACIAIgBEGYtgFBuMUBKAIAEQAAIAEgASADQaACakGYtgFBuMUBKAIAEQAAIAIgAiAEQZi2AUG4xQEoAgARAAAgACABIANBmLYBQbjFASgCABEAACAAQTBqIgcgAiAFQZi2AUG4xQEoAgARAAAgA0GgAmogA0GgAmogAEGYtgFBuMUBKAIAEQAAIAQgBCAHQZi2AUG4xQEoAgARAAAgA0HABGogA0GgAmogA0GAA2pBiMUBKAIAEQEAIANBoAJqIANBwARqQZi2AUHsxQEoAgARAQAgBCAGQZi2AUHsxQEoAgARAQAgA0HABGogAyADQcABakGIxQEoAgARAQAgAyADQcAEakGYtgFB7MUBKAIAEQEAIAUgBkGYtgFB7MUBKAIAEQEAIAEgA0GgAmogA0GYtgFBuMUBKAIAEQAAIAIgBCAFQZi2AUG4xQEoAgARAAALIANBgAZqJAALqgIBAX8jAEHQAmsiAyQAIANBEGpBgAIgASACQbP8ABByQQAhAQNAIAMgAWsgA0EQaiABai0AADoAzwIgAUEBaiIBQcAARw0ACyAAIANBD2ogA0GQAmpBwAAQNSADQdAAaiECQQAhAQNAIAMgAWsgASACai0AADoAzwIgAUEBaiIBQcAARw0ACyAAQTBqIANBD2ogA0GQAmpBwAAQNSADQZABaiECQQAhAQNAIAMgAWsgASACai0AADoAzwIgAUEBaiIBQcAARw0ACyAAQeAAaiADQQ9qIANBkAJqQcAAEDUgA0HQAWohAkEAIQEDQCADIAFrIAEgAmotAAA6AM8CIAFBAWoiAUHAAEcNAAsgAEGQAWogA0EPaiADQZACakHAABA1IANB0AJqJAALsgEBAX8jAEGABmsiAyQAAkBB/IUBKAIAQQNOBEAgAyABIAIQggMgA0HgA2ogAxBpIANBwAFqIANB4ABqEGkgA0HgA2ogA0HgA2ogA0HAAWoQgQMgACADQeADahCUASAAIAAQaAwBCyADQeADaiADQcABaiADQcABakHAACABIAJBjMYBKAIAEQYAEF4gA0GQBGpBpMUBKAIAEQMAIAAgA0HgA2oQkwEaCyADQYAGaiQAQQALUgAgACABKAIANgIAIAAgASgCBDYCBCAAIAEoAgg2AgggACABKAIMNgIMIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAAgASgCHDYCHAsGACAAEF0LKgEBfyAAQcABakGgxQEoAgARBAAEfyAAQfABakGgxQEoAgARBAAFQQALC9gFAQt/IwBBgANrIgIkACAAQcABaiIJQaDFASgCABEEAARAIABB8AFqQaDFASgCABEEACEECwJAAn8gAUHAAWoiCkGgxQEoAgARBAAEQCABQfABakGgxQEoAgARBAAhAwsgAyAEcgsEQCADIARxIQUMAQsgAkHAAWogACAKQYjFASgCABEBACACQeAAaiACQcABakGYtgFB7MUBKAIAEQEAIAJBkAFqIgsgAkGgAmoiB0GYtgFB7MUBKAIAEQEAIAJBwAFqIAEgCUGIxQEoAgARAQAgAiACQcABakGYtgFB7MUBKAIAEQEAIAJBMGoiDCAHQZi2AUHsxQEoAgARAQACQEGYxQEoAgAiBkUNACACKAJgIAIoAgBHDQFBASEEAkADQCAEIgMgBkYNASADQQFqIQQgA0ECdCIIIAJB4ABqaigCACACIAhqKAIARg0ACyADIAZJDQILIAIoApABIAIoAjBHDQFBASEEA0AgBCIDIAZGDQEgA0EBaiEEIAIgA0ECdCIIaigCkAEgAiAIaigCMEYNAAsgAyAGSQ0BCyACQcABaiAAQeAAaiAKQYjFASgCABEBACACQeAAaiACQcABakGYtgFB7MUBKAIAEQEAIAsgB0GYtgFB7MUBKAIAEQEAIAJBwAFqIAFB4ABqIAlBiMUBKAIAEQEAIAIgAkHAAWpBmLYBQezFASgCABEBACAMIAdBmLYBQezFASgCABEBAEGYxQEoAgAiAEUEQEEBIQUMAQsgAigCYCACKAIARw0AQQEhBAJAA0AgBCIBIABGDQEgAUEBaiEEIAFBAnQiAyACQeAAamooAgAgAiADaigCAEYNAAsgASAASQ0BCyACKAKQASACKAIwRw0AQQEhBANAAkAgACAEIgNGBEAgACEDDAELIANBAWohBCACIANBAnQiAWooApABIAEgAmooAjBGDQELCyADIABPIQULIAJBgANqJAAgBQucCQELfyMAQcAEayICJAAgAEHAAWoiB0GgxQEoAgARBAAEQCAAQfABakGgxQEoAgARBAAhAwsCQAJ/IAFBwAFqIghBoMUBKAIAEQQABEAgAUHwAWpBoMUBKAIAEQQAIQQLIAMgBHILBEAgAyAEcSEFDAELIAJBgANqIABB8AFqIgNBmLYBQcTFASgCABEBACACQYADaiACQYADaiAHQZi2AUG8xQEoAgARAAAgAkHAAWogByADQZi2AUG0xQEoAgARAAAgAkHgAGogByADQZi2AUG4xQEoAgARAAAgAkGgAmogAkHAAWogAkHgAGpBmLYBQbzFASgCABEAACACQdACaiACQYADakGoxQEoAgARAgAgAkGAA2ogAUHwAWoiA0GYtgFBxMUBKAIAEQEAIAJBgANqIAJBgANqIAhBmLYBQbzFASgCABEAACACQeAAaiAIIANBmLYBQbTFASgCABEAACACIAggA0GYtgFBuMUBKAIAEQAAIAJBwAFqIAJB4ABqIAJBmLYBQbzFASgCABEAACACQfABaiACQYADakGoxQEoAgARAgAgAkGAA2ogACACQcABakGIxQEoAgARAQAgAkHgAGogAkGAA2pBmLYBQezFASgCABEBACACQZABaiILIAJB4ANqIgZBmLYBQezFASgCABEBACACQYADaiABIAJBoAJqQYjFASgCABEBACACIAJBgANqQZi2AUHsxQEoAgARAQAgAkEwaiIMIAZBmLYBQezFASgCABEBAAJAQZjFASgCACIJRQ0AIAIoAmAgAigCAEcNAUEBIQMCQANAIAMiBCAJRg0BIARBAWohAyAEQQJ0IgogAkHgAGpqKAIAIAIgCmooAgBGDQALIAQgCUkNAgsgAigCkAEgAigCMEcNAUEBIQMDQCADIgQgCUYNASAEQQFqIQMgAiAEQQJ0IgpqKAKQASACIApqKAIwRg0ACyAEIAlJDQELIAJBgANqIABB4ABqIAJBwAFqQYjFASgCABEBACACQeAAaiACQYADakGYtgFB7MUBKAIAEQEAIAsgBkGYtgFB7MUBKAIAEQEAIAJBgANqIAFB4ABqIAJBoAJqQYjFASgCABEBACACIAJBgANqQZi2AUHsxQEoAgARAQAgDCAGQZi2AUHsxQEoAgARAQAgAkGAA2ogAkHgAGogCEGIxQEoAgARAQAgAkHgAGogAkGAA2pBmLYBQezFASgCABEBACALIAZBmLYBQezFASgCABEBACACQYADaiACIAdBiMUBKAIAEQEAIAIgAkGAA2pBmLYBQezFASgCABEBACAMIAZBmLYBQezFASgCABEBAEGYxQEoAgAiAEUEQEEBIQUMAQsgAigCYCACKAIARw0AQQEhAwJAA0AgAyIBIABGDQEgAUEBaiEDIAFBAnQiBCACQeAAamooAgAgAiAEaigCAEYNAAsgASAASQ0BCyACKAKQASACKAIwRw0AQQEhAwNAAkAgACADIgRGBEAgACEEDAELIARBAWohAyACIARBAnQiAWooApABIAEgAmooAjBGDQELCyAEIABPIQULIAJBwARqJAAgBQv1AwEFfwJAAkACQEGYggIoAgAOAgABAgsgACABEIgDDwsgACABEIcDDwtBmMUBKAIAIgRFBEBBAQ8LAkAgACgCACABKAIARw0AQQEhAwJAA0AgAyICIARGDQEgAkEBaiEDIAAgAkECdCIFaigCACABIAVqKAIARg0ACyACIARJDQELIAAoAjAgASgCMEcNAEEBIQMCQANAIAMiAiAERg0BIAJBAWohAyAAIAJBAnQiBWooAjAgASAFaigCMEYNAAsgAiAESQ0BCyAAKAJgIAEoAmBHDQBBASEDAkADQCADIgIgBEYNASACQQFqIQMgACACQQJ0IgVqKAJgIAEgBWooAmBGDQALIAIgBEkNAQsgACgCkAEgASgCkAFHDQBBASEDAkADQCADIgIgBEYNASACQQFqIQMgACACQQJ0IgVqKAKQASABIAVqKAKQAUYNAAsgAiAESQ0BCyAAKALAASABKALAAUcNAEEBIQMCQANAIAMiAiAERg0BIAJBAWohAyAAIAJBAnQiBWooAsABIAEgBWooAsABRg0ACyACIARJDQELIAAoAvABIAEoAvABRw0AQQEhAwNAAkAgBCADIgJGBEAgBCECDAELIAJBAWohAyAAIAJBAnQiBmooAvABIAEgBmooAvABRg0BCwsgAiAETyEGCyAGCwkAIAAgARCJAwvqBAEMfyAAIAIoAgAiBCABKAIAaiILNgIAIAAgASgCBCIFIAsgBElqIgogAigCBGoiBDYCBCAAIAQgCkkgCiAFSWoiBiABKAIIaiIFIAIoAghqIgo2AgggACAKIAVJIAUgBklqIgcgASgCDGoiBiACKAIMaiIFNgIMIAAgBSAGSSAGIAdJaiIIIAEoAhBqIgcgAigCEGoiBjYCECAAIAYgB0kgByAISWoiCSABKAIUaiIIIAIoAhRqIgc2AhQgACAHIAhJIAggCUlqIgwgASgCGGoiCCACKAIYaiIBNgIYIAsgAygCACICSSEJAkAgAAJ/QQAgCCAMSWsgASAISUcEQCAAIAsgAms2AgAgACAEIAMoAgQiCyAJaiICazYCBCAAIAogAiALSSAEIAJJaiIEIAMoAghqIgJrNgIIIAAgBSACIARJIAogAklqIgQgAygCDGoiAms2AgwgACAGIAIgBEkgBSACSWoiBCADKAIQaiICazYCECAAIAcgAiAESSAGIAJJaiIEIAMoAhRqIgJrNgIUIAEgAygCGGsgByACSWsgAiAESWsMAQsgCSADKAIEIglqIgggCUkgBCAISWoiDCADKAIIaiIJIAxJIAogCUlqIg0gAygCDGoiDCANSSAFIAxJaiIOIAMoAhBqIg0gDkkgBiANSWoiDyADKAIUaiIOIA9JIAcgDklqIg8gAygCGGoiAyAPSUF/QQAgASADSRtHDQEgACAHIA5rNgIUIAAgBiANazYCECAAIAUgDGs2AgwgACAKIAlrNgIIIAAgBCAIazYCBCAAIAsgAms2AgAgASADaws2AhgLC3wBAX8CQAJAAkACQAJAQZiCAigCAA4DAAECAwsgABCWAQ0CDAMLIAAQlQENAQwCCyAAQcABakGgxQEoAgARBAAEQEEBIQEgAEHwAWpBoMUBKAIAEQQADQILQQAhASAAEGpFDQELQZSCAi0AAEUEQEEBDwsgABBdIQELIAELUAEBfyMAQSBrIgMkACADIAI2AhQgAyABNgIQIANBADYCGCAAIANBD2ogA0EQakGABBCXASADLQAPIQAgAygCGCEBIANBIGokACABQQAgABsLUgEBfyMAQSBrIgQkACAEIAI2AhQgBCABNgIQIARBADYCGCAAIARBD2ogBEEQaiADEJcBIAQoAhghACAELQAPIQEgBEEgaiQAQQAgAUUgAEVyawtdACAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwAgAEGQAWpBpMUBKAIAEQMAIABBwAFqQaTFASgCABEDACAAQfABakGkxQEoAgARAwALmQEBA38jAEFAaiIDJAAgA0GE1gEoAgAiBDYCDAJAQYHXAS0AAARAIANBEGoiBSACQaTUAUGExwFBqNYBKAIAEQAAIAMoAgwhBAwBCyACIQULIAMgBTYCCAJAAkAgBEECdEEJSQ0AQeSBAigCACICRQ0AIAAgASAFIARBAEEBIAIRCAAMAQsgACABIAUgBEEAEDcLIANBQGskAAuKAgEDfyMAQUBqIgUkACAFQYTWASgCACIDNgIMAkBBgdcBLQAABEAgBUEQaiIEIAJBpNQBQYTHAUGo1gEoAgARAAAgBSgCDCEDDAELIAIhBAsgBSAENgIIAkACQCADBEACQAJAA0AgAyICRQ0BIAQgAkF/aiIDQQJ0aigCAEUNAAsgAkEBSw0BC0EBIQIgACABIAQoAgBBABA9DQMMAgsgAkECdEEJSQ0BQeSBAigCACIDRQ0BIAAgASAEIAJBAEEAIAMRCAAMAgsgAEGkxQEoAgARAwAgAEEwakGkxQEoAgARAwAgAEHgAGpBpMUBKAIAEQMADAELIAAgASAEIAJBABA3CyAFQUBrJAALyAEBAn8jAEGQAWsiAyQAAkAgAkHgAGoiBEGgxQEoAgARBAAEQCADQaTFASgCABEDACADQTBqQaTFASgCABEDACADQeAAakGkxQEoAgARAwAMAQsgAyACQajFASgCABECACADQTBqIAJBMGpBmLYBQbDFASgCABEBACADQeAAaiAEQajFASgCABECAAsCQAJAAkACQEHsgQIoAgAOAwABAgMLIAAgASADEA4MAgsgACABIAMQDQwBCyAAIAEgAxAMCyADQZABaiQAC6YDAQl/IwBBIGsiBCABKAIYIgtBAXQgASgCFCIGQR92cjYCGCAEIAZBAXQgASgCECIHQR92ciIGNgIUIAQgB0EBdCABKAIMIghBH3ZyIgc2AhAgBCAIQQF0IAEoAggiCUEfdnIiCDYCDCAEIAlBAXQgASgCBCIKQR92ciIJNgIIIAQgASgCACIDQQF0IgE2AgAgBCAKQQF0IANBH3ZyIgo2AgQgACABIAIoAgAiA2s2AgAgACAKIAIoAgQiBSABIANJaiIDazYCBCAAIAkgAyAFSSAKIANJaiIFIAIoAghqIgNrNgIIIAAgCCADIAVJIAkgA0lqIgUgAigCDGoiA2s2AgwgACAHIAMgBUkgCCADSWoiBSACKAIQaiIDazYCECAAIAYgAyAFSSAHIANJaiIFIAIoAhRqIgNrNgIUIAAgBCgCGCIEIAMgBUkgBiADSWoiAyACKAIYaiICazYCGCALQR92IAQgAklrIAIgA0lrQX9MBEAgACAENgIYIAAgBjYCFCAAIAc2AhAgACAINgIMIAAgCTYCCCAAIAo2AgQgACABNgIACws1AAJAAkACQAJAQeyBAigCAA4DAAECAwsgACABIAIQDg8LIAAgASACEA0PCyAAIAEgAhAMCws+ACAAIAFBqMUBKAIAEQIAIABBMGogAUEwakGoxQEoAgARAgAgAEHgAGogAUHgAGpBqMUBKAIAEQIAIAAQMAsvAAJAAkACQAJAQeyBAigCAA4DAAECAwsgACABEBMPCyAAIAEQEg8LIAAgARAVCwvUBAEKfyAAIAIoAgAiBCABKAIAaiILNgIAIAAgASgCBCIGIAsgBElqIgkgAigCBGoiBDYCBCAAIAQgCUkgCSAGSWoiByABKAIIaiIGIAIoAghqIgk2AgggACAJIAZJIAYgB0lqIgggASgCDGoiByACKAIMaiIGNgIMIAAgBiAHSSAHIAhJaiIFIAEoAhBqIgggAigCEGoiBzYCECAAIAcgCEkgCCAFSWoiCiABKAIUaiIFIAIoAhRqIgg2AhQgACACKAIYIAEoAhhqIAUgCklqIAggBUlqIgE2AhgCQCABIAMoAhgiCkkNACALIAMoAgAiAkkhBSABIApLBEAgACALIAJrNgIAIAAgBCADKAIEIgsgBWoiAms2AgQgACAJIAIgC0kgBCACSWoiBCADKAIIaiICazYCCCAAIAYgAiAESSAJIAJJaiIEIAMoAgxqIgJrNgIMIAAgByACIARJIAYgAklqIgQgAygCEGoiAms2AhAgACAIIAIgBEkgByACSWoiBCADKAIUaiICazYCFCAAIAEgAygCGGsgCCACSWsgAiAESWs2AhgPCyAFIAMoAgQiBWoiASAFSSAEIAFJaiIKIAMoAghqIgUgCkkgCSAFSWoiDCADKAIMaiIKIAxJIAYgCklqIg0gAygCEGoiDCANSSAHIAxJaiINIAMoAhRqIgMgDUlBf0EAIAggA0kbRw0AIABBADYCGCAAIAggA2s2AhQgACAHIAxrNgIQIAAgBiAKazYCDCAAIAkgBWs2AgggACAEIAFrNgIEIAAgCyACazYCAAsLfQEBfyABQeAAaiICQaDFASgCABEEAARAIABBpMUBKAIAEQMAIABBMGpBpMUBKAIAEQMAIABB4ABqQaTFASgCABEDAA8LIAAgAUGoxQEoAgARAgAgAEEwaiABQTBqQZi2AUGwxQEoAgARAQAgAEHgAGogAkGoxQEoAgARAgALUAEBfyMAQSBrIgMkACADIAE2AhQgAyAANgIQIANBADYCGCACIANBD2ogA0EQakGABBCYASADLQAPIQAgAygCGCEBIANBIGokACABQQAgABsLaQECfyMAQSBrIgQkACAEQQA2AhggBCAANgIQIAQgATYCFCACIARBD2ogBEEQaiADEJgBAkAgBCgCGEEAIAQtAA8bIgJFDQAgAiABQX9qRg0AIAAgAmpBADoAACACIQULIARBIGokACAFC7cBAQF/IwBBsAJrIgMkACADQfAAakGAASABIAJBh/wAEHJBACEB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NgJ0IAJCATcDECACQQA6AHggAkEAOgDoASACQQA6AA8CQEGE1gEoAgAiBUUEQCACQQE2AuQBIAJCATcDgAEgAkEAOgDoASACQQE6AA8MAQsgBUH/////A3EiA0EZTwRAIAJBADoAD0EADAILIAJBAToADyACIAM2AoABAkAgA0UNACADQQJ0IAVBAnRJDQADQEEAIQcgBCAFSQRAIAEgBEECdGooAgAhByAEQQFqIQQLIAZBAnQgAmogBzYChAEgBkEBaiIGIANHDQALCwJAA0AgAyIBQQJIDQEgAUF/aiIDQQJ0IAJqKAKEAUUNAAsgAiABNgLkAQwBCyACQQE2AuQBIAIoAoQBDQAgAkEAOgDoAQsgAkGkyAEgAkEQaiACQYABahCeASIBOgAPQQAgAUUNABogACACQQ9qIAJBEGoQayACLQAPQQBHCyEDIAJB8AFqJAAgAwsPAEEAIAAgARCvA0EBc2sLiwIBAn8jAEHQAmsiAyQAIAMgAkHUxQEoAgARAgAgA0HwAWogAkEwaiIEQdTFASgCABECACADIAMgA0HwAWpB+MUBKAIAEQUAGiADQcABaiADQZi2AUHsxQEoAgARAQAgA0HAAWogA0HAAWpBlLYBQcjFASgCABEBACADQfABaiACIANBwAFqQZi2AUG8xQEoAgARAAAgA0GgAmoiAiAEIANBwAFqQZi2AUG8xQEoAgARAAAgAiACQZi2AUGwxQEoAgARAQAgAyABIANB8AFqQYjFASgCABEBACAAIANBmLYBQezFASgCABEBACAAQTBqIANB4ABqQZi2AUHsxQEoAgARAQAgA0HQAmokAAtRAQF/IwBBwAFrIgMkACADIAEgAkGIxQEoAgARAQAgACADQZi2AUHsxQEoAgARAQAgAEEwaiADQeAAakGYtgFB7MUBKAIAEQEAIANBwAFqJAALMwAgACABIAJBmLYBQbjFASgCABEAACAAQTBqIAFBMGogAkEwakGYtgFBuMUBKAIAEQAACzMAIAAgASACQZi2AUG0xQEoAgARAAAgAEEwaiABQTBqIAJBMGpBmLYBQbTFASgCABEAAAuuAgEEfwJAIAEoAgAiAw0AIAEoAgQNACABKAIIDQAgASgCDA0AIAEoAhANACABKAIUDQAgASgCGA0AIAAgAUcEQCAAQgA3AgAgAEEANgIYIABCADcC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CyAAIQILIAEgAjYCCCACKAIAIQAgAUFAayQAIABBAXELSAAgACABKAIANgIAIAAgASgCBDYCBCAAIAEoAgg2AgggACABKAIMNgIMIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYC2cBBH9BhNYBKAIAIgJFBEBBAQ8LIAAoAgBB9NMBKAIARgR/QQEhAwNAAkAgAiADIgFGBEAgAiEBDAELIAFBAWohAyAAIAFBAnQiBGooAgAgBEH00wFqKAIARg0BCwsgASACTwVBAAsLDgAgAEGM1gEoAgARBAALYwEEf0GE1gEoAgAiA0UEQEEBDwsgACgCACABKAIARgR/QQEhBANAAkAgAyAEIgJGBEAgAyECDAELIAJBAWohBCAAIAJBAnQiBWooAgAgASAFaigCAEYNAQsLIAIgA08FQQALC0wBBH9BhNYBKAIAIQICQANAIAIiA0UNASAAIANBf2oiAkECdCIBaigCACIEIAFBhMcBaigCACIBRg0ACyAEIAFJIQELIAEgA0EAR3ELUAEBfyMAQSBrIgMkACADIAI2AhQgAyABNgIQIANBADYCGCAAIANBD2ogA0EQakGABBCiASADLQAPIQAgAygCGCEBIANBIGokACABQQAgABsLNwEBfyMAQRBrIgMkACAAIANBD2ogASACEKABIAMtAA8hACADQRBqJAAgAEEYdEGAgIB4akEYdQu1AgEHfyMAQUBqIgUkACAFQYTWASgCACIGNgIMAkBBgdcBLQAABEAgBUEQaiIHIABBpNQBQYTHAUGo1gEoAgARAAAgBSgCDCEGDAELIAAhBwsgBSAHNgIIIAUgBkECdCIDQQ9qQXBxayIEJAACQCAGRQ0AQQAhAANAIAAgBGogByAIQQJ0aigCACIJOgAAIAQgAEEBcmogCUEIdjoAACAEIABBAnJqIAlBEHY6AAAgBCAAQQNyaiAJQRh2OgAAIABBBGohACAIQQFqIgggBkcNAAsgAyAATQ0AIAAgBGpBACADIABrEBYLA0ACQCADIgBFBEBBASEADAELIAQgAEF/aiIDai0AAEUNAQsLQQAhAyAAIAJNBEAgASAEIABBASAAQQFLGxADGiAAIQMLIAVBQGskACADCwsAIAIgACABENsDC44EAQp/IAAgAigCACIEIAEoAgBqIgo2AgAgACABKAIEIgUgCiAE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AgsgBiAFIAQQDQwBCyAGIAUgBBAOCyADQaALaiAGQYTbAUGYtgFBvMUBKAIAEQAAIANB0AtqIANB0AJqQajFASgCABECACADQYAMaiADQYADakGoxQEoAgARAgAgA0GwA2ohBQJAAkACQAJAQeyBAigCAA4DAgEAAwsgBSAGIAQQDAwCCyAFIAYgBBANDAELIAUgBiAEEA4LIANBsAxqIAVBhNsBQZi2AUG8xQEoAgARAAAgA0HgDGogA0HgA2pBqMUBKAIAEQIAIANBkA1qIANBkARqQajFASgCABECACADQcAEaiEGAkACQAJAAkBB7IECKAIADgMCAQADCyAGIAUgBBAMDAILIAYgBSAEEA0MAQsgBiAFIAQQDgsgCiAHSyELIANBwA1qIAZBhNsBQZi2AUG8xQEoAgARAAAgA0HwDWogA0HwBGpBqMUBKAIAEQIAIANBoA5qIANBoAVqQajFASgCABECACADQdAFaiEFAkACQAJAAkBB7IECKAIADgMCAQADCyAFIAYgBBAMDAILIAUgBiAEEA0MAQsgBSAGIAQQDgsgCiAHIAsbIQYgA0HQDmogBUGE2wFBmLYBQbzFASgCABEAACADQYAPaiADQYAGakGoxQEoAgARAgAgA0GwD2ogA0GwBmpBqMUBKAIAEQIAIANB4AZqIQcCQAJAAkACQEHsgQIoAgAOAwIBAAMLIAcgBSAEEAwMAgsgByAFIAQQDQwBCyAHIAUgBBAOCyANIAZLIQogA0HgD2ogB0GE2wFBmLYBQbzFASgCABEAACADQZAQaiADQZAHakGoxQEoAgARAgAgA0HAEGogA0HAB2pBqMUBKAIAEQIAIANB8AdqIQUCQAJAAkACQEHsgQIoAgAOAwIBAAMLIAUgByAEEAwMAgsgBSAHIAQQDQwBCyAFIAcgBBAOCyANIAYgChshByADQfAQaiAFQYTbAUGYtgFBvMUBKAIAEQAAIANBoBFqIANBoAhqQajFASgCABECACADQdARaiADQdAIakGoxQEoAgARAgAgCEEBaiIIIAlHDQALCyAAQaTFASgCABEDACAAQTBqQaTFASgCABEDACAAQeAAakGkxQEoAgARAwACQCAHRQ0AQQAhASAJBEADQCABQX9zIQICQAJAAkACQEHsgQIoAgAOAwIBAAMLIAAgABAVDAILIAAgABASDAEL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IAIgA6wiCSAJQj+HIgl8IAmFNwNwIANBf0wEQCACQfAAaiACQfAAakGYtgFBsMUBKAIAEQEAC0GVxgEtAABFDQAgAkHwAGogAkHwAGpB6MMBQZi2AUG8xQEoAgARAAALIAJBoAFqIgRBiMMBQajFASgCABECAEHQsAFBsOEBQajFASgCABECAEGAsQFB4OEBQajFASgCABECAEGwsQFB0OMBQajFASgCABECAEHgsQFBgOQBQajFASgCABECAAJAAkAgAS0ADEUNACACQbAEakHQsAFB1MUBKAIAEQIAIAJBwANqQYCxAUHUxQEoAgARAgAgAkGwBGogAkGwBGogAkHAA2pB+MUBKAIAEQUAGiACQdACaiACQbAEakGYtgFB7MUBKAIAEQEAIAJB0AJqIAJB0AJqQZS2AUHIxQEoAgARAQBB0LABQdCwASACQdACakGYtgFBvMUBKAIAEQAAQYCxAUGAsQEgAkHQAmpBmLYBQbzFASgCABEAAEGAsQFBgLEBQZi2AUGwxQEoAgARAQAgAkGwBGpBsLEBQdTFASgCABECACACQcADakHgsQFB1MUBKAIAEQIAIAJBsARqIAJBsARqIAJBwANqQfjFASgCABEFABogAkHQAmogAkGwBGpBmLYBQezFASgCABEBACACQdACaiACQdACakGUtgFByMUBKAIAEQEAQbCxAUGwsQEgAkHQAmpBmLYBQbzFASgCABEAAEHgsQFB4LEBIAJB0AJqQZi2AUG8xQEoAgARAABB4LEBQeCxAUGYtgFBsMUBKAIAEQEAIAEtAAxFDQACQCABKAIEIgNBAUYEQCACQdACakGIwwFBqMUBKAIAEQIADAELIAJB0AJqQaTFASgCABEDACADRQ0AIAIgA6wiCSAJQj+HIgl8IAmFNwPQAiADQX9MBEAgAkHQAmogAkHQAmpBmLYBQbDFASgCABEBAAtBlcYBLQAARQ0AIAJB0AJqIAJB0AJqQejDAUGYtgFBvMUBKAIAEQAACyACQYADakGkxQEoAgARAwAgAkGwBGogAkHQAmogAkHwAGpBiMUBKAIAEQEAIAJBwANqIAJBsARqQZi2AUHsxQEoAgARAQAgAkHwA2oiAyACQZAFakGYtgFB7MUBKAIAEQEAQZCyASACQcADakGoxQEoAgARAgAMAQsCQCABKAIEIgNBAkcNACABKAIIQQFHDQAgAkGwBGpBiMMBQajFASgCABECACACQeAEaiIDQaTFASgCABEDACACQgE3A+AEIAMgA0GYtgFBsMUBKAIAEQEAQZXGAS0AAARAIAMgA0HowwFBmLYBQbzFASgCABEAAAtBkLIBIAJBsARqQajFASgCABECAAwBCwJAIANBAUYEQCACQdACakGIwwFBqMUBKAIAEQIADAELIAJB0AJqQaTFASgCABEDACADRQ0AIAIgA6wiCSAJQj+HIgl8IAmFNwPQAiADQX9MBEAgAkHQAmogAkHQAmpBmLYBQbDFASgCABEBAAtBlcYBLQAARQ0AIAJB0AJqIAJB0AJqQejDAUGYtgFBvMUBKAIAEQAACyACQYADakGkxQEoAgARAwAgAkGwBGogAkHwAGpB1MUBKAIAEQIAIAJBwANqIARB1MUBKAIAEQIAIAJBsARqIAJBsARqIAJBwANqQfjFASgCABEFABogAkHgAWogAkGwBGpBmLYBQezFASgCABEBACACQeABaiACQeABakGUtgFByMUBKAIAEQEAIAJBwANqIAJB8ABqIAJB4AFqQZi2AUG8xQEoAgARAAAgAkHwA2oiAyAEIAJB4AFqQZi2AUG8xQEoAgARAAAgAyADQZi2AUGwxQEoAgARAQAgAkGwBGogAkHAA2ogAkHQAmpBiMUBKAIAEQEAIAJBwANqIAJBsARqQZi2AUHsxQEoAgARAQAgAyACQZAFakGYtgFB7MUBKAIAEQEAQZCyASACQcADakGoxQEoAgARAgALQcCyASADQajFASgCABECACACQbAEakGIwwFBqMUBKAIAEQIAIAJB4ARqIgNBpMUBKAIAEQMAIAJCATcD4AQgAyADQZi2AUGwxQEoAgARAQBBlcYBLQAABEAgAyADQejDAUGYtgFBvMUBKAIAEQAAC0HwsgECf0EBQZjFASgCACIFRQ0AGgJAQZCyASgCACACKAKwBEcNAEEBIQMCQANAIAMiBCAFRg0BIARBAWohAyAEQQJ0IgZBkLIBaigCACACQbAEaiAGaigCAEYNAAsgBCAFSQ0BC0HAsgEoAgAgAigC4ARHDQBBASEDA0BBASAFIAMiBEYNAhogBEEBaiEDIARBAnQiBkHAsgFqKAIAIAIgBmooAuAERg0AC0EBIAQgBU8NARoLIAJBsARqQYjDAUGoxQEo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MDAwMDFiYTM0NGQ4MDAwMDAwMDA3ZmY5ZjgwMDAwMDAwMDAxMGExMDAwMDAwMDAwMDAwMGQAOTQ4ZDkyMDkwMDAwMDAwNmU4ZDEzNjAwMDAwMDAwMWZmZTdlMDAwMDAwMDAwMDQyODQwMDAwMDAwMDAwMDAzADkzNjZjNDgwMDAwMDAwMDU1NTE1MDAwMDAwMDAwMDEyMjQwMDAwMDAwMDAwMDAxNQA0YTQ2YzkwNDgwMDAwMDAzNzQ2ODliMDAwMDAwMDAwZmZmM2YwMDAwMDAwMDAwMjE0MjAwMDAwMDAwMDAwMDIAMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiAGQwMDg4ZjUxY2JmZjM0ZDI1OGRkM2RiMjFhNWQ2NmJiMjNiYTVjMjc5YzI4OTVmYjM5ODY5NTA3YjU4N2IxMjBmNTVmZmZmNThhOWZmZmZkY2ZmN2ZmZmZmZmZkNTU1ADFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYQA2ODA0NDdhOGU1ZmY5YTY5MmM2ZTllZDkwZDJlYjM1ZDkxZGQyZTEzY2UxNDRhZmQ5Y2MzNGE4M2RhYzNkODkwN2FhZmZmZmFjNTRmZmZmZWU3ZmJmZmZmZmZmZWFhYgA3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxADUANzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYAMjEyZDc5ZTViNDE2YjZmMGZkNTZkYzhkMTY4ZDZjMGM0MDI0ZmYyNzBiM2UwOTQxYjc4OGY1MDBiOTEyZjFmADM5ZjZkM2E5OTRjZWJlYTQxOTljZWMwNDA0ZDBlYzAyYTlkZWQyMDE3ZmZmMmRmZjgwMDAwMDAwAHtNb2R1bGUuY3J5cHRvR2V0UmFuZG9tVmFsdWVzKCQwLCAkMSl9AGlpAHsAAABsAAAAewAAAHsAAAB7AAAAfAAAAGsAAAB8AAAAfAAAAHwAAAB9AAAAagAAAH0AAAB9AAAAfQAAAH4AAABsAAAAfgAAAH4AAAB+AAAAfwAAAGsAAAB/AAAAfwAAAH8AAACAAAAAagAAAIAAAACAAAAAgAAAAIEAAABdAAAAgQAAAIEAAACBAAAAggAAAFwAAACCAAAAggAAAIIAAACDAAAAWwAAAIMAAACDAAAAgwAAAIQAAABdAAAAhAAAAIQAAACEAAAAhQAAAFwAAACFAAAAhQAAAIUAAACGAAAAWwAAAIYAAACGAAAAhgAAAIcAAABHAAAAhwAAAIcAAACHAAAAiAAAAEYAAACIAAAAiAAAAIgAAACJAAAARQAAAIkAAACJAAAAiQAAAIoAAABHAAAAigAAAIoAAACKAAAAiwAAAEYAAACLAAAAiwAAAIsAAACMAAAARQAAAIwAAACMAAAAjAAAAI0AAAAxAAAAjQAAAI0AAACNAAAAjgAAADAAAACOAAAAjgAAAI4AAACPAAAALwAAAI8AAACPAAAAjwAAAJAAAAAxAAAAkAAAAJAAAACQAAAAkQAAADAAAACRAAAAkQAAAJEAAACSAAAALwAAAJIAAACSAAAAkgAAACAQAAAqEAAAXRAAAF8QAABhEAAAlBAAAMcQAADAAAAAZAAAAPoQAAAEEQAAXRAAAD8RAABBEQAAfBEAALcRAADgAAAAZQAAAPMRAAD9EQAAXRAAAEASAABCEgAAhRIAAMgSAAAAAQAAZgAAAAsTAAAVEwAAeBMAAHsTAADeEwAAQRQAAKQUAACAAQAAZwAAAAcVAAARFQAAeBMAAJcVAAAcFgAAoRYAACcXAAAJAgAAaAAAAK0XAAC3FwAAeBMAAOoXAAAdGAAAUBgAAIMYAADAAAAAaQAAALYYAADAGAAAeBMAAPsYAAA2GQAAcRkAAKwZAADgAAAAagAAAOcZAADxGQAAeBMAADQaAAB3GgAAuhoAAP0aAAAAAQAAawAAAEAbAABKGwAAXRAAAEASAAB1GwAAoBsAAMsbAACgAAAAbAAAAPcbAAD+GwAAKhwAAC0cAABfHAAAYRwAAJMcAAChAAAAbQAAAHNlY3AxOTJrMQAweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVmZmZmZWUzNwAwADMAMHhkYjRmZjEwZWMwNTdlOWFlMjZiMDdkMDI4MGI3ZjQzNDFkYTVkMWIxZWFlMDZjN2QAMHg5YjJmMmY2ZDljNTYyOGE3ODQ0MTYzZDAxNWJlODYzNDQwODJhYTg4ZDk1ZTJmOWQAMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUyNmYyZmMxNzBmNjk0NjZhNzRkZWZkOGQAc2VjcDIyNGsxADB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZmZmZmU1NmQANQAweGExNDU1YjMzNGRmMDk5ZGYzMGZjMjhhMTY5YTQ2N2U5ZTQ3MDc1YTkwZjdlNjUwZWI2YjdhNDVjADB4N2UwODlmZWQ3ZmJhMzQ0MjgyY2FmYmQ2ZjdlMzE5ZjdjMGIwYmQ1OWUyY2E0YmRiNTU2ZDYxYTUAMHgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWRjZThkMmVjNjE4NGNhZjBhOTcxNzY5ZmIxZjcAc2VjcDI1NmsxADB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVmZmZmZmMyZgA3ADB4NzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OAAweDQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgAMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWJhYWVkY2U2YWY0OGEwM2JiZmQyNWU4Y2QwMzY0MTQxAHNlY3AzODRyMQAweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVmZmZmZmZmZjAwMDAwMDAwMDAwMDAwMDBmZmZmZmZmZgAtMwAweGIzMzEyZmE3ZTIzZWU3ZTQ5ODhlMDU2YmUzZjgyZDE5MTgxZDljNmVmZTgxNDExMjAzMTQwODhmNTAxMzg3NWFjNjU2Mzk4ZDhhMmVkMTlkMmE4NWM4ZWRkM2VjMmFlZgAweGFhODdjYTIyYmU4YjA1Mzc4ZWIxYzcxZWYzMjBhZDc0NmUxZDNiNjI4YmE3OWI5ODU5Zjc0MWUwODI1NDJhMzg1NTAyZjI1ZGJmNTUyOTZjM2E1NDVlMzg3Mjc2MGFiNwAweDM2MTdkZTRhOTYyNjJjNmY1ZDllOThiZjkyOTJkYzI5ZjhmNDFkYmQyODlhMTQ3Y2U5ZGEzMTEzYjVmMGI4YzAwYTYwYjFjZTFkN2U4MTlkN2E0MzFkN2M5MGVhMGU1ZgAweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmM3NjM0ZDgxZjQzNzJkZGY1ODFhMGRiMjQ4YjBhNzdhZWNlYzE5NmFjY2M1Mjk3MwBzZWNwNTIxcjEAMHgxZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZgAweDUxOTUzZWI5NjE4ZTFjOWExZjkyOWEyMWEwYjY4NTQwZWVhMmRhNzI1Yjk5YjMxNWYzYjhiNDg5OTE4ZWYxMDllMTU2MTkzOTUxZWM3ZTkzN2IxNjUyYzBiZDNiYjFiZjA3MzU3M2RmODgzZDJjMzRmMWVmNDUxZmQ0NmI1MDNmMDAAMHhjNjg1OGUwNmI3MDQwNGU5Y2Q5ZTNlY2I2NjIzOTViNDQyOWM2NDgxMzkwNTNmYjUyMWY4MjhhZjYwNmI0ZDNkYmFhMTRiNWU3N2VmZTc1OTI4ZmUxZGMxMjdhMmZmYThkZTMzNDhiM2MxODU2YTQyOWJmOTdlN2UzMWMyZTViZDY2ADB4MTE4MzkyOTZhNzg5YTNiYzAwNDVjOGE1ZmI0MmM3ZDFiZDk5OGY1NDQ0OTU3OWI0NDY4MTdhZmJkMTcyNzNlNjYyYzk3ZWU3Mjk5NWVmNDI2NDBjNTUwYjkwMTNmYWQwNzYxMzUzYzcwODZhMjcyYzI0MDg4YmU5NDc2OWZkMTY2NTAAMHgxZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZhNTE4Njg3ODNiZjJmOTY2YjdmY2MwMTQ4ZjcwOWE1ZDAzYmI1YzliODg5OWM0N2FlYmI2ZmI3MWU5MTM4NjQwOQBOSVNUX1AxOTIAMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmZmZmZmZmZmZmZmYAMHg2NDIxMDUxOWU1OWM4MGU3MGZhN2U5YWI3MjI0MzA0OWZlYjhkZWVjYzE0NmI5YjEAMHgxODhkYTgwZWIwMzA5MGY2N2NiZjIwZWI0M2ExODgwMGY0ZmYwYWZkODJmZjEwMTIAMHgwNzE5MmI5NWZmYzhkYTc4NjMxMDExZWQ2YjI0Y2RkNTczZjk3N2ExMWU3OTQ4MTEAMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5OWRlZjgzNjE0NmJjOWIxYjRkMjI4MzEATklTVF9QMjI0ADB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEAMHhiNDA1MGE4NTBjMDRiM2FiZjU0MTMyNTY1MDQ0YjBiN2Q3YmZkOGJhMjcwYjM5NDMyMzU1ZmZiNAAweGI3MGUwY2JkNmJiNGJmN2YzMjEzOTBiOTRhMDNjMWQzNTZjMjExMjIzNDMyODBkNjExNWMxZDIxADB4YmQzNzYzODhiNWY3MjNmYjRjMjJkZmU2Y2Q0Mzc1YTA1YTA3NDc2NDQ0ZDU4MTk5ODUwMDdlMzQAMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTZhMmUwYjhmMDNlMTNkZDI5NDU1YzVjMmEzZABOSVNUX1AyNTYAMHhmZmZmZmZmZjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmADB4NWFjNjM1ZDhhYTNhOTNlN2IzZWJiZDU1NzY5ODg2YmM2NTFkMDZiMGNjNTNiMGY2M2JjZTNjM2UyN2QyNjA0YgAweDZiMTdkMWYyZTEyYzQyNDdmOGJjZTZlNTYzYTQ0MGYyNzcwMzdkODEyZGViMzNhMGY0YTEzOTQ1ZDg5OGMyOTYAMHg0ZmUzNDJlMmZlMWE3ZjliOGVlN2ViNGE3YzBmOWUxNjJiY2UzMzU3NmIzMTVlY2VjYmI2NDA2ODM3YmY1MWY1ADB4ZmZmZmZmZmYwMDAwMDAwMGZmZmZmZmZmZmZmZmZmZmZiY2U2ZmFhZGE3MTc5ZTg0ZjNiOWNhYzJmYzYzMjU1MQBzZWNwMTYwazEAMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZhYzczADB4M2I0YzM4MmNlMzdhYTE5MmE0MDE5ZTc2MzAzNmY0ZjVkZDRkN2ViYgAweDkzOGNmOTM1MzE4ZmRjZWQ2YmMyODI4NjUzMTczM2MzZjAzYzRmZWUAMHgxMDAwMDAwMDAwMDAwMDAwMDAwMDFiOGZhMTZkZmFiOWFjYTE2YjZiMwBwMTYwXzEAMHgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNwAxMAAxMzQzNjMyNzYyMTUwMDkyNDk5NzAxNjM3NDM4OTcwNzY0ODE4NTI4MDc1NTY1MDc4ADEAMTIzNjYxMjM4OTk1MTQ2MjE1MTY2MTE1NjczMTUzNTMxNjEzODQzOTk4MzU3OTI4NAAxNDYxNTAxNjM3MzMwOTAyOTE4MjAzNjgzNTE4MjE4MTI2ODEyNzExMTM3MDAyNTYxADI1MjM2NDgyNDAwMDAwMDEyNmNkODkwMDAwMDAwMDAzY2YwZjAwMDAwMDAwMDAwNjBjMDAwMDAwMDAwMDAwMDQAMjUyMzY0ODI0MDAwMDAwMTcwODBlYjQwMDAwMDAwMDYxODE4MDAwMDAwMDAwMDBjZDk4MDAwMDAwMDAwMDAwYgBB0DoL3TsNAAAA/P////z///8GAAAA/P///wAAAAAFAAAA/P///wEAAAAweDZhZjBlMDQzN2ZmNDAwYjY4MzFlMzZkNmJkMTdmZmU0ODM5NWRhYmMyZDM0MzVlNzdmNzZlMTcwMDkyNDFjNWVlNjc5OTJmNzJlYzA1ZjRjODEwODRmYmVkZTNjYzA5ADB4Njk5YmUzYjhjNjg3MDk2NWU1YmY4OTJhZDVkMmNjN2IwZTg1YTExNzQwMmRmZDgzYjdmNGE5NDdlMDJkOTc4NDk4MjU1YTJhYWVjMGFjNjI3YjVhZmJkZjFiZjFjOTAAMHg4MTU3Y2Q4MzA0NjQ1M2Y1ZGQwOTcyYjZlMzk0OWU0Mjg4MDIwYjViOGE5Y2M5OWNhMDdlMjcwODlhMmNlMjQzNmQ5NjUwMjZhZGFkM2VmN2JhYmEzN2YyMTgzZTliNQAweGFiMWMyZmZkZDZjMjUzY2ExNTUyMzFlYjNlNzFiYTA0NGZkNTYyZjZmNzJiYzViYWQ1ZWM0NmEwYjdhM2IwMjQ3Y2YwOGNlNmM2MzE3ZjQwZWRiYzY1M2E3MmRlZTE3ADB4YWE0MDQ4NjY3MDY3MjI4NjQ0ODA4ODVkNjhhZDBjY2FjMTk2N2M3NTQ0YjQ0Nzg3M2NjMzdlMDE4MTI3MWUwMDZkZjcyMTYyYTNkM2UwMjg3YmY1OTdmYmY3ZjhmYzEAMHgxNDQ2OThhM2I4ZTk0MzNkNjkzYTAyYzk2ZDQ5ODJiMGVhOTg1MzgzZWU2NmE4ZDhlODk4MWFlZmQ4ODFhYzk4OTM2ZjhkYTBlMGY5N2Y1Y2Y0MjgwODJkNTg0YzFkADB4MTJlMjkwOGQxMTY4ODAzMDAxOGIxMmU4NzUzZWVlM2IyMDE2YzFmMGYyNGY0MDcwYTBiOWMxNGZjZWYzNWVmNTVhMjMyMTVhMzE2Y2VhYTVkMWNjNDhlOThlMTcyYmUwADB4NjgwNDQ3YThlNWZmOWE2OTJjNmU5ZWQ5MGQyZWIzNWQ5MWRkMmUxM2NlMTQ0YWZkOWNjMzRhODNkYWMzZDg5MDdhYWZmZmZhYzU0ZmZmZmVlN2ZiZmZmZmZmZmVhYWEAMHgzZDY4OWQxZTBlNzYyY2VmOWYyYmVjNjEzMDMxNjgwNmI0YzgwZWRhNmZjMTBjZTc3YWU4M2VhYjFlYThiOGI4YTQwN2M5YzZkYjE5NWUwNmYyZGJlYWJjMmJhZWZmNQBkMjAxMDAwMDAwMDEwMDAxADB4NWM3NTk1MDdlOGUzMzNlYmI1YjdhOWE0N2Q3ZWQ4NTMyYzUyZDM5ZmQzYTA0MmE4OGI1ODQyM2M1MGFlMTVkNWMyNjM4ZTM0M2Q5YzcxYzYyMzhhYWFhYWFhYTk3ZDYAMHgxMTU2MGJmMTdiYWE5OWJjMzIxMjZmY2VkNzg3Yzg4Zjk4NGY4N2FkZjdhZTBjN2Y5YTIwOGM2YjRmMjBhNDE4MTQ3MmFhYTljYjhkNTU1NTI2YTlmZmZmZmZmZmM3MWEAMHgxMTU2MGJmMTdiYWE5OWJjMzIxMjZmY2VkNzg3Yzg4Zjk4NGY4N2FkZjdhZTBjN2Y5YTIwOGM2YjRmMjBhNDE4MTQ3MmFhYTljYjhkNTU1NTI2YTlmZmZmZmZmZmM3MWUAMHg4YWIwNWY4YmRkNTRjZGUxOTA5MzdlNzZiYzNlNDQ3Y2MyN2MzZDZmYmQ3MDYzZmNkMTA0NjM1YTc5MDUyMGMwYTM5NTU1NGU1YzZhYWFhOTM1NGZmZmZmZmZmZTM4ZAAweDE3MWQ2NTQxZmEzOGNjZmFlZDZkZWE2OTFmNWZiNjE0Y2IxNGI0ZTdmNGU4MTBhYTIyZDYxMDhmMTQyYjg1NzU3MDk4ZTM4ZDBmNjcxYzcxODhlMmFhYWFhYWFhNWVkMQAweDFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWE2MwAweDFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWE5ZgAweDE1MzA0NzdjN2FiNDExM2I1OWE0YzE4YjA3NmQxMTkzMGY3ZGE1ZDRhMDdmNjQ5YmY1NDQzOWQ4N2QyN2U1MDBmYzhjMjVlYmY4YzkyZjY4MTJjZmM3MWM3MWM2ZDcwNgAweDVjNzU5NTA3ZThlMzMzZWJiNWI3YTlhNDdkN2VkODUzMmM1MmQzOWZkM2EwNDJhODhiNTg0MjNjNTBhZTE1ZDVjMjYzOGUzNDNkOWM3MWM2MjM4YWFhYWFhYWE5N2JlADB4MTE1NjBiZjE3YmFhOTliYzMyMTI2ZmNlZDc4N2M4OGY5ODRmODdhZGY3YWUwYzdmOWEyMDhjNmI0ZjIwYTQxODE0NzJhYWE5Y2I4ZDU1NTUyNmE5ZmZmZmZmZmZjNzFjADB4OGFiMDVmOGJkZDU0Y2RlMTkwOTM3ZTc2YmMzZTQ0N2NjMjdjM2Q2ZmJkNzA2M2ZjZDEwNDYzNWE3OTA1MjBjMGEzOTU1NTRlNWM2YWFhYTkzNTRmZmZmZmZmZmUzOGYAMHgxMjRjOWFkNDNiNmNmNzliZmJmNzA0M2RlMzgxMWFkMDc2MWIwZjM3YTFlMjYyODZiMGU5NzdjNjlhYTI3NDUyNGU3OTA5N2E1NmRjNGJkOWUxYjM3MWM3MWM3MThiMTAAMHgxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmE4ZmIAMHgxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmE5ZDMAMHgxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmFhOTkAMHgxMWEwNWYyYjFlODMzMzQwYjgwOTEwMWRkOTk4MTU4NTZiMzAzZTg4YTJkNzAwNWZmMjYyN2I1NmNkYjRlMmM4NTYxMGMyZDVmMmU2MmQ2ZWFlYWMxNjYyNzM0NjQ5YjcAMHgxNzI5NGVkM2U5NDNhYjJmMDU4OGJhYjIyMTQ3YTgxYzdjMTdlNzViMmY2YTg0MTdmNTY1ZTMzYzcwZDFlODZiNDgzOGYyYTZmMzE4YzM1NmU4MzRlZWYxYjNjYjgzYmIAMHhkNTQwMDVkYjk3Njc4ZWMxZDEwNDhjNWQxMGE5YTFiY2UwMzI0NzMyOTU5ODNlNTY4NzhlNTAxZWM2OGUyNWM5NThjM2UzZDJhMDk3MjlmZTAxNzlmOWRhYzllZGNiMAAweDE3NzhlNzE2NmZjYzZkYjc0ZTA2MDlkMzA3ZTU1NDEyZDdmNWU0NjU2YThkYmYyNWYxYjMzMjg5ZjFiMzMwODM1MzM2ZTI1Y2UzMTA3MTkzYzViMzg4NjQxZDliNjg2MQAweGU5OTcyNmEzMTk5ZjQ0MzY2NDJiNGIzZTQxMThlNTQ5OWRiOTk1YTEyNTdmYjNmMDg2ZWViNjU5ODJmYWMxODk4NWEyODZmMzAxZTc3YzQ1MTE1NGNlOWFjODg5NWQ5ADB4MTYzMGMzMjUwZDczMTNmZjAxZDEyMDFiZjdhNzRhYjVkYjNjYjE3ZGQ5NTI3OTliOWVkM2FiOTA5N2U2OGY5MGEwODcwZDJkY2FlNzNkMTljZDEzYzFjNjZmNjUyOTgzADB4ZDZlZDY1NTNmZTQ0ZDI5NmEzNzI2YzM4YWU2NTJiZmIxMTU4NjI2NGYwZjhjZTE5MDA4ZTIxOGY5Yzg2YjJhOGRhMjUxMjhjMTA1MmVjYWRkZDdmMjI1YTEzOWVkODQAMHgxN2I4MWU3NzAxYWJkYmUyZTg3NDM4ODRkMTExN2U1MzM1NmRlNWFiMjc1YjRkYjFhNjgyYzYyZWYwZjI3NTMzMzliN2M4ZjhjOGY0NzVhZjljY2I1NjE4ZTNmMGM4OGUAMHg4MGQzY2YxZjlhNzhmYzQ3YjkwYjMzNTYzYmU5OTBkYzQzYjc1NmNlNzlmNTU3NGEyYzU5NmM5MjhjNWQxZGU0ZmEyOTVmMjk2Yjc0ZTk1NmQ3MTk4NmE4NDk3ZTMxNwAweDE2OWIxZjhlMWJjZmE3YzQyZTBjMzc1MTVkMTM4ZjIyZGQyZWNiODAzYTBjNWM5OTY3NjMxNGJhZjRiYjFiN2ZhMzE5MGIyZWRjMDMyNzc5N2YyNDEwNjdiZTM5MGM5ZQAweDEwMzIxZGEwNzljZTA3ZTI3MmQ4ZWMwOWQyNTY1YjBkZmE3ZGNjZGRlNjc4N2Y5NmQ1MGFmMzYwMDNiMTQ4NjZmNjliNzcxZjhjMjg1ZGVjY2E2N2RmM2YxNjA1ZmI3YgAweDZlMDhjMjQ4ZTI2MGU3MGJkMWU5NjIzODFlZGVlM2QzMWQ3OWQ3ZTIyYzgzN2JjMjNjMGJmMWJjMjRjNmI2OGMyNGIxYjgwYjY0ZDM5MWZhOWM4YmEyZThiYTJkMjI5ADB4OGNhOGQ1NDhjZmYxOWFlMThiMmU2MmY0YmQzZmE2ZjAxZDVlZjRiYTM1YjQ4YmE5Yzk1ODg2MTdmYzhhYzYyYjU1OGQ2ODFiZTM0M2RmODk5M2NmOWZhNDBkMjFiMWMAMHgxMjU2MWE1ZGViNTU5YzQzNDhiNDcxMTI5OGU1MzYzNjcwNDFlOGNhMGNmMDgwMGMwMTI2YzI1ODhjNDhiZjU3MTNkYWE4ODQ2Y2IwMjZlOWU1YzgyNzZlYzgyYjNiZmYAMHhiMjk2MmZlNTdhMzIyNWU4MTM3ZTYyOWJmZjI5OTFmNmY4OTQxNmY1YTcxOGNkMWZjYTY0ZTAwYjExYWNlYWNkNmEzZDA5NjdjOTRmZWRjZmNjMjM5YmE1Y2I4M2UxOQAweDM0MjU1ODFhNThhZTJmZWM4M2FhZmVmN2M0MGViNTQ1YjA4MjQzZjE2YjE2NTUxNTRjY2E4YWJjMjhkNmZkMDQ5NzZkNTI0M2VlY2Y1YzQxMzBkZTg5MzhkYzYyY2Q4ADB4MTNhOGUxNjIwMjI5MTRhODBhNmYxZDVmNDNlN2EwN2RmZmRmYzc1OWExMjA2MmJiOGQ2YjQ0ZTgzM2IzMDZkYTliZDI5YmE4MWYzNTc4MWQ1MzlkMzk1YjM1MzJhMjFlADB4ZTczNTVmOGU0ZTY2N2I5NTUzOTBmN2YwNTA2YzZlOTM5NTczNWU5Y2U5Y2FkNGQwYTQzYmNlZjI0Yjg5ODJmNzQwMGQyNGJjNDIyOGYxMWMwMmRmOWEyOWY2MzA0YTUAMHg3NzJjYWFjZjE2OTM2MTkwZjNlMGM2M2UwNTk2NzIxNTcwZjU3OTlhZjUzYTE4OTRlMmUwNzMwNjJhZWRlOWNlYTczYjM1MzhmMGRlMDZjZWMyNTc0NDk2ZWU4NGEzYQAweDE0YTdhYzJhOWQ2NGE4YjIzMGIzZjViMDc0Y2YwMTk5NmU3ZjYzYzIxYmNhNjhhODE5OTZlMWNkZjk4MjJjNTgwZmE1Yjk0ODlkMTFlMmQzMTFmN2Q5OWJiZGNjNWE1ZQAweGExMGVjZjZhZGE1NGY4MjVlOTIwYjNkYWZjN2EzY2NlMDdmOGQxZDcxNjEzNjZiNzQxMDBkYTY3ZjM5ODgzNTAzODI2NjkyYWJiYTQzNzA0Nzc2ZWMzYTc5YTFkNjQxADB4OTVmYzEzYWI5ZTkyYWQ0NDc2ZDZlM2ViM2E1NjY4MGY2ODJiNGVlOTZmN2QwMzc3NmRmNTMzOTc4ZjMxYzE1OTMxNzRlNGI0Yjc4NjUwMDJkNjM4NGQxNjhlY2RkMGEAMHgxADB4OTBkOTdjODFiYTI0ZWUwMjU5ZDFmMDk0OTgwZGNmYTExYWQxMzhlNDhhODY5NTIyYjUyYWY2Yzk1NjU0M2QzY2QwYzdhZWU5YjNiYTNjMmJlOTg0NTcxOTcwN2JiMzMAMHgxMzQ5OTZhMTA0ZWU1ODExZDUxMDM2ZDc3NmZiNDY4MzEyMjNlOTZjMjU0ZjM4M2QwZjkwNjM0M2ViNjdhZDM0ZDZjNTY3MTE5NjJmYThiZmUwOTdlNzVhMmU0MWM2OTYAMHhjYzc4NmJhYTk2NmU2NmY0YTM4NGM4NmEzYjQ5OTQyNTUyZTJkNjU4YTMxY2UyYzM0NGJlNGI5MTQwMGRhN2QyNmQ1MjE2MjhiMDA1MjNiOGRmZTI0MGM3MmRlMWY2ADB4MWY4NjM3NmU4OTgxYzIxNzg5ODc1MWFkODc0Njc1N2Q0MmFhN2I5MGVlYjc5MWMwOWU0YTNlYzAzMjUxY2Y5ZGU0MDVhYmE5ZWM2MWRlY2E2MzU1Yzc3YjBlNWY0Y2IAMHg4Y2MwM2ZkZWZlMGZmMTM1Y2FmNGZlMmEyMTUyOWM0MTk1NTM2ZmJlM2NlNTBiODc5ODMzZmQyMjEzNTFhZGMyZWU3ZjhkYzA5OTA0MGE4NDFiNmRhZWNmMmU4ZmVkYgAweDE2NjAzZmNhNDA2MzRiNmEyMjExZTExZGI4ZjBhNmEwNzRhN2QwZDRhZmFkYjdiZDc2NTA1YzNkM2FkNTU0NGUyMDNmNjMyNmM5NWE4MDcyOTliMjNhYjEzNjMzYTVmMAAweDRhYjBiOWJjZmFjMWJiY2IyYzk3N2QwMjc3OTZiM2NlNzViYjhjYTJiZTE4NGNiNTIzMTQxM2M0ZDYzNGYzNzQ3YTg3YWMyNDYwZjQxNWVjOTYxZjg4NTVmZTlkNmYyADB4OTg3YzhkNTMzM2FiODZmZGU5OTI2YmQyY2E2YzY3NDE3MGEwNWJmZTNiZGQ4MWZmZDAzOGRhNmMyNmM4NDI2NDJmNjQ1NTBmZWRmZTkzNWExNWU0Y2EzMTg3MGZiMjkAMHg5ZmM0MDE4YmQ5NjY4NGJlODhjOWUyMjFlNGRhMWJiOGYzYWJkMTY2NzlkYzI2YzFlOGI2ZTZhMWYyMGNhYmU2OWQ2NTIwMWM3ODYwN2EzNjAzNzBlNTc3YmRiYTU4NwAweGUxYmJhN2ExMTg2YmRiNTIyM2FiZGU3YWRhMTRhMjNjNDJhMGNhNzkxNWFmNmZlMDY5ODVlN2VkMWU0ZDQzYjliM2Y3MDU1ZGQ0ZWJhNmYyYmFmYWFlYmNhNzMxYzMwADB4MTk3MTNlNDc5MzdjZDFiZTBkZmQwYjhmMWQ0M2ZiOTNjZDJmY2JjYjZjYWY0OTNmZDExODNlNDE2Mzg5ZTYxMDMxYmYzYTVjY2UzZmJhZmNlODEzNzExYWQwMTFjMTMyADB4MThiNDZhOTA4ZjM2ZjZkZWI5MThjMTQzZmVkMmVkY2M1MjM1NTliOGFhZjBjMjQ2MmU2YmZlN2Y5MTFmNjQzMjQ5ZDljZGY0MWI0NGQ2MDZjZTA3YzhhNGQwMDc0ZDhlADB4YjE4MmNhYzEwMWI5Mzk5ZDE1NTA5NjAwNGY1M2Y0NDdhYTdiMTJhMzQyNmIwOGVjMDI3MTBlODA3YjQ2MzNmMDZjODUxYzE5MTkyMTFmMjBkNGMwNGYwMGI5NzFlZjgAMHgyNDVhMzk0YWQxZWNhOWI3MmZjMDBhZTdiZTMxNWRjNzU3YjNiMDgwZDRjMTU4MDEzZTY2MzJkM2M0MDY1OWNjNmNmOTBhZDFjMjMyYTY0NDJkOWQzZjVkYjk4MDEzMwAweDVjMTI5NjQ1ZTQ0Y2YxMTAyYTE1OWY3NDhjNGEzZmM1ZTY3M2Q4MWQ3ZTg2NTY4ZDlhYjBmNWQzOTZhN2NlNDZiYTEwNDliNjU3OWFmYjc4NjZiMWU3MTU0NzUyMjRiADB4MTVlNmJlNGU5OTBmMDNjZTRlYTUwYjNiNDJkZjJlYjVjYjE4MWQ4Zjg0OTY1YTM5NTdhZGQ0ZmE5NWFmMDFiMmI2NjUwMjdlZmVjMDFjNzcwNGI0NTZiZTY5YzhiNjA0ADB4MTYxMTJjNGMzYTljOThiMjUyMTgxMTQwZmFkMGVhZTk2MDFhNmRlNTc4OTgwYmU2ZWVjMzIzMmI1YmU3MmU3YTA3ZjM2ODhlZjYwYzIwNmQwMTQ3OTI1M2IwMzY2M2MxADB4MTk2MmQ3NWMyMzgxMjAxZTFhMGNiZDZjNDNjMzQ4Yjg4NWM4NGZmNzMxYzRkNTljYTRhMTAzNTZmNDUzZTAxZjc4YTQyNjA3NjM1MjllMzUzMmY2MTAyYzJlNDlhMDNkADB4NThkZjMzMDY2NDBkYTI3NmZhYWFlN2Q2ZThlYjE1Nzc4YzQ4NTU1NTFhZTdmMzEwYzM1YTVkZDI3OWNkMmVjYTY3NTdjZDYzNmY5NmY4OTFlMjUzOGI1M2RiZjY3ZjIAMHgxNmI3ZDI4ODc5OGU1Mzk1ZjIwZDIzYmY4OWVkYjRkMWQxMTVjNWRiZGRiY2QzMGUxMjNkYTQ4OWU3MjZhZjQxNzI3MzY0ZjJjMjgyOTdhZGE4ZDI2ZDk4NDQ1ZjU0MTYAMHhiZTBlMDc5NTQ1ZjQzZTRiMDBjYzkxMmY4MjI4ZGRjYzZkMTljOWYwZjY5YmJiMDU0MmVkYTBmYzlkZWM5MTZhMjBiMTVkYzBmZDJlZGVkZGEzOTE0MjMxMWE1MDAxZAAweDhkOWU1Mjk3MTg2ZGIyZDlmYjI2NmVhYWM3ODMxODJiNzAxNTJjNjU1NTBkODgxYzVlY2Q4N2I2ZjBmNWE2NDQ5ZjM4ZGI5ZGZhOWNjZTIwMmM2NDc3ZmFhZjliN2FjADB4MTY2MDA3YzA4YTk5ZGIyZmMzYmE4NzM0YWNlOTgyNGI1ZWVjZmRmYThkMGNmOGVmNWRkMzY1YmM0MDBhMDA1MWQ1ZmE5YzAxYTU4YjFmYjkzZDFhMTM5OTEyNmE3NzVjADB4MTZhM2VmMDhiZTNlYTdlYTAzYmNkZGZhYmJhNmZmNmVlNWE0Mzc1ZWZhMWY0ZmQ3ZmViMzRmZDIwNjM1NzEzMmI5MjBmNWIwMDgwMWRlZTQ2MGVlNDE1YTE1ODEyZWQ5ADB4MTg2NmM4ZWQzMzZjNjEyMzFhMWJlNTRmZDFkNzRjYzRmOWZiMGNlNGM2YWY1OTIwYWJjNTc1MGM0YmYzOWI0ODUyY2ZlMmY3YmI5MjQ4ODM2YjIzM2Q5ZDU1NTM1ZDRhADB4MTY3YTU1Y2RhNzBhNmUxY2VhODIwNTk3ZDk0YTg0OTAzMjE2Zjc2M2UxM2Q4N2JiNTMwODU5MmU3ZWE3ZDRmYmM3Mzg1ZWEzZDUyOWIzNWUzNDZlZjQ4YmI4OTEzZjU1ADB4NGQyZjI1OWVlYTQwNWJkNDhmMDEwYTAxYWQyOTExZDljNmRkMDM5YmI2MWE2MjkwZTU5MWIzNmU2MzZhNWM4NzFhNWMyOWY0ZjgzMDYwNDAwZjhiNDljYmE4ZjZhYTgAMHhhY2NiYjY3NDgxZDAzM2ZmNTg1MmMxZTQ4YzUwYzQ3N2Y5NGZmOGFlZmNlNDJkMjhjMGY5YTg4Y2VhNzkxMzUxNmY5Njg5ODZmN2ViYmVhOTY4NGI1MjllMjU2MTA5MgAweGFkNmI5NTE0Yzc2N2ZlM2MzNjEzMTQ0YjQ1ZjE0OTY1NDMzNDZkOThhZGYwMjI2N2Q1Y2VlZjlhMDBkOWI4NjkzMDAwNzYzZTNiOTBhYzExZTk5YjEzODU3MzM0NWNjADB4MjY2MDQwMGViMmU0ZjNiNjI4YmRkMGQ1M2NkNzZmMmJmNTY1Yjk0ZTcyOTI3YzFjYjc0OGRmMjc5NDI0ODBlNDIwNTE3YmQ4NzE0Y2M4MGQxZmFkYzEzMjZlZDA2ZjcAMHhlMGZhMWQ4MTZkZGMwM2U2YjI0MjU1ZTBkNzgxOWMxNzFjNDBmNjVlMjczYjg1MzMyNGVmY2Q2MzU2Y2FhMjA1Y2EyZjU3MGYxMzQ5NzgwNDQxNTQ3M2ExZDYzNGI4ZgAAsDsAAAIAAAABAEG49gALmALEOwAAAgAAAAEAAAAAAAAAAQAAAOA7AAACAAAAAQAAAAAAAAACAAAA/DsAAAUAAAACAAAAAAAAAAMAAAAcPAAAAwAAAAkAAAAAAAAABAAAADA8AAAEAAAAAQAAAAEAAAAFAAAARDwAAAMAAAAEAAAAAAAAAAYAAAAtMHg0MDgwMDAwMDAwMDAwMDAxAC0weDQwMDAxMTAwMDAwMDAwMDAwMDAwMDAwMQAtMHg0MDAwNDAwOTAwMDEwMDAwMDAwMDAwMDEAMHg0MDAxZmZmZmZmZmZmZmZmZmZmZmZmZmZmYmZmZgA0OTY1NjYxMzY3MTkyODQ4ODgxAC0weGQyMDEwMDAwMDAwMTAwMDAAMHg0MDAwMDAwMDMxAEHg+AALEQEAAAAGAAAAGAAAACQAAAAkAEGA+QAL/QQBAAAABgAAABIAAAAkAAAAJAAAADQ5YjM2MjQwMDAwMDAwMDI0OTA5MDAwMDAwMDAwMDA2Y2Q4MDAwMDAwMDAwMDAwNwAyYTAxZmFiN2UwNGEwMTdiOWMwZWIzMWZmMzZiZjMzNTcAMzc5MzdjYTY4OGE2YjQ5MDQANjE4MTgwMDAwMDAwMDAwMjg1MDAwMDAwMDAwMDAwMDQAODEwMDAwMDAwMDAwMDAwMQAtNjE4MTgwMDAwMDAwMDAwMjA0MDAwMDAwMDAwMDAwMDMALTQwODAwMDAwMDAwMDAwMDEAZTAwYThlN2Y1NmUwMDdlNWIwOWZlN2ZkZjQzYmE5OTgALTE1MmFmZjU2YTgwNTRhYmY5ZGE3NWRiMmRhM2Q2ODg1MTAxZTVmZDM5OTdkNDFjYjEALWE5NTdmYWI1NDAyYTU1ZmNlZDNhZWQ5NmQxZWI0NDI5NWY0MGYxMzZlZTg0ZTA5YgAtZTAwYThlN2Y1NmUwMDdlOTI5ZDdiMjY2N2VhNmYyOWMAQkxTX1NJR19CTFMxMjM4MUcxX1hNRDpTSEEtMjU2X1NTV1VfUk9fUE9QXwBCTFNfU0lHX0JMUzEyMzgxRzJfWE1EOlNIQS0yNTZfU1NXVV9ST19QT1BfADAxMjM0NTY3ODlhYmNkZWYAMDEyMzQ1Njc4OUFCQ0RFRgAAAAC4DgAA3A4AAAAPAAAkDwAASA8AAGwPAACQDwAAtA8AANgPAAD8DwAAJDsAADg7AABMOwAAYDsAAHQ7AACIOwAAnDsAAF9fY3hhX2d1YXJkX2FjcXVpcmUgZGV0ZWN0ZWQgcmVjdXJzaXZlIGluaXRpYWxpemF0aW9uAEGA/gALI189AACAPQAAsz0AAOU9AABfPgAAcD4AAF8+AABwPgAAMINQ\";\n\nif (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n}\n\nfunction getBinary() {\n try {\n if (wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n var binary = tryParseAsDataURI(wasmBinaryFile);\n if (binary) {\n return binary;\n }\n if (readBinary) {\n return readBinary(wasmBinaryFile);\n } else {\n throw \"both async and sync fetching of the wasm failed\";\n }\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === \"function\" && !isFileURI(wasmBinaryFile)) {\n return fetch(wasmBinaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary();\n });\n }\n return Promise.resolve().then(getBinary);\n}\n\nfunction createWasm() {\n var info = {\n \"a\": asmLibraryArg\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module[\"asm\"] = exports;\n wasmTable = Module[\"asm\"][\"e\"];\n removeRunDependency(\"wasm-instantiate\");\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiatedSource(output) {\n receiveInstance(output[\"instance\"]);\n }\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise().then(function(binary) {\n return WebAssembly.instantiate(binary, info);\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync() {\n if (!wasmBinary && typeof WebAssembly.instantiateStreaming === \"function\" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === \"function\") {\n fetch(wasmBinaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiatedSource, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(receiveInstantiatedSource);\n });\n });\n } else {\n return instantiateArrayBuffer(receiveInstantiatedSource);\n }\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n instantiateAsync();\n return {};\n}\n\nvar ASM_CONSTS = {\n 3246: function($0, $1) {\n Module.cryptoGetRandomValues($0, $1);\n }\n};\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback(Module);\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n wasmTable.get(func)();\n } else {\n wasmTable.get(func)(callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n}\n\nfunction _emscripten_asm_const_int(code, sigPtr, argbuf) {\n var args = readAsmConstArgs(sigPtr, argbuf);\n return ASM_CONSTS[code].apply(null, args);\n}\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n requestedSize = requestedSize >>> 0;\n return false;\n}\n\nvar readAsmConstArgsArray = [];\n\nfunction readAsmConstArgs(sigPtr, buf) {\n readAsmConstArgsArray.length = 0;\n var ch;\n buf >>= 2;\n while (ch = HEAPU8[sigPtr++]) {\n var double = ch < 105;\n if (double && buf & 1) buf++;\n readAsmConstArgsArray.push(double ? HEAPF64[buf++ >> 1] : HEAP32[buf]);\n ++buf;\n }\n return readAsmConstArgsArray;\n}\n\nvar ASSERTIONS = false;\n\nfunction intArrayToString(array) {\n var ret = [];\n for (var i = 0; i < array.length; i++) {\n var chr = array[i];\n if (chr > 255) {\n if (ASSERTIONS) {\n assert(false, \"Character code \" + chr + \" (\" + String.fromCharCode(chr) + \") at offset \" + i + \" not in 0x00-0xFF.\");\n }\n chr &= 255;\n }\n ret.push(String.fromCharCode(chr));\n }\n return ret.join(\"\");\n}\n\nvar decodeBase64 = typeof atob === \"function\" ? atob : function(input) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n } while (i < input.length);\n return output;\n};\n\nfunction intArrayFromBase64(s) {\n if (typeof ENVIRONMENT_IS_NODE === \"boolean\" && ENVIRONMENT_IS_NODE) {\n var buf;\n try {\n buf = Buffer.from(s, \"base64\");\n } catch (_) {\n buf = new Buffer(s, \"base64\");\n }\n return new Uint8Array(buf[\"buffer\"], buf[\"byteOffset\"], buf[\"byteLength\"]);\n }\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n}\n\nfunction tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n}\n\n__ATINIT__.push({\n func: function() {\n ___wasm_call_ctors();\n }\n});\n\nvar asmLibraryArg = {\n \"d\": _emscripten_asm_const_int,\n \"b\": _emscripten_memcpy_big,\n \"c\": _emscripten_resize_heap,\n \"a\": wasmMemory\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = Module[\"___wasm_call_ctors\"] = function() {\n return (___wasm_call_ctors = Module[\"___wasm_call_ctors\"] = Module[\"asm\"][\"f\"]).apply(null, arguments);\n};\n\nvar _mclBnMalloc = Module[\"_mclBnMalloc\"] = function() {\n return (_mclBnMalloc = Module[\"_mclBnMalloc\"] = Module[\"asm\"][\"g\"]).apply(null, arguments);\n};\n\nvar _mclBnFree = Module[\"_mclBnFree\"] = function() {\n return (_mclBnFree = Module[\"_mclBnFree\"] = Module[\"asm\"][\"h\"]).apply(null, arguments);\n};\n\nvar _mclBn_getVersion = Module[\"_mclBn_getVersion\"] = function() {\n return (_mclBn_getVersion = Module[\"_mclBn_getVersion\"] = Module[\"asm\"][\"i\"]).apply(null, arguments);\n};\n\nvar _mclBn_init = Module[\"_mclBn_init\"] = function() {\n return (_mclBn_init = Module[\"_mclBn_init\"] = Module[\"asm\"][\"j\"]).apply(null, arguments);\n};\n\nvar _mclBn_getCurveType = Module[\"_mclBn_getCurveType\"] = function() {\n return (_mclBn_getCurveType = Module[\"_mclBn_getCurveType\"] = Module[\"asm\"][\"k\"]).apply(null, arguments);\n};\n\nvar _mclBn_getOpUnitSize = Module[\"_mclBn_getOpUnitSize\"] = function() {\n return (_mclBn_getOpUnitSize = Module[\"_mclBn_getOpUnitSize\"] = Module[\"asm\"][\"l\"]).apply(null, arguments);\n};\n\nvar _mclBn_getG1ByteSize = Module[\"_mclBn_getG1ByteSize\"] = function() {\n return (_mclBn_getG1ByteSize = Module[\"_mclBn_getG1ByteSize\"] = Module[\"asm\"][\"m\"]).apply(null, arguments);\n};\n\nvar _mclBn_getFpByteSize = Module[\"_mclBn_getFpByteSize\"] = function() {\n return (_mclBn_getFpByteSize = Module[\"_mclBn_getFpByteSize\"] = Module[\"asm\"][\"n\"]).apply(null, arguments);\n};\n\nvar _mclBn_getFrByteSize = Module[\"_mclBn_getFrByteSize\"] = function() {\n return (_mclBn_getFrByteSize = Module[\"_mclBn_getFrByteSize\"] = Module[\"asm\"][\"o\"]).apply(null, arguments);\n};\n\nvar _mclBn_getCurveOrder = Module[\"_mclBn_getCurveOrder\"] = function() {\n return (_mclBn_getCurveOrder = Module[\"_mclBn_getCurveOrder\"] = Module[\"asm\"][\"p\"]).apply(null, arguments);\n};\n\nvar _mclBn_getFieldOrder = Module[\"_mclBn_getFieldOrder\"] = function() {\n return (_mclBn_getFieldOrder = Module[\"_mclBn_getFieldOrder\"] = Module[\"asm\"][\"q\"]).apply(null, arguments);\n};\n\nvar _mclBn_setETHserialization = Module[\"_mclBn_setETHserialization\"] = function() {\n return (_mclBn_setETHserialization = Module[\"_mclBn_setETHserialization\"] = Module[\"asm\"][\"r\"]).apply(null, arguments);\n};\n\nvar _mclBn_getETHserialization = Module[\"_mclBn_getETHserialization\"] = function() {\n return (_mclBn_getETHserialization = Module[\"_mclBn_getETHserialization\"] = Module[\"asm\"][\"s\"]).apply(null, arguments);\n};\n\nvar _mclBn_setMapToMode = Module[\"_mclBn_setMapToMode\"] = function() {\n return (_mclBn_setMapToMode = Module[\"_mclBn_setMapToMode\"] = Module[\"asm\"][\"t\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_clear = Module[\"_mclBnFr_clear\"] = function() {\n return (_mclBnFr_clear = Module[\"_mclBnFr_clear\"] = Module[\"asm\"][\"u\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setInt = Module[\"_mclBnFr_setInt\"] = function() {\n return (_mclBnFr_setInt = Module[\"_mclBnFr_setInt\"] = Module[\"asm\"][\"v\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setInt32 = Module[\"_mclBnFr_setInt32\"] = function() {\n return (_mclBnFr_setInt32 = Module[\"_mclBnFr_setInt32\"] = Module[\"asm\"][\"w\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setStr = Module[\"_mclBnFr_setStr\"] = function() {\n return (_mclBnFr_setStr = Module[\"_mclBnFr_setStr\"] = Module[\"asm\"][\"x\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setLittleEndian = Module[\"_mclBnFr_setLittleEndian\"] = function() {\n return (_mclBnFr_setLittleEndian = Module[\"_mclBnFr_setLittleEndian\"] = Module[\"asm\"][\"y\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setBigEndianMod = Module[\"_mclBnFr_setBigEndianMod\"] = function() {\n return (_mclBnFr_setBigEndianMod = Module[\"_mclBnFr_setBigEndianMod\"] = Module[\"asm\"][\"z\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_getLittleEndian = Module[\"_mclBnFr_getLittleEndian\"] = function() {\n return (_mclBnFr_getLittleEndian = Module[\"_mclBnFr_getLittleEndian\"] = Module[\"asm\"][\"A\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setLittleEndianMod = Module[\"_mclBnFr_setLittleEndianMod\"] = function() {\n return (_mclBnFr_setLittleEndianMod = Module[\"_mclBnFr_setLittleEndianMod\"] = Module[\"asm\"][\"B\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_deserialize = Module[\"_mclBnFr_deserialize\"] = function() {\n return (_mclBnFr_deserialize = Module[\"_mclBnFr_deserialize\"] = Module[\"asm\"][\"C\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_isValid = Module[\"_mclBnFr_isValid\"] = function() {\n return (_mclBnFr_isValid = Module[\"_mclBnFr_isValid\"] = Module[\"asm\"][\"D\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_isEqual = Module[\"_mclBnFr_isEqual\"] = function() {\n return (_mclBnFr_isEqual = Module[\"_mclBnFr_isEqual\"] = Module[\"asm\"][\"E\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_isZero = Module[\"_mclBnFr_isZero\"] = function() {\n return (_mclBnFr_isZero = Module[\"_mclBnFr_isZero\"] = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_isOne = Module[\"_mclBnFr_isOne\"] = function() {\n return (_mclBnFr_isOne = Module[\"_mclBnFr_isOne\"] = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_isOdd = Module[\"_mclBnFr_isOdd\"] = function() {\n return (_mclBnFr_isOdd = Module[\"_mclBnFr_isOdd\"] = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_isNegative = Module[\"_mclBnFr_isNegative\"] = function() {\n return (_mclBnFr_isNegative = Module[\"_mclBnFr_isNegative\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setByCSPRNG = Module[\"_mclBnFr_setByCSPRNG\"] = function() {\n return (_mclBnFr_setByCSPRNG = Module[\"_mclBnFr_setByCSPRNG\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setByCSPRNG = Module[\"_mclBnFp_setByCSPRNG\"] = function() {\n return (_mclBnFp_setByCSPRNG = Module[\"_mclBnFp_setByCSPRNG\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n};\n\nvar _mclBn_setRandFunc = Module[\"_mclBn_setRandFunc\"] = function() {\n return (_mclBn_setRandFunc = Module[\"_mclBn_setRandFunc\"] = Module[\"asm\"][\"L\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_setHashOf = Module[\"_mclBnFr_setHashOf\"] = function() {\n return (_mclBnFr_setHashOf = Module[\"_mclBnFr_setHashOf\"] = Module[\"asm\"][\"M\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_getStr = Module[\"_mclBnFr_getStr\"] = function() {\n return (_mclBnFr_getStr = Module[\"_mclBnFr_getStr\"] = Module[\"asm\"][\"N\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_serialize = Module[\"_mclBnFr_serialize\"] = function() {\n return (_mclBnFr_serialize = Module[\"_mclBnFr_serialize\"] = Module[\"asm\"][\"O\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_neg = Module[\"_mclBnFr_neg\"] = function() {\n return (_mclBnFr_neg = Module[\"_mclBnFr_neg\"] = Module[\"asm\"][\"P\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_inv = Module[\"_mclBnFr_inv\"] = function() {\n return (_mclBnFr_inv = Module[\"_mclBnFr_inv\"] = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_sqr = Module[\"_mclBnFr_sqr\"] = function() {\n return (_mclBnFr_sqr = Module[\"_mclBnFr_sqr\"] = Module[\"asm\"][\"R\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_add = Module[\"_mclBnFr_add\"] = function() {\n return (_mclBnFr_add = Module[\"_mclBnFr_add\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_sub = Module[\"_mclBnFr_sub\"] = function() {\n return (_mclBnFr_sub = Module[\"_mclBnFr_sub\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_mul = Module[\"_mclBnFr_mul\"] = function() {\n return (_mclBnFr_mul = Module[\"_mclBnFr_mul\"] = Module[\"asm\"][\"U\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_div = Module[\"_mclBnFr_div\"] = function() {\n return (_mclBnFr_div = Module[\"_mclBnFr_div\"] = Module[\"asm\"][\"V\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_neg = Module[\"_mclBnFp_neg\"] = function() {\n return (_mclBnFp_neg = Module[\"_mclBnFp_neg\"] = Module[\"asm\"][\"W\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_inv = Module[\"_mclBnFp_inv\"] = function() {\n return (_mclBnFp_inv = Module[\"_mclBnFp_inv\"] = Module[\"asm\"][\"X\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_sqr = Module[\"_mclBnFp_sqr\"] = function() {\n return (_mclBnFp_sqr = Module[\"_mclBnFp_sqr\"] = Module[\"asm\"][\"Y\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_add = Module[\"_mclBnFp_add\"] = function() {\n return (_mclBnFp_add = Module[\"_mclBnFp_add\"] = Module[\"asm\"][\"Z\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_sub = Module[\"_mclBnFp_sub\"] = function() {\n return (_mclBnFp_sub = Module[\"_mclBnFp_sub\"] = Module[\"asm\"][\"_\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_mul = Module[\"_mclBnFp_mul\"] = function() {\n return (_mclBnFp_mul = Module[\"_mclBnFp_mul\"] = Module[\"asm\"][\"$\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_div = Module[\"_mclBnFp_div\"] = function() {\n return (_mclBnFp_div = Module[\"_mclBnFp_div\"] = Module[\"asm\"][\"aa\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_neg = Module[\"_mclBnFp2_neg\"] = function() {\n return (_mclBnFp2_neg = Module[\"_mclBnFp2_neg\"] = Module[\"asm\"][\"ba\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_inv = Module[\"_mclBnFp2_inv\"] = function() {\n return (_mclBnFp2_inv = Module[\"_mclBnFp2_inv\"] = Module[\"asm\"][\"ca\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_sqr = Module[\"_mclBnFp2_sqr\"] = function() {\n return (_mclBnFp2_sqr = Module[\"_mclBnFp2_sqr\"] = Module[\"asm\"][\"da\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_add = Module[\"_mclBnFp2_add\"] = function() {\n return (_mclBnFp2_add = Module[\"_mclBnFp2_add\"] = Module[\"asm\"][\"ea\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_sub = Module[\"_mclBnFp2_sub\"] = function() {\n return (_mclBnFp2_sub = Module[\"_mclBnFp2_sub\"] = Module[\"asm\"][\"fa\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_mul = Module[\"_mclBnFp2_mul\"] = function() {\n return (_mclBnFp2_mul = Module[\"_mclBnFp2_mul\"] = Module[\"asm\"][\"ga\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_div = Module[\"_mclBnFp2_div\"] = function() {\n return (_mclBnFp2_div = Module[\"_mclBnFp2_div\"] = Module[\"asm\"][\"ha\"]).apply(null, arguments);\n};\n\nvar _mclBnFr_squareRoot = Module[\"_mclBnFr_squareRoot\"] = function() {\n return (_mclBnFr_squareRoot = Module[\"_mclBnFr_squareRoot\"] = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_squareRoot = Module[\"_mclBnFp_squareRoot\"] = function() {\n return (_mclBnFp_squareRoot = Module[\"_mclBnFp_squareRoot\"] = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_squareRoot = Module[\"_mclBnFp2_squareRoot\"] = function() {\n return (_mclBnFp2_squareRoot = Module[\"_mclBnFp2_squareRoot\"] = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_clear = Module[\"_mclBnG1_clear\"] = function() {\n return (_mclBnG1_clear = Module[\"_mclBnG1_clear\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_setStr = Module[\"_mclBnG1_setStr\"] = function() {\n return (_mclBnG1_setStr = Module[\"_mclBnG1_setStr\"] = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_deserialize = Module[\"_mclBnG1_deserialize\"] = function() {\n return (_mclBnG1_deserialize = Module[\"_mclBnG1_deserialize\"] = Module[\"asm\"][\"na\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_isValid = Module[\"_mclBnG1_isValid\"] = function() {\n return (_mclBnG1_isValid = Module[\"_mclBnG1_isValid\"] = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_isEqual = Module[\"_mclBnG1_isEqual\"] = function() {\n return (_mclBnG1_isEqual = Module[\"_mclBnG1_isEqual\"] = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_isZero = Module[\"_mclBnG1_isZero\"] = function() {\n return (_mclBnG1_isZero = Module[\"_mclBnG1_isZero\"] = Module[\"asm\"][\"qa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_isValidOrder = Module[\"_mclBnG1_isValidOrder\"] = function() {\n return (_mclBnG1_isValidOrder = Module[\"_mclBnG1_isValidOrder\"] = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_hashAndMapTo = Module[\"_mclBnG1_hashAndMapTo\"] = function() {\n return (_mclBnG1_hashAndMapTo = Module[\"_mclBnG1_hashAndMapTo\"] = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_getStr = Module[\"_mclBnG1_getStr\"] = function() {\n return (_mclBnG1_getStr = Module[\"_mclBnG1_getStr\"] = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_serialize = Module[\"_mclBnG1_serialize\"] = function() {\n return (_mclBnG1_serialize = Module[\"_mclBnG1_serialize\"] = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_neg = Module[\"_mclBnG1_neg\"] = function() {\n return (_mclBnG1_neg = Module[\"_mclBnG1_neg\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_dbl = Module[\"_mclBnG1_dbl\"] = function() {\n return (_mclBnG1_dbl = Module[\"_mclBnG1_dbl\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_normalize = Module[\"_mclBnG1_normalize\"] = function() {\n return (_mclBnG1_normalize = Module[\"_mclBnG1_normalize\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_add = Module[\"_mclBnG1_add\"] = function() {\n return (_mclBnG1_add = Module[\"_mclBnG1_add\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_sub = Module[\"_mclBnG1_sub\"] = function() {\n return (_mclBnG1_sub = Module[\"_mclBnG1_sub\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_mul = Module[\"_mclBnG1_mul\"] = function() {\n return (_mclBnG1_mul = Module[\"_mclBnG1_mul\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_mulCT = Module[\"_mclBnG1_mulCT\"] = function() {\n return (_mclBnG1_mulCT = Module[\"_mclBnG1_mulCT\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_clear = Module[\"_mclBnG2_clear\"] = function() {\n return (_mclBnG2_clear = Module[\"_mclBnG2_clear\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_setStr = Module[\"_mclBnG2_setStr\"] = function() {\n return (_mclBnG2_setStr = Module[\"_mclBnG2_setStr\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_deserialize = Module[\"_mclBnG2_deserialize\"] = function() {\n return (_mclBnG2_deserialize = Module[\"_mclBnG2_deserialize\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_isValid = Module[\"_mclBnG2_isValid\"] = function() {\n return (_mclBnG2_isValid = Module[\"_mclBnG2_isValid\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_isEqual = Module[\"_mclBnG2_isEqual\"] = function() {\n return (_mclBnG2_isEqual = Module[\"_mclBnG2_isEqual\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_isZero = Module[\"_mclBnG2_isZero\"] = function() {\n return (_mclBnG2_isZero = Module[\"_mclBnG2_isZero\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_isValidOrder = Module[\"_mclBnG2_isValidOrder\"] = function() {\n return (_mclBnG2_isValidOrder = Module[\"_mclBnG2_isValidOrder\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_hashAndMapTo = Module[\"_mclBnG2_hashAndMapTo\"] = function() {\n return (_mclBnG2_hashAndMapTo = Module[\"_mclBnG2_hashAndMapTo\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_getStr = Module[\"_mclBnG2_getStr\"] = function() {\n return (_mclBnG2_getStr = Module[\"_mclBnG2_getStr\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_serialize = Module[\"_mclBnG2_serialize\"] = function() {\n return (_mclBnG2_serialize = Module[\"_mclBnG2_serialize\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_neg = Module[\"_mclBnG2_neg\"] = function() {\n return (_mclBnG2_neg = Module[\"_mclBnG2_neg\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_dbl = Module[\"_mclBnG2_dbl\"] = function() {\n return (_mclBnG2_dbl = Module[\"_mclBnG2_dbl\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_normalize = Module[\"_mclBnG2_normalize\"] = function() {\n return (_mclBnG2_normalize = Module[\"_mclBnG2_normalize\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_add = Module[\"_mclBnG2_add\"] = function() {\n return (_mclBnG2_add = Module[\"_mclBnG2_add\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_sub = Module[\"_mclBnG2_sub\"] = function() {\n return (_mclBnG2_sub = Module[\"_mclBnG2_sub\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_mul = Module[\"_mclBnG2_mul\"] = function() {\n return (_mclBnG2_mul = Module[\"_mclBnG2_mul\"] = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_mulCT = Module[\"_mclBnG2_mulCT\"] = function() {\n return (_mclBnG2_mulCT = Module[\"_mclBnG2_mulCT\"] = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_clear = Module[\"_mclBnGT_clear\"] = function() {\n return (_mclBnGT_clear = Module[\"_mclBnGT_clear\"] = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_setInt = Module[\"_mclBnGT_setInt\"] = function() {\n return (_mclBnGT_setInt = Module[\"_mclBnGT_setInt\"] = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_setInt32 = Module[\"_mclBnGT_setInt32\"] = function() {\n return (_mclBnGT_setInt32 = Module[\"_mclBnGT_setInt32\"] = Module[\"asm\"][\"Va\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_setStr = Module[\"_mclBnGT_setStr\"] = function() {\n return (_mclBnGT_setStr = Module[\"_mclBnGT_setStr\"] = Module[\"asm\"][\"Wa\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_deserialize = Module[\"_mclBnGT_deserialize\"] = function() {\n return (_mclBnGT_deserialize = Module[\"_mclBnGT_deserialize\"] = Module[\"asm\"][\"Xa\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_isEqual = Module[\"_mclBnGT_isEqual\"] = function() {\n return (_mclBnGT_isEqual = Module[\"_mclBnGT_isEqual\"] = Module[\"asm\"][\"Ya\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_isZero = Module[\"_mclBnGT_isZero\"] = function() {\n return (_mclBnGT_isZero = Module[\"_mclBnGT_isZero\"] = Module[\"asm\"][\"Za\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_isOne = Module[\"_mclBnGT_isOne\"] = function() {\n return (_mclBnGT_isOne = Module[\"_mclBnGT_isOne\"] = Module[\"asm\"][\"_a\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_getStr = Module[\"_mclBnGT_getStr\"] = function() {\n return (_mclBnGT_getStr = Module[\"_mclBnGT_getStr\"] = Module[\"asm\"][\"$a\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_serialize = Module[\"_mclBnGT_serialize\"] = function() {\n return (_mclBnGT_serialize = Module[\"_mclBnGT_serialize\"] = Module[\"asm\"][\"ab\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_neg = Module[\"_mclBnGT_neg\"] = function() {\n return (_mclBnGT_neg = Module[\"_mclBnGT_neg\"] = Module[\"asm\"][\"bb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_inv = Module[\"_mclBnGT_inv\"] = function() {\n return (_mclBnGT_inv = Module[\"_mclBnGT_inv\"] = Module[\"asm\"][\"cb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_invGeneric = Module[\"_mclBnGT_invGeneric\"] = function() {\n return (_mclBnGT_invGeneric = Module[\"_mclBnGT_invGeneric\"] = Module[\"asm\"][\"db\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_sqr = Module[\"_mclBnGT_sqr\"] = function() {\n return (_mclBnGT_sqr = Module[\"_mclBnGT_sqr\"] = Module[\"asm\"][\"eb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_add = Module[\"_mclBnGT_add\"] = function() {\n return (_mclBnGT_add = Module[\"_mclBnGT_add\"] = Module[\"asm\"][\"fb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_sub = Module[\"_mclBnGT_sub\"] = function() {\n return (_mclBnGT_sub = Module[\"_mclBnGT_sub\"] = Module[\"asm\"][\"gb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_mul = Module[\"_mclBnGT_mul\"] = function() {\n return (_mclBnGT_mul = Module[\"_mclBnGT_mul\"] = Module[\"asm\"][\"hb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_div = Module[\"_mclBnGT_div\"] = function() {\n return (_mclBnGT_div = Module[\"_mclBnGT_div\"] = Module[\"asm\"][\"ib\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_pow = Module[\"_mclBnGT_pow\"] = function() {\n return (_mclBnGT_pow = Module[\"_mclBnGT_pow\"] = Module[\"asm\"][\"jb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_powGeneric = Module[\"_mclBnGT_powGeneric\"] = function() {\n return (_mclBnGT_powGeneric = Module[\"_mclBnGT_powGeneric\"] = Module[\"asm\"][\"kb\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_mulVec = Module[\"_mclBnG1_mulVec\"] = function() {\n return (_mclBnG1_mulVec = Module[\"_mclBnG1_mulVec\"] = Module[\"asm\"][\"lb\"]).apply(null, arguments);\n};\n\nvar _mclBnG2_mulVec = Module[\"_mclBnG2_mulVec\"] = function() {\n return (_mclBnG2_mulVec = Module[\"_mclBnG2_mulVec\"] = Module[\"asm\"][\"mb\"]).apply(null, arguments);\n};\n\nvar _mclBnGT_powVec = Module[\"_mclBnGT_powVec\"] = function() {\n return (_mclBnGT_powVec = Module[\"_mclBnGT_powVec\"] = Module[\"asm\"][\"nb\"]).apply(null, arguments);\n};\n\nvar _mclBn_pairing = Module[\"_mclBn_pairing\"] = function() {\n return (_mclBn_pairing = Module[\"_mclBn_pairing\"] = Module[\"asm\"][\"ob\"]).apply(null, arguments);\n};\n\nvar _mclBn_finalExp = Module[\"_mclBn_finalExp\"] = function() {\n return (_mclBn_finalExp = Module[\"_mclBn_finalExp\"] = Module[\"asm\"][\"pb\"]).apply(null, arguments);\n};\n\nvar _mclBn_millerLoop = Module[\"_mclBn_millerLoop\"] = function() {\n return (_mclBn_millerLoop = Module[\"_mclBn_millerLoop\"] = Module[\"asm\"][\"qb\"]).apply(null, arguments);\n};\n\nvar _mclBn_millerLoopVec = Module[\"_mclBn_millerLoopVec\"] = function() {\n return (_mclBn_millerLoopVec = Module[\"_mclBn_millerLoopVec\"] = Module[\"asm\"][\"rb\"]).apply(null, arguments);\n};\n\nvar _mclBn_getUint64NumToPrecompute = Module[\"_mclBn_getUint64NumToPrecompute\"] = function() {\n return (_mclBn_getUint64NumToPrecompute = Module[\"_mclBn_getUint64NumToPrecompute\"] = Module[\"asm\"][\"sb\"]).apply(null, arguments);\n};\n\nvar _mclBn_precomputeG2 = Module[\"_mclBn_precomputeG2\"] = function() {\n return (_mclBn_precomputeG2 = Module[\"_mclBn_precomputeG2\"] = Module[\"asm\"][\"tb\"]).apply(null, arguments);\n};\n\nvar _mclBn_precomputedMillerLoop = Module[\"_mclBn_precomputedMillerLoop\"] = function() {\n return (_mclBn_precomputedMillerLoop = Module[\"_mclBn_precomputedMillerLoop\"] = Module[\"asm\"][\"ub\"]).apply(null, arguments);\n};\n\nvar _mclBn_precomputedMillerLoop2 = Module[\"_mclBn_precomputedMillerLoop2\"] = function() {\n return (_mclBn_precomputedMillerLoop2 = Module[\"_mclBn_precomputedMillerLoop2\"] = Module[\"asm\"][\"vb\"]).apply(null, arguments);\n};\n\nvar _mclBn_precomputedMillerLoop2mixed = Module[\"_mclBn_precomputedMillerLoop2mixed\"] = function() {\n return (_mclBn_precomputedMillerLoop2mixed = Module[\"_mclBn_precomputedMillerLoop2mixed\"] = Module[\"asm\"][\"wb\"]).apply(null, arguments);\n};\n\nvar _mclBn_FrLagrangeInterpolation = Module[\"_mclBn_FrLagrangeInterpolation\"] = function() {\n return (_mclBn_FrLagrangeInterpolation = Module[\"_mclBn_FrLagrangeInterpolation\"] = Module[\"asm\"][\"xb\"]).apply(null, arguments);\n};\n\nvar _mclBn_G1LagrangeInterpolation = Module[\"_mclBn_G1LagrangeInterpolation\"] = function() {\n return (_mclBn_G1LagrangeInterpolation = Module[\"_mclBn_G1LagrangeInterpolation\"] = Module[\"asm\"][\"yb\"]).apply(null, arguments);\n};\n\nvar _mclBn_G2LagrangeInterpolation = Module[\"_mclBn_G2LagrangeInterpolation\"] = function() {\n return (_mclBn_G2LagrangeInterpolation = Module[\"_mclBn_G2LagrangeInterpolation\"] = Module[\"asm\"][\"zb\"]).apply(null, arguments);\n};\n\nvar _mclBn_FrEvaluatePolynomial = Module[\"_mclBn_FrEvaluatePolynomial\"] = function() {\n return (_mclBn_FrEvaluatePolynomial = Module[\"_mclBn_FrEvaluatePolynomial\"] = Module[\"asm\"][\"Ab\"]).apply(null, arguments);\n};\n\nvar _mclBn_G1EvaluatePolynomial = Module[\"_mclBn_G1EvaluatePolynomial\"] = function() {\n return (_mclBn_G1EvaluatePolynomial = Module[\"_mclBn_G1EvaluatePolynomial\"] = Module[\"asm\"][\"Bb\"]).apply(null, arguments);\n};\n\nvar _mclBn_G2EvaluatePolynomial = Module[\"_mclBn_G2EvaluatePolynomial\"] = function() {\n return (_mclBn_G2EvaluatePolynomial = Module[\"_mclBn_G2EvaluatePolynomial\"] = Module[\"asm\"][\"Cb\"]).apply(null, arguments);\n};\n\nvar _mclBn_verifyOrderG1 = Module[\"_mclBn_verifyOrderG1\"] = function() {\n return (_mclBn_verifyOrderG1 = Module[\"_mclBn_verifyOrderG1\"] = Module[\"asm\"][\"Db\"]).apply(null, arguments);\n};\n\nvar _mclBn_verifyOrderG2 = Module[\"_mclBn_verifyOrderG2\"] = function() {\n return (_mclBn_verifyOrderG2 = Module[\"_mclBn_verifyOrderG2\"] = Module[\"asm\"][\"Eb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setInt = Module[\"_mclBnFp_setInt\"] = function() {\n return (_mclBnFp_setInt = Module[\"_mclBnFp_setInt\"] = Module[\"asm\"][\"Fb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setInt32 = Module[\"_mclBnFp_setInt32\"] = function() {\n return (_mclBnFp_setInt32 = Module[\"_mclBnFp_setInt32\"] = Module[\"asm\"][\"Gb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_getStr = Module[\"_mclBnFp_getStr\"] = function() {\n return (_mclBnFp_getStr = Module[\"_mclBnFp_getStr\"] = Module[\"asm\"][\"Hb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setStr = Module[\"_mclBnFp_setStr\"] = function() {\n return (_mclBnFp_setStr = Module[\"_mclBnFp_setStr\"] = Module[\"asm\"][\"Ib\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_deserialize = Module[\"_mclBnFp_deserialize\"] = function() {\n return (_mclBnFp_deserialize = Module[\"_mclBnFp_deserialize\"] = Module[\"asm\"][\"Jb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_serialize = Module[\"_mclBnFp_serialize\"] = function() {\n return (_mclBnFp_serialize = Module[\"_mclBnFp_serialize\"] = Module[\"asm\"][\"Kb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_clear = Module[\"_mclBnFp_clear\"] = function() {\n return (_mclBnFp_clear = Module[\"_mclBnFp_clear\"] = Module[\"asm\"][\"Lb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setLittleEndian = Module[\"_mclBnFp_setLittleEndian\"] = function() {\n return (_mclBnFp_setLittleEndian = Module[\"_mclBnFp_setLittleEndian\"] = Module[\"asm\"][\"Mb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setLittleEndianMod = Module[\"_mclBnFp_setLittleEndianMod\"] = function() {\n return (_mclBnFp_setLittleEndianMod = Module[\"_mclBnFp_setLittleEndianMod\"] = Module[\"asm\"][\"Nb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setBigEndianMod = Module[\"_mclBnFp_setBigEndianMod\"] = function() {\n return (_mclBnFp_setBigEndianMod = Module[\"_mclBnFp_setBigEndianMod\"] = Module[\"asm\"][\"Ob\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_getLittleEndian = Module[\"_mclBnFp_getLittleEndian\"] = function() {\n return (_mclBnFp_getLittleEndian = Module[\"_mclBnFp_getLittleEndian\"] = Module[\"asm\"][\"Pb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_isValid = Module[\"_mclBnFp_isValid\"] = function() {\n return (_mclBnFp_isValid = Module[\"_mclBnFp_isValid\"] = Module[\"asm\"][\"Qb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_isEqual = Module[\"_mclBnFp_isEqual\"] = function() {\n return (_mclBnFp_isEqual = Module[\"_mclBnFp_isEqual\"] = Module[\"asm\"][\"Rb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_isZero = Module[\"_mclBnFp_isZero\"] = function() {\n return (_mclBnFp_isZero = Module[\"_mclBnFp_isZero\"] = Module[\"asm\"][\"Sb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_isOne = Module[\"_mclBnFp_isOne\"] = function() {\n return (_mclBnFp_isOne = Module[\"_mclBnFp_isOne\"] = Module[\"asm\"][\"Tb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_isOdd = Module[\"_mclBnFp_isOdd\"] = function() {\n return (_mclBnFp_isOdd = Module[\"_mclBnFp_isOdd\"] = Module[\"asm\"][\"Ub\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_isNegative = Module[\"_mclBnFp_isNegative\"] = function() {\n return (_mclBnFp_isNegative = Module[\"_mclBnFp_isNegative\"] = Module[\"asm\"][\"Vb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_setHashOf = Module[\"_mclBnFp_setHashOf\"] = function() {\n return (_mclBnFp_setHashOf = Module[\"_mclBnFp_setHashOf\"] = Module[\"asm\"][\"Wb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp_mapToG1 = Module[\"_mclBnFp_mapToG1\"] = function() {\n return (_mclBnFp_mapToG1 = Module[\"_mclBnFp_mapToG1\"] = Module[\"asm\"][\"Xb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_deserialize = Module[\"_mclBnFp2_deserialize\"] = function() {\n return (_mclBnFp2_deserialize = Module[\"_mclBnFp2_deserialize\"] = Module[\"asm\"][\"Yb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_serialize = Module[\"_mclBnFp2_serialize\"] = function() {\n return (_mclBnFp2_serialize = Module[\"_mclBnFp2_serialize\"] = Module[\"asm\"][\"Zb\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_clear = Module[\"_mclBnFp2_clear\"] = function() {\n return (_mclBnFp2_clear = Module[\"_mclBnFp2_clear\"] = Module[\"asm\"][\"_b\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_isEqual = Module[\"_mclBnFp2_isEqual\"] = function() {\n return (_mclBnFp2_isEqual = Module[\"_mclBnFp2_isEqual\"] = Module[\"asm\"][\"$b\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_isZero = Module[\"_mclBnFp2_isZero\"] = function() {\n return (_mclBnFp2_isZero = Module[\"_mclBnFp2_isZero\"] = Module[\"asm\"][\"ac\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_isOne = Module[\"_mclBnFp2_isOne\"] = function() {\n return (_mclBnFp2_isOne = Module[\"_mclBnFp2_isOne\"] = Module[\"asm\"][\"bc\"]).apply(null, arguments);\n};\n\nvar _mclBnFp2_mapToG2 = Module[\"_mclBnFp2_mapToG2\"] = function() {\n return (_mclBnFp2_mapToG2 = Module[\"_mclBnFp2_mapToG2\"] = Module[\"asm\"][\"cc\"]).apply(null, arguments);\n};\n\nvar _mclBnG1_getBasePoint = Module[\"_mclBnG1_getBasePoint\"] = function() {\n return (_mclBnG1_getBasePoint = Module[\"_mclBnG1_getBasePoint\"] = Module[\"asm\"][\"dc\"]).apply(null, arguments);\n};\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nModule[\"run\"] = run;\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nnoExitRuntime = true;\n\nrun();\n\n\n return Module.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = Module;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return Module; });\n else if (typeof exports === 'object')\n exports[\"Module\"] = Module;\n ","const _mclSetupFactory = (createModule, getRandomValues) => {\n const exports = {}\n /* eslint-disable */\n exports.BN254 = 0\n exports.BN381_1 = 1\n exports.BN381_2 = 2\n exports.BN462 = 3\n exports.BN_SNARK1 = 4\n exports.BLS12_381 = 5\n\n exports.SECP224K1 = 101\n exports.SECP256K1 = 102\n exports.SECP384R1 = 103\n exports.NIST_P192 = 105\n exports.NIST_P224 = 106\n exports.NIST_P256 = 107\n\n exports.IRTF = 5 /* MCL_MAP_TO_MODE_HASH_TO_CURVE_07 */\n exports.EC_PROJ = 1024 /* flag for G1/G2.getStr */\n\n const setup = (exports, curveType) => {\n const mod = exports.mod\n const MCLBN_FP_UNIT_SIZE = 6\n const MCLBN_FR_UNIT_SIZE = 4\n const MCLBN_COMPILED_TIME_VAR = (MCLBN_FR_UNIT_SIZE * 10 + MCLBN_FP_UNIT_SIZE)\n const MCLBN_FP_SIZE = MCLBN_FP_UNIT_SIZE * 8\n const MCLBN_FR_SIZE = MCLBN_FR_UNIT_SIZE * 8\n const MCLBN_G1_SIZE = MCLBN_FP_SIZE * 3\n const MCLBN_G2_SIZE = MCLBN_FP_SIZE * 6\n const MCLBN_GT_SIZE = MCLBN_FP_SIZE * 12\n\n const _malloc = size => {\n return mod._mclBnMalloc(size)\n }\n const _free = pos => {\n mod._mclBnFree(pos)\n }\n const ptrToAsciiStr = (pos, n) => {\n let s = ''\n for (let i = 0; i < n; i++) {\n s += String.fromCharCode(mod.HEAP8[pos + i])\n }\n return s\n }\n const asciiStrToPtr = (pos, s) => {\n for (let i = 0; i < s.length; i++) {\n mod.HEAP8[pos + i] = s.charCodeAt(i)\n }\n }\n exports.toHex = (a, start, n) => {\n let s = ''\n for (let i = 0; i < n; i++) {\n s += ('0' + a[start + i].toString(16)).slice(-2)\n }\n return s\n }\n // Uint8Array to hex string\n exports.toHexStr = a => {\n return exports.toHex(a, 0, a.length)\n }\n // hex string to Uint8Array\n exports.fromHexStr = s => {\n if (s.length & 1) throw new Error('fromHexStr:length must be even ' + s.length)\n const n = s.length / 2\n const a = new Uint8Array(n)\n for (let i = 0; i < n; i++) {\n a[i] = parseInt(s.slice(i * 2, i * 2 + 2), 16)\n }\n return a\n }\n\n const _wrapGetStr = (func, returnAsStr = true) => {\n return (x, ioMode = 0) => {\n const maxBufSize = 3096\n const pos = _malloc(maxBufSize)\n const n = func(pos, maxBufSize, x, ioMode)\n if (n <= 0) {\n throw new Error('err gen_str:' + x)\n }\n let s = null\n if (returnAsStr) {\n s = ptrToAsciiStr(pos, n)\n } else {\n s = new Uint8Array(mod.HEAP8.subarray(pos, pos + n))\n }\n _free(pos)\n return s\n }\n }\n const _wrapSerialize = func => {\n return _wrapGetStr(func, false)\n }\n const _wrapDeserialize = func => {\n return (x, buf) => {\n const pos = _malloc(buf.length)\n mod.HEAP8.set(buf, pos)\n const r = func(x, pos, buf.length)\n _free(pos)\n if (r === 0 || r !== buf.length) throw new Error('err _wrapDeserialize', buf)\n }\n }\n /*\n argNum : n\n func(x0, ..., x_(n-1), buf, ioMode)\n => func(x0, ..., x_(n-1), pos, buf.length, ioMode)\n */\n const _wrapInput = (func, argNum) => {\n return function () {\n const args = [...arguments]\n const buf = args[argNum]\n const typeStr = Object.prototype.toString.apply(buf)\n if (['[object String]', '[object Uint8Array]', '[object Array]'].indexOf(typeStr) < 0) {\n throw new Error(`err bad type:\"${typeStr}\". Use String or Uint8Array.`)\n }\n const ioMode = args[argNum + 1] // may undefined\n const pos = _malloc(buf.length)\n if (typeStr === '[object String]') {\n asciiStrToPtr(pos, buf)\n } else {\n mod.HEAP8.set(buf, pos)\n }\n const r = func(...args.slice(0, argNum), pos, buf.length, ioMode)\n _free(pos)\n if (r) throw new Error('err _wrapInput ' + buf)\n }\n }\n const _mulVec = (func, xVec, yVec, Cstr) => {\n const n = xVec.length\n if (n != yVec.length) throw new Error(`err _mulVec bad length ${n}, ${yVec.length}`)\n const xSize = xVec[0].a_.length\n const ySize = yVec[0].a_.length\n const z = new Cstr()\n const zPos = z._alloc()\n const xPos = _malloc(xSize * n * 4)\n const yPos = _malloc(ySize * n * 4)\n let pos = xPos / 4\n for (let i = 0; i < n; i++) {\n mod.HEAP32.set(xVec[i].a_, pos)\n pos += xSize\n }\n pos = yPos / 4\n for (let i = 0; i < n; i++) {\n mod.HEAP32.set(yVec[i].a_, pos)\n pos += ySize\n }\n func(zPos, xPos, yPos, n)\n _free(yPos)\n _free(xPos)\n z._saveAndFree(zPos)\n return z\n }\n mod.mclBnFr_malloc = () => {\n return _malloc(MCLBN_FR_SIZE)\n }\n exports.free = x => {\n _free(x)\n }\n mod.mclBnFr_setLittleEndian = _wrapInput(mod._mclBnFr_setLittleEndian, 1)\n mod.mclBnFr_setLittleEndianMod = _wrapInput(mod._mclBnFr_setLittleEndianMod, 1)\n mod.mclBnFr_setBigEndianMod = _wrapInput(mod._mclBnFr_setBigEndianMod, 1)\n mod.mclBnFr_setStr = _wrapInput(mod._mclBnFr_setStr, 1)\n mod.mclBnFr_getStr = _wrapGetStr(mod._mclBnFr_getStr)\n mod.mclBnFr_deserialize = _wrapDeserialize(mod._mclBnFr_deserialize)\n mod.mclBnFr_serialize = _wrapSerialize(mod._mclBnFr_serialize)\n mod.mclBnFr_setHashOf = _wrapInput(mod._mclBnFr_setHashOf, 1)\n /// ////////////////////////////////////////////////////////////\n mod.mclBnFp_malloc = () => {\n return _malloc(MCLBN_FP_SIZE)\n }\n mod.mclBnFp_setLittleEndian = _wrapInput(mod._mclBnFp_setLittleEndian, 1)\n mod.mclBnFp_setLittleEndianMod = _wrapInput(mod._mclBnFp_setLittleEndianMod, 1)\n mod.mclBnFp_setBigEndianMod = _wrapInput(mod._mclBnFp_setBigEndianMod, 1)\n mod.mclBnFp_setStr = _wrapInput(mod._mclBnFp_setStr, 1)\n mod.mclBnFp_getStr = _wrapGetStr(mod._mclBnFp_getStr)\n mod.mclBnFp_deserialize = _wrapDeserialize(mod._mclBnFp_deserialize)\n mod.mclBnFp_serialize = _wrapSerialize(mod._mclBnFp_serialize)\n mod.mclBnFp_setHashOf = _wrapInput(mod._mclBnFp_setHashOf, 1)\n\n mod.mclBnFp2_malloc = () => {\n return _malloc(MCLBN_FP_SIZE * 2)\n }\n mod.mclBnFp2_deserialize = _wrapDeserialize(mod._mclBnFp2_deserialize)\n mod.mclBnFp2_serialize = _wrapSerialize(mod._mclBnFp2_serialize)\n\n /// ////////////////////////////////////////////////////////////\n mod.mclBnG1_malloc = () => {\n return _malloc(MCLBN_G1_SIZE)\n }\n mod.mclBnG1_setStr = _wrapInput(mod._mclBnG1_setStr, 1)\n mod.mclBnG1_getStr = _wrapGetStr(mod._mclBnG1_getStr)\n mod.mclBnG1_deserialize = _wrapDeserialize(mod._mclBnG1_deserialize)\n mod.mclBnG1_serialize = _wrapSerialize(mod._mclBnG1_serialize)\n mod.mclBnG1_hashAndMapTo = _wrapInput(mod._mclBnG1_hashAndMapTo, 1)\n\n /// ////////////////////////////////////////////////////////////\n mod.mclBnG2_malloc = () => {\n return _malloc(MCLBN_G2_SIZE)\n }\n mod.mclBnG2_setStr = _wrapInput(mod._mclBnG2_setStr, 1)\n mod.mclBnG2_getStr = _wrapGetStr(mod._mclBnG2_getStr)\n mod.mclBnG2_deserialize = _wrapDeserialize(mod._mclBnG2_deserialize)\n mod.mclBnG2_serialize = _wrapSerialize(mod._mclBnG2_serialize)\n mod.mclBnG2_hashAndMapTo = _wrapInput(mod._mclBnG2_hashAndMapTo, 1)\n\n /// ////////////////////////////////////////////////////////////\n mod.mclBnGT_malloc = () => {\n return _malloc(MCLBN_GT_SIZE)\n }\n mod.mclBnGT_deserialize = _wrapDeserialize(mod._mclBnGT_deserialize)\n mod.mclBnGT_serialize = _wrapSerialize(mod._mclBnGT_serialize)\n mod.mclBnGT_setStr = _wrapInput(mod._mclBnGT_setStr, 1)\n mod.mclBnGT_getStr = _wrapGetStr(mod._mclBnGT_getStr)\n /// ////////////////////////////////////////////////////////////\n\n class Common {\n constructor (size) {\n this.a_ = new Uint32Array(size / 4)\n }\n deserializeHexStr (s) {\n this.deserialize(exports.fromHexStr(s))\n }\n serializeToHexStr () {\n return exports.toHexStr(this.serialize())\n }\n dump (msg = '') {\n console.log(msg + this.serializeToHexStr())\n }\n clear () {\n this.a_.fill(0)\n }\n // copy to allocated memory\n copyToMem (pos) {\n mod.HEAP32.set(this.a_, pos / 4)\n }\n // copy from allocated memory\n copyFromMem (pos) {\n this.a_.set(mod.HEAP32.subarray(pos / 4, pos / 4 + this.a_.length))\n }\n // alloc new array\n _alloc () {\n return _malloc(this.a_.length * 4)\n }\n // alloc and copy a_ to mod.HEAP32[pos / 4]\n _allocAndCopy () {\n const pos = this._alloc()\n mod.HEAP32.set(this.a_, pos / 4)\n return pos\n }\n // save pos to a_\n _save (pos) {\n this.a_.set(mod.HEAP32.subarray(pos / 4, pos / 4 + this.a_.length))\n }\n // save and free\n _saveAndFree(pos) {\n this._save(pos)\n _free(pos)\n }\n // set parameter (p1, p2 may be undefined)\n _setter (func, p1, p2) {\n const pos = this._alloc()\n const r = func(pos, p1, p2)\n this._saveAndFree(pos)\n if (r) throw new Error('_setter err')\n }\n // getter (p1, p2 may be undefined)\n _getter (func, p1, p2) {\n const pos = this._allocAndCopy()\n const s = func(pos, p1, p2)\n _free(pos)\n return s\n }\n _isEqual (func, rhs) {\n const xPos = this._allocAndCopy()\n const yPos = rhs._allocAndCopy()\n const r = func(xPos, yPos)\n _free(yPos)\n _free(xPos)\n return r === 1\n }\n // func(y, this) and return y\n _op1 (func) {\n const y = new this.constructor()\n const xPos = this._allocAndCopy()\n const yPos = y._alloc()\n func(yPos, xPos)\n y._saveAndFree(yPos)\n _free(xPos)\n return y\n }\n // func(z, this, y) and return z\n _op2 (func, y, Cstr = null) {\n const z = Cstr ? new Cstr() : new this.constructor()\n const xPos = this._allocAndCopy()\n const yPos = y._allocAndCopy()\n const zPos = z._alloc()\n func(zPos, xPos, yPos)\n z._saveAndFree(zPos)\n _free(yPos)\n _free(xPos)\n return z\n }\n // devide Uint32Array a into n and chose the idx-th\n _getSubArray (idx, n) {\n const d = this.a_.length / n\n return new Uint32Array(this.a_.buffer, d * idx * 4, d)\n }\n // set array lhs to idx\n _setSubArray (lhs, idx, n) {\n const d = this.a_.length / n\n this.a_.set(lhs.a_, d * idx)\n }\n }\n exports.Fr = class extends Common {\n constructor () {\n super(MCLBN_FR_SIZE)\n }\n setInt (x) {\n this._setter(mod._mclBnFr_setInt32, x)\n }\n deserialize (s) {\n this._setter(mod.mclBnFr_deserialize, s)\n }\n serialize () {\n return this._getter(mod.mclBnFr_serialize)\n }\n setStr (s, base = 0) {\n this._setter(mod.mclBnFr_setStr, s, base)\n }\n getStr (base = 0) {\n return this._getter(mod.mclBnFr_getStr, base)\n }\n isZero () {\n return this._getter(mod._mclBnFr_isZero) === 1\n }\n isOne () {\n return this._getter(mod._mclBnFr_isOne) === 1\n }\n isEqual (rhs) {\n return this._isEqual(mod._mclBnFr_isEqual, rhs)\n }\n setLittleEndian (s) {\n this._setter(mod.mclBnFr_setLittleEndian, s)\n }\n setLittleEndianMod (s) {\n this._setter(mod.mclBnFr_setLittleEndianMod, s)\n }\n setBigEndianMod (s) {\n this._setter(mod.mclBnFr_setBigEndianMod, s)\n }\n setByCSPRNG () {\n const a = new Uint8Array(MCLBN_FR_SIZE)\n exports.getRandomValues(a)\n this.setLittleEndian(a)\n }\n setHashOf (s) {\n this._setter(mod.mclBnFr_setHashOf, s)\n }\n }\n exports.deserializeHexStrToFr = s => {\n const r = new exports.Fr()\n r.deserializeHexStr(s)\n return r\n }\n exports.Fp = class extends Common {\n constructor () {\n super(MCLBN_FP_SIZE)\n }\n setInt (x) {\n this._setter(mod._mclBnFp_setInt32, x)\n }\n deserialize (s) {\n this._setter(mod.mclBnFp_deserialize, s)\n }\n serialize () {\n return this._getter(mod.mclBnFp_serialize)\n }\n setStr (s, base = 0) {\n this._setter(mod.mclBnFp_setStr, s, base)\n }\n getStr (base = 0) {\n return this._getter(mod.mclBnFp_getStr, base)\n }\n isEqual (rhs) {\n return this._isEqual(mod._mclBnFp_isEqual, rhs)\n }\n setLittleEndian (s) {\n this._setter(mod.mclBnFp_setLittleEndian, s)\n }\n setLittleEndianMod (s) {\n this._setter(mod.mclBnFp_setLittleEndianMod, s)\n }\n setBigEndianMod (s) {\n this._setter(mod.mclBnFp_setBigEndianMod, s)\n }\n setByCSPRNG () {\n const a = new Uint8Array(MCLBN_FP_SIZE)\n exports.getRandomValues(a)\n this.setLittleEndian(a)\n }\n setHashOf (s) {\n this._setter(mod.mclBnFp_setHashOf, s)\n }\n mapToG1 () {\n const y = new exports.G1()\n const xPos = this._allocAndCopy()\n const yPos = y._alloc()\n mod._mclBnFp_mapToG1(yPos, xPos)\n y._saveAndFree(yPos)\n _free(xPos)\n return y\n }\n }\n exports.deserializeHexStrToFp = s => {\n const r = new exports.Fp()\n r.deserializeHexStr(s)\n return r\n }\n exports.Fp2 = class extends Common {\n constructor () {\n super(MCLBN_FP_SIZE * 2)\n }\n setInt (x, y) {\n const v = new exports.Fp()\n v.setInt(x)\n this.set_a(v)\n v.setInt(y)\n this.set_b(v)\n }\n deserialize (s) {\n this._setter(mod.mclBnFp2_deserialize, s)\n }\n serialize () {\n return this._getter(mod.mclBnFp2_serialize)\n }\n isEqual (rhs) {\n return this._isEqual(mod._mclBnFp2_isEqual, rhs)\n }\n /*\n x = a + bi where a, b in Fp and i^2 = -1\n */\n get_a () {\n const r = new exports.Fp()\n r.a_ = this._getSubArray(0, 2)\n return r\n }\n get_b () {\n const r = new exports.Fp()\n r.a_ = this._getSubArray(1, 2)\n return r\n }\n set_a(v) {\n this._setSubArray(v, 0, 2)\n }\n set_b(v) {\n this._setSubArray(v, 1, 2)\n }\n mapToG2 () {\n const y = new exports.G2()\n const xPos = this._allocAndCopy()\n const yPos = y._alloc()\n mod._mclBnFp2_mapToG2(yPos, xPos)\n y._saveAndFree(yPos)\n _free(xPos)\n return y\n }\n }\n exports.deserializeHexStrToFp2 = s => {\n const r = new exports.Fp2()\n r.deserializeHexStr(s)\n return r\n }\n exports.G1 = class extends Common {\n constructor () {\n super(MCLBN_G1_SIZE)\n }\n deserialize (s) {\n this._setter(mod.mclBnG1_deserialize, s)\n }\n serialize () {\n return this._getter(mod.mclBnG1_serialize)\n }\n setStr (s, base = 0) {\n this._setter(mod.mclBnG1_setStr, s, base)\n }\n getStr (base = 0) {\n return this._getter(mod.mclBnG1_getStr, base)\n }\n normalize () {\n this.a_ = exports.normalize(this).a_\n }\n getX () {\n const r = new exports.Fp()\n r.a_ = this._getSubArray(0, 3)\n return r\n }\n getY () {\n const r = new exports.Fp()\n r.a_ = this._getSubArray(1, 3)\n return r\n }\n getZ () {\n const r = new exports.Fp()\n r.a_ = this._getSubArray(2, 3)\n return r\n }\n setX (v) {\n this._setSubArray(v, 0, 3)\n }\n setY (v) {\n this._setSubArray(v, 1, 3)\n }\n setZ (v) {\n this._setSubArray(v, 2, 3)\n }\n isZero () {\n return this._getter(mod._mclBnG1_isZero) === 1\n }\n isValid () {\n return this._getter(mod._mclBnG1_isValid) === 1\n }\n isValidOrder () {\n return this._getter(mod._mclBnG1_isValidOrder) === 1\n }\n isEqual (rhs) {\n return this._isEqual(mod._mclBnG1_isEqual, rhs)\n }\n setHashOf (s) {\n this._setter(mod.mclBnG1_hashAndMapTo, s)\n }\n }\n exports.deserializeHexStrToG1 = s => {\n const r = new exports.G1()\n r.deserializeHexStr(s)\n return r\n }\n exports.setETHserialization = (ETHserialization) => {\n mod._mclBn_setETHserialization(ETHserialization ? 1 : 0)\n }\n // mode = mcl.IRTF for Ethereum 2.0 spec\n exports.setMapToMode = (mode) => {\n mod._mclBn_setMapToMode(mode)\n }\n exports.verifyOrderG1 = (doVerify) => {\n mod._mclBn_verifyOrderG1(doVerify ? 1 : 0)\n }\n exports.verifyOrderG2 = (doVerify) => {\n mod._mclBn_verifyOrderG2(doVerify ? 1 : 0)\n }\n exports.getBasePointG1 = () => {\n const x = new exports.G1()\n const xPos = x._alloc()\n mod._mclBnG1_getBasePoint(xPos)\n x._saveAndFree(xPos)\n if (x.isZero()) {\n throw new Error('not supported for pairing curves')\n }\n return x\n }\n exports.G2 = class extends Common {\n constructor () {\n super(MCLBN_G2_SIZE)\n }\n deserialize (s) {\n this._setter(mod.mclBnG2_deserialize, s)\n }\n serialize () {\n return this._getter(mod.mclBnG2_serialize)\n }\n setStr (s, base = 0) {\n this._setter(mod.mclBnG2_setStr, s, base)\n }\n getStr (base = 0) {\n return this._getter(mod.mclBnG2_getStr, base)\n }\n normalize () {\n this.a_ = exports.normalize(this).a_\n }\n getX () {\n const r = new exports.Fp2()\n r.a_ = this._getSubArray(0, 3)\n return r\n }\n getY () {\n const r = new exports.Fp2()\n r.a_ = this._getSubArray(1, 3)\n return r\n }\n getZ () {\n const r = new exports.Fp2()\n r.a_ = this._getSubArray(2, 3)\n return r\n }\n setX (v) {\n this._setSubArray(v, 0, 3)\n }\n setY (v) {\n this._setSubArray(v, 1, 3)\n }\n setZ (v) {\n this._setSubArray(v, 2, 3)\n }\n isZero () {\n return this._getter(mod._mclBnG2_isZero) === 1\n }\n isValid () {\n return this._getter(mod._mclBnG2_isValid) === 1\n }\n isValidOrder () {\n return this._getter(mod._mclBnG2_isValidOrder) === 1\n }\n isEqual (rhs) {\n return this._isEqual(mod._mclBnG2_isEqual, rhs)\n }\n setHashOf (s) {\n this._setter(mod.mclBnG2_hashAndMapTo, s)\n }\n }\n exports.deserializeHexStrToG2 = s => {\n const r = new exports.G2()\n r.deserializeHexStr(s)\n return r\n }\n exports.GT = class extends Common {\n constructor () {\n super(MCLBN_GT_SIZE)\n }\n setInt (x) {\n this._setter(mod._mclBnGT_setInt32, x)\n }\n deserialize (s) {\n this._setter(mod.mclBnGT_deserialize, s)\n }\n serialize () {\n return this._getter(mod.mclBnGT_serialize)\n }\n setStr (s, base = 0) {\n this._setter(mod.mclBnGT_setStr, s, base)\n }\n getStr (base = 0) {\n return this._getter(mod.mclBnGT_getStr, base)\n }\n isZero () {\n return this._getter(mod._mclBnGT_isZero) === 1\n }\n isOne () {\n return this._getter(mod._mclBnGT_isOne) === 1\n }\n isEqual (rhs) {\n return this._isEqual(mod._mclBnGT_isEqual, rhs)\n }\n }\n exports.deserializeHexStrToGT = s => {\n const r = new exports.GT()\n r.deserializeHexStr(s)\n return r\n }\n exports.PrecomputedG2 = class {\n constructor (Q) {\n if (!(Q instanceof exports.G2)) throw new Error('PrecomputedG2:bad type')\n const byteSize = mod._mclBn_getUint64NumToPrecompute() * 8\n this.p = _malloc(byteSize)\n const Qpos = Q._allocAndCopy()\n mod._mclBn_precomputeG2(this.p, Qpos)\n _free(Qpos)\n }\n /*\n call destroy if PrecomputedG2 is not necessary\n to avoid memory leak\n */\n destroy () {\n _free(this.p)\n this.p = null\n }\n }\n exports.neg = x => {\n if (x instanceof exports.Fr) {\n return x._op1(mod._mclBnFr_neg)\n }\n if (x instanceof exports.Fp) {\n return x._op1(mod._mclBnFp_neg)\n }\n if (x instanceof exports.G1) {\n return x._op1(mod._mclBnG1_neg)\n }\n if (x instanceof exports.G2) {\n return x._op1(mod._mclBnG2_neg)\n }\n if (x instanceof exports.GT) {\n return x._op1(mod._mclBnGT_neg)\n }\n if (x instanceof exports.Fp2) {\n return x._op1(mod._mclBnFp2_neg)\n }\n throw new Error('neg:bad type')\n }\n exports.sqr = x => {\n if (x instanceof exports.Fp) {\n return x._op1(mod._mclBnFp_sqr)\n }\n if (x instanceof exports.Fr) {\n return x._op1(mod._mclBnFr_sqr)\n }\n if (x instanceof exports.GT) {\n return x._op1(mod._mclBnGT_sqr)\n }\n if (x instanceof exports.Fp2) {\n return x._op1(mod._mclBnFp2_sqr)\n }\n throw new Error('sqr:bad type')\n }\n exports.inv = x => {\n if (x instanceof exports.Fp) {\n return x._op1(mod._mclBnFp_inv)\n }\n if (x instanceof exports.Fr) {\n return x._op1(mod._mclBnFr_inv)\n }\n if (x instanceof exports.GT) {\n return x._op1(mod._mclBnGT_inv)\n }\n if (x instanceof exports.Fp2) {\n return x._op1(mod._mclBnFp2_inv)\n }\n throw new Error('inv:bad type')\n }\n exports.normalize = x => {\n if (x instanceof exports.G1) {\n return x._op1(mod._mclBnG1_normalize)\n }\n if (x instanceof exports.G2) {\n return x._op1(mod._mclBnG2_normalize)\n }\n throw new Error('normalize:bad type')\n }\n exports.add = (x, y) => {\n if (x.constructor !== y.constructor) throw new Error('add:mismatch type')\n if (x instanceof exports.Fp) {\n return x._op2(mod._mclBnFp_add, y)\n }\n if (x instanceof exports.Fr) {\n return x._op2(mod._mclBnFr_add, y)\n }\n if (x instanceof exports.G1) {\n return x._op2(mod._mclBnG1_add, y)\n }\n if (x instanceof exports.G2) {\n return x._op2(mod._mclBnG2_add, y)\n }\n if (x instanceof exports.GT) {\n return x._op2(mod._mclBnGT_add, y)\n }\n if (x instanceof exports.Fp2) {\n return x._op2(mod._mclBnFp2_add, y)\n }\n throw new Error('add:bad type')\n }\n exports.sub = (x, y) => {\n if (x.constructor !== y.constructor) throw new Error('sub:mismatch type')\n if (x instanceof exports.Fp) {\n return x._op2(mod._mclBnFp_sub, y)\n }\n if (x instanceof exports.Fr) {\n return x._op2(mod._mclBnFr_sub, y)\n }\n if (x instanceof exports.G1) {\n return x._op2(mod._mclBnG1_sub, y)\n }\n if (x instanceof exports.G2) {\n return x._op2(mod._mclBnG2_sub, y)\n }\n if (x instanceof exports.GT) {\n return x._op2(mod._mclBnGT_sub, y)\n }\n if (x instanceof exports.Fp2) {\n return x._op2(mod._mclBnFp2_sub, y)\n }\n throw new Error('sub:bad type')\n }\n /*\n Fr * Fr\n G1 * Fr ; scalar mul\n G2 * Fr ; scalar mul\n GT * GT\n */\n exports.mul = (x, y) => {\n if (x instanceof exports.Fp && y instanceof exports.Fp) {\n return x._op2(mod._mclBnFp_mul, y)\n }\n if (x instanceof exports.Fr && y instanceof exports.Fr) {\n return x._op2(mod._mclBnFr_mul, y)\n }\n if (x instanceof exports.G1 && y instanceof exports.Fr) {\n return x._op2(mod._mclBnG1_mul, y)\n }\n if (x instanceof exports.G2 && y instanceof exports.Fr) {\n return x._op2(mod._mclBnG2_mul, y)\n }\n if (x instanceof exports.GT && y instanceof exports.GT) {\n return x._op2(mod._mclBnGT_mul, y)\n }\n if (x instanceof exports.Fp2 && y instanceof exports.Fp2) {\n return x._op2(mod._mclBnFp2_mul, y)\n }\n throw new Error('mul:mismatch type')\n }\n /*\n sum G1 * Fr ; scalar mul\n sum G2 * Fr ; scalar mul\n */\n exports.mulVec = (xVec, yVec) => {\n if (xVec.length == 0) throw new Error('mulVec:zero array')\n if (xVec[0] instanceof exports.G1 && yVec[0] instanceof exports.Fr) {\n return _mulVec(mod._mclBnG1_mulVec, xVec, yVec, exports.G1)\n }\n if (xVec[0] instanceof exports.G2 && yVec[0] instanceof exports.Fr) {\n return _mulVec(mod._mclBnG2_mulVec, xVec, yVec, exports.G2)\n }\n throw new Error('mulVec:mismatch type')\n }\n exports.div = (x, y) => {\n if (x.constructor !== y.constructor) throw new Error('div:mismatch type')\n if (x instanceof exports.Fp) {\n return x._op2(mod._mclBnFp_div, y)\n }\n if (x instanceof exports.Fr) {\n return x._op2(mod._mclBnFr_div, y)\n }\n if (x instanceof exports.GT) {\n return x._op2(mod._mclBnGT_div, y)\n }\n if (x instanceof exports.Fp2) {\n return x._op2(mod._mclBnFp2_div, y)\n }\n throw new Error('div:bad type')\n }\n exports.dbl = x => {\n if (x instanceof exports.G1) {\n return x._op1(mod._mclBnG1_dbl)\n }\n if (x instanceof exports.G2) {\n return x._op1(mod._mclBnG2_dbl)\n }\n throw new Error('dbl:bad type')\n }\n exports.hashToFr = s => {\n const x = new exports.Fr()\n x.setHashOf(s)\n return x\n }\n exports.hashAndMapToG1 = s => {\n const x = new exports.G1()\n x.setHashOf(s)\n return x\n }\n exports.hashAndMapToG2 = s => {\n const x = new exports.G2()\n x.setHashOf(s)\n return x\n }\n // pow(GT x, Fr y)\n exports.pow = (x, y) => {\n if (x instanceof exports.GT && y instanceof exports.Fr) {\n return x._op2(mod._mclBnGT_pow, y)\n }\n throw new Error('pow:bad type')\n }\n // pairing(G1 P, G2 Q)\n exports.pairing = (P, Q) => {\n if (P instanceof exports.G1 && Q instanceof exports.G2) {\n return P._op2(mod._mclBn_pairing, Q, exports.GT)\n }\n throw new Error('exports.pairing:bad type')\n }\n // millerLoop(G1 P, G2 Q)\n exports.millerLoop = (P, Q) => {\n if (P instanceof exports.G1 && Q instanceof exports.G2) {\n return P._op2(mod._mclBn_millerLoop, Q, exports.GT)\n }\n throw new Error('exports.millerLoop:bad type')\n }\n exports.precomputedMillerLoop = (P, Qcoeff) => {\n if (!(P instanceof exports.G1 && Qcoeff instanceof exports.PrecomputedG2)) throw new Error('exports.precomputedMillerLoop:bad type')\n const e = new exports.GT()\n const PPos = P._allocAndCopy()\n const ePos = e._alloc()\n mod._mclBn_precomputedMillerLoop(ePos, PPos, Qcoeff.p)\n e._saveAndFree(ePos)\n _free(PPos)\n return e\n }\n // millerLoop(P1, Q1coeff) * millerLoop(P2, Q2coeff)\n exports.precomputedMillerLoop2 = (P1, Q1coeff, P2, Q2coeff) => {\n if (!(P1 instanceof exports.G1 && Q1coeff instanceof exports.PrecomputedG2 && P2 instanceof exports.G1 && Q2coeff instanceof exports.PrecomputedG2)) throw new Error('exports.precomputedMillerLoop2mixed:bad type')\n const e = new exports.GT()\n const P1Pos = P1._allocAndCopy()\n const P2Pos = P2._allocAndCopy()\n const ePos = e._alloc()\n mod._mclBn_precomputedMillerLoop2(ePos, P1Pos, Q1coeff.p, P2Pos, Q2coeff.p)\n e._saveAndFree(ePos)\n _free(P1Pos)\n _free(P2Pos)\n return e\n }\n // millerLoop(P1, Q1) * millerLoop(P2, Q2coeff)\n exports.precomputedMillerLoop2mixed = (P1, Q1, P2, Q2coeff) => {\n if (!(P1 instanceof exports.G1 && Q1 instanceof exports.G2 && P2 instanceof exports.G1 && Q2coeff instanceof exports.PrecomputedG2)) throw new Error('exports.precomputedMillerLoop2mixed:bad type')\n const e = new exports.GT()\n const P1Pos = P1._allocAndCopy()\n const Q1Pos = Q1._allocAndCopy()\n const P2Pos = P2._allocAndCopy()\n const ePos = e._alloc()\n mod._mclBn_precomputedMillerLoop2mixed(ePos, P1Pos, Q1Pos, P2Pos, Q2coeff.p)\n e._saveAndFree(ePos)\n _free(P1Pos)\n _free(Q1Pos)\n _free(P2Pos)\n return e\n }\n exports.finalExp = x => {\n if (x instanceof exports.GT) {\n return x._op1(mod._mclBn_finalExp)\n }\n throw new Error('finalExp:bad type')\n }\n const r = mod._mclBn_init(curveType, MCLBN_COMPILED_TIME_VAR)\n if (r) throw new Error('_mclBn_init err ' + r)\n } // setup()\n const _cryptoGetRandomValues = function(p, n) {\n const a = new Uint8Array(n)\n exports.getRandomValues(a)\n for (let i = 0; i < n; i++) {\n exports.mod.HEAP8[p + i] = a[i]\n }\n }\n exports.init = async (curveType = exports.BN254) => {\n exports.curveType = curveType\n exports.getRandomValues = getRandomValues\n exports.mod = await createModule({\n cryptoGetRandomValues: _cryptoGetRandomValues,\n })\n setup(exports, curveType)\n }\n return exports\n}\n\nmodule.exports = _mclSetupFactory\n","'use strict';\n\nconst anyMap = new WeakMap();\nconst eventsMap = new WeakMap();\nconst producersMap = new WeakMap();\nconst anyProducer = Symbol('anyProducer');\nconst resolvedPromise = Promise.resolve();\n\nconst listenerAdded = Symbol('listenerAdded');\nconst listenerRemoved = Symbol('listenerRemoved');\n\nfunction assertEventName(eventName) {\n\tif (typeof eventName !== 'string' && typeof eventName !== 'symbol') {\n\t\tthrow new TypeError('eventName must be a string or a symbol');\n\t}\n}\n\nfunction assertListener(listener) {\n\tif (typeof listener !== 'function') {\n\t\tthrow new TypeError('listener must be a function');\n\t}\n}\n\nfunction getListeners(instance, eventName) {\n\tconst events = eventsMap.get(instance);\n\tif (!events.has(eventName)) {\n\t\tevents.set(eventName, new Set());\n\t}\n\n\treturn events.get(eventName);\n}\n\nfunction getEventProducers(instance, eventName) {\n\tconst key = typeof eventName === 'string' || typeof eventName === 'symbol' ? eventName : anyProducer;\n\tconst producers = producersMap.get(instance);\n\tif (!producers.has(key)) {\n\t\tproducers.set(key, new Set());\n\t}\n\n\treturn producers.get(key);\n}\n\nfunction enqueueProducers(instance, eventName, eventData) {\n\tconst producers = producersMap.get(instance);\n\tif (producers.has(eventName)) {\n\t\tfor (const producer of producers.get(eventName)) {\n\t\t\tproducer.enqueue(eventData);\n\t\t}\n\t}\n\n\tif (producers.has(anyProducer)) {\n\t\tconst item = Promise.all([eventName, eventData]);\n\t\tfor (const producer of producers.get(anyProducer)) {\n\t\t\tproducer.enqueue(item);\n\t\t}\n\t}\n}\n\nfunction iterator(instance, eventNames) {\n\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\tlet isFinished = false;\n\tlet flush = () => {};\n\tlet queue = [];\n\n\tconst producer = {\n\t\tenqueue(item) {\n\t\t\tqueue.push(item);\n\t\t\tflush();\n\t\t},\n\t\tfinish() {\n\t\t\tisFinished = true;\n\t\t\tflush();\n\t\t}\n\t};\n\n\tfor (const eventName of eventNames) {\n\t\tgetEventProducers(instance, eventName).add(producer);\n\t}\n\n\treturn {\n\t\tasync next() {\n\t\t\tif (!queue) {\n\t\t\t\treturn {done: true};\n\t\t\t}\n\n\t\t\tif (queue.length === 0) {\n\t\t\t\tif (isFinished) {\n\t\t\t\t\tqueue = undefined;\n\t\t\t\t\treturn this.next();\n\t\t\t\t}\n\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tflush = resolve;\n\t\t\t\t});\n\n\t\t\t\treturn this.next();\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: await queue.shift()\n\t\t\t};\n\t\t},\n\n\t\tasync return(value) {\n\t\t\tqueue = undefined;\n\n\t\t\tfor (const eventName of eventNames) {\n\t\t\t\tgetEventProducers(instance, eventName).delete(producer);\n\t\t\t}\n\n\t\t\tflush();\n\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\t{done: true, value: await value} :\n\t\t\t\t{done: true};\n\t\t},\n\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t}\n\t};\n}\n\nfunction defaultMethodNamesOrAssert(methodNames) {\n\tif (methodNames === undefined) {\n\t\treturn allEmitteryMethods;\n\t}\n\n\tif (!Array.isArray(methodNames)) {\n\t\tthrow new TypeError('`methodNames` must be an array of strings');\n\t}\n\n\tfor (const methodName of methodNames) {\n\t\tif (!allEmitteryMethods.includes(methodName)) {\n\t\t\tif (typeof methodName !== 'string') {\n\t\t\t\tthrow new TypeError('`methodNames` element must be a string');\n\t\t\t}\n\n\t\t\tthrow new Error(`${methodName} is not Emittery method`);\n\t\t}\n\t}\n\n\treturn methodNames;\n}\n\nconst isListenerSymbol = symbol => symbol === listenerAdded || symbol === listenerRemoved;\n\nclass Emittery {\n\tstatic mixin(emitteryPropertyName, methodNames) {\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\t\treturn target => {\n\t\t\tif (typeof target !== 'function') {\n\t\t\t\tthrow new TypeError('`target` must be function');\n\t\t\t}\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tif (target.prototype[methodName] !== undefined) {\n\t\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction getEmitteryProperty() {\n\t\t\t\tObject.defineProperty(this, emitteryPropertyName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: new Emittery()\n\t\t\t\t});\n\t\t\t\treturn this[emitteryPropertyName];\n\t\t\t}\n\n\t\t\tObject.defineProperty(target.prototype, emitteryPropertyName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: getEmitteryProperty\n\t\t\t});\n\n\t\t\tconst emitteryMethodCaller = methodName => function (...args) {\n\t\t\t\treturn this[emitteryPropertyName][methodName](...args);\n\t\t\t};\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tObject.defineProperty(target.prototype, methodName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: emitteryMethodCaller(methodName)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn target;\n\t\t};\n\t}\n\n\tconstructor() {\n\t\tanyMap.set(this, new Set());\n\t\teventsMap.set(this, new Map());\n\t\tproducersMap.set(this, new Map());\n\t}\n\n\ton(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).add(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerAdded, {eventName, listener});\n\t\t\t}\n\t\t}\n\n\t\treturn this.off.bind(this, eventNames, listener);\n\t}\n\n\toff(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).delete(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerRemoved, {eventName, listener});\n\t\t\t}\n\t\t}\n\t}\n\n\tonce(eventNames) {\n\t\treturn new Promise(resolve => {\n\t\t\tconst off = this.on(eventNames, data => {\n\t\t\t\toff();\n\t\t\t\tresolve(data);\n\t\t\t});\n\t\t});\n\t}\n\n\tevents(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t}\n\n\t\treturn iterator(this, eventNames);\n\t}\n\n\tasync emit(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tenqueueProducers(this, eventName, eventData);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = isListenerSymbol(eventName) ? [] : [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\tawait Promise.all([\n\t\t\t...staticListeners.map(async listener => {\n\t\t\t\tif (listeners.has(listener)) {\n\t\t\t\t\treturn listener(eventData);\n\t\t\t\t}\n\t\t\t}),\n\t\t\t...staticAnyListeners.map(async listener => {\n\t\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\t\treturn listener(eventName, eventData);\n\t\t\t\t}\n\t\t\t})\n\t\t]);\n\t}\n\n\tasync emitSerial(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (const listener of staticListeners) {\n\t\t\tif (listeners.has(listener)) {\n\t\t\t\tawait listener(eventData);\n\t\t\t}\n\t\t}\n\n\t\tfor (const listener of staticAnyListeners) {\n\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\tawait listener(eventName, eventData);\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\t}\n\n\tonAny(listener) {\n\t\tassertListener(listener);\n\t\tanyMap.get(this).add(listener);\n\t\tthis.emit(listenerAdded, {listener});\n\t\treturn this.offAny.bind(this, listener);\n\t}\n\n\tanyEvent() {\n\t\treturn iterator(this);\n\t}\n\n\toffAny(listener) {\n\t\tassertListener(listener);\n\t\tthis.emit(listenerRemoved, {listener});\n\t\tanyMap.get(this).delete(listener);\n\t}\n\n\tclearListeners(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string' || typeof eventName === 'symbol') {\n\t\t\t\tgetListeners(this, eventName).clear();\n\n\t\t\t\tconst producers = getEventProducers(this, eventName);\n\n\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\tproducer.finish();\n\t\t\t\t}\n\n\t\t\t\tproducers.clear();\n\t\t\t} else {\n\t\t\t\tanyMap.get(this).clear();\n\n\t\t\t\tfor (const listeners of eventsMap.get(this).values()) {\n\t\t\t\t\tlisteners.clear();\n\t\t\t\t}\n\n\t\t\t\tfor (const producers of producersMap.get(this).values()) {\n\t\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\t\tproducer.finish();\n\t\t\t\t\t}\n\n\t\t\t\t\tproducers.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlistenerCount(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tlet count = 0;\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string') {\n\t\t\t\tcount += anyMap.get(this).size + getListeners(this, eventName).size +\n\t\t\t\t\tgetEventProducers(this, eventName).size + getEventProducers(this).size;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (typeof eventName !== 'undefined') {\n\t\t\t\tassertEventName(eventName);\n\t\t\t}\n\n\t\t\tcount += anyMap.get(this).size;\n\n\t\t\tfor (const value of eventsMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\n\t\t\tfor (const value of producersMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tbindMethods(target, methodNames) {\n\t\tif (typeof target !== 'object' || target === null) {\n\t\t\tthrow new TypeError('`target` must be an object');\n\t\t}\n\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\n\t\tfor (const methodName of methodNames) {\n\t\t\tif (target[methodName] !== undefined) {\n\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t}\n\n\t\t\tObject.defineProperty(target, methodName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: this[methodName].bind(this)\n\t\t\t});\n\t\t}\n\t}\n}\n\nconst allEmitteryMethods = Object.getOwnPropertyNames(Emittery.prototype).filter(v => v !== 'constructor');\n\n// Subclass used to encourage TS users to type their events.\nEmittery.Typed = class extends Emittery {};\nObject.defineProperty(Emittery.Typed, 'Typed', {\n\tenumerable: false,\n\tvalue: undefined\n});\n\nObject.defineProperty(Emittery, 'listenerAdded', {\n\tvalue: listenerAdded,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\nObject.defineProperty(Emittery, 'listenerRemoved', {\n\tvalue: listenerRemoved,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\n\nmodule.exports = Emittery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst Tree = require('functional-red-black-tree');\n/**\n * @ignore\n */\nclass Cache {\n constructor(trie) {\n this._cache = Tree();\n this._checkpoints = [];\n this._trie = trie;\n }\n /**\n * Puts account to cache under its address.\n * @param key - Address of account\n * @param val - Account\n */\n put(key, val, fromTrie = false) {\n const modified = !fromTrie;\n this._update(key, val, modified, false);\n }\n /**\n * Returns the queried account or an empty account.\n * @param key - Address of account\n */\n get(key) {\n const account = this.lookup(key);\n return account || new ethereumjs_util_1.Account();\n }\n /**\n * Returns the queried account or undefined.\n * @param key - Address of account\n */\n lookup(key) {\n const keyStr = key.buf.toString('hex');\n const it = this._cache.find(keyStr);\n if (it.node) {\n const rlp = it.value.val;\n return ethereumjs_util_1.Account.fromRlpSerializedAccount(rlp);\n }\n }\n /**\n * Returns true if the key was deleted and thus existed in the cache earlier\n * @param key - trie key to lookup\n */\n keyIsDeleted(key) {\n const keyStr = key.buf.toString('hex');\n const it = this._cache.find(keyStr);\n if (it.node) {\n return it.value.deleted;\n }\n return false;\n }\n /**\n * Looks up address in underlying trie.\n * @param address - Address of account\n */\n async _lookupAccount(address) {\n const rlp = await this._trie.get(address.buf);\n return rlp ? ethereumjs_util_1.Account.fromRlpSerializedAccount(rlp) : new ethereumjs_util_1.Account();\n }\n /**\n * Looks up address in cache, if not found, looks it up\n * in the underlying trie.\n * @param key - Address of account\n */\n async getOrLoad(address) {\n let account = this.lookup(address);\n if (!account) {\n account = await this._lookupAccount(address);\n this._update(address, account, false, false);\n }\n return account;\n }\n /**\n * Warms cache by loading their respective account from trie\n * and putting them in cache.\n * @param addresses - Array of addresses\n */\n async warm(addresses) {\n for (const addressHex of addresses) {\n if (addressHex) {\n const address = new ethereumjs_util_1.Address(Buffer.from(addressHex, 'hex'));\n const account = await this._lookupAccount(address);\n this._update(address, account, false, false);\n }\n }\n }\n /**\n * Flushes cache by updating accounts that have been modified\n * and removing accounts that have been deleted.\n */\n async flush() {\n const it = this._cache.begin;\n let next = true;\n while (next) {\n if (it.value && it.value.modified) {\n it.value.modified = false;\n const accountRlp = it.value.val;\n const keyBuf = Buffer.from(it.key, 'hex');\n await this._trie.put(keyBuf, accountRlp);\n next = it.hasNext;\n it.next();\n }\n else if (it.value && it.value.deleted) {\n it.value.modified = false;\n it.value.deleted = true;\n it.value.val = new ethereumjs_util_1.Account().serialize();\n const keyBuf = Buffer.from(it.key, 'hex');\n await this._trie.del(keyBuf);\n next = it.hasNext;\n it.next();\n }\n else {\n next = it.hasNext;\n it.next();\n }\n }\n }\n /**\n * Marks current state of cache as checkpoint, which can\n * later on be reverted or commited.\n */\n checkpoint() {\n this._checkpoints.push(this._cache);\n }\n /**\n * Revert changes to cache last checkpoint (no effect on trie).\n */\n revert() {\n this._cache = this._checkpoints.pop();\n }\n /**\n * Commits to current state of cache (no effect on trie).\n */\n commit() {\n this._checkpoints.pop();\n }\n /**\n * Clears cache.\n */\n clear() {\n this._cache = Tree();\n }\n /**\n * Marks address as deleted in cache.\n * @param key - Address\n */\n del(key) {\n this._update(key, new ethereumjs_util_1.Account(), false, true);\n }\n _update(key, value, modified, deleted) {\n const keyHex = key.buf.toString('hex');\n const it = this._cache.find(keyHex);\n const val = value.serialize();\n if (it.node) {\n this._cache = it.update({ val, modified, deleted });\n }\n else {\n this._cache = this._cache.insert(keyHex, { val, modified, deleted });\n }\n }\n}\nexports.default = Cache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GanacheTrie = void 0;\nconst merkle_patricia_tree_1 = require(\"merkle-patricia-tree\");\nclass GanacheTrie extends merkle_patricia_tree_1.SecureTrie {\n constructor(db, root, blockchain) {\n super(db, root);\n this.blockchain = blockchain;\n }\n setContext(stateRoot, address, blockNumber) {\n this.root = stateRoot;\n }\n /**\n * Returns a copy of the underlying trie with the interface of GanacheTrie.\n * @param includeCheckpoints - If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.\n */\n copy(includeCheckpoints = true) {\n const db = this.db.copy();\n const secureTrie = new GanacheTrie(db._leveldb, this.root, this.blockchain);\n if (includeCheckpoints && this.isCheckpoint) {\n secureTrie.db.checkpoints = [...this.db.checkpoints];\n }\n return secureTrie;\n }\n}\nexports.GanacheTrie = GanacheTrie;\n//# sourceMappingURL=trie.js.map","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction Deferred() {\n const deferred = {};\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\nexports.default = Deferred;\n//# sourceMappingURL=deferred.js.map","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serverOptionsConfig = exports.serverDefaults = void 0;\nconst server_options_1 = require(\"./server-options\");\nconst options_1 = require(\"@ganache/options\");\nexports.serverDefaults = {\n server: server_options_1.ServerOptions\n};\nexports.serverOptionsConfig = new options_1.OptionsConfig(exports.serverDefaults);\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar requirePromise = require('./requirePromise');\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nrequirePromise();\nvar bound = callBind(getPolyfill());\n\nvar rebindable = function allSettled(iterable) {\n\t// eslint-disable-next-line no-invalid-this\n\treturn bound(typeof this === 'undefined' ? Promise : this, iterable);\n};\n\ndefine(rebindable, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = rebindable;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBind = require('call-bind');\n\nvar $resolve = GetIntrinsic('%Promise.resolve%', true);\nvar $PromiseResolve = $resolve && callBind($resolve);\n\n// https://262.ecma-international.org/9.0/#sec-promise-resolve\n\nmodule.exports = function PromiseResolve(C, x) {\n\tif (!$PromiseResolve) {\n\t\tthrow new SyntaxError('This environment does not support Promises.');\n\t}\n\treturn $PromiseResolve(C, x);\n};\n\n","'use strict';\n\n// https://262.ecma-international.org/5.1/#sec-8\n\nmodule.exports = function Type(x) {\n\tif (x === null) {\n\t\treturn 'Null';\n\t}\n\tif (typeof x === 'undefined') {\n\t\treturn 'Undefined';\n\t}\n\tif (typeof x === 'function' || typeof x === 'object') {\n\t\treturn 'Object';\n\t}\n\tif (typeof x === 'number') {\n\t\treturn 'Number';\n\t}\n\tif (typeof x === 'boolean') {\n\t\treturn 'Boolean';\n\t}\n\tif (typeof x === 'string') {\n\t\treturn 'String';\n\t}\n};\n","'use strict';\n\nvar getIterator = require('es-get-iterator');\nvar $TypeError = TypeError;\nvar iterate = require('iterate-iterator');\n\nmodule.exports = function iterateValue(iterable) {\n\tvar iterator = getIterator(iterable);\n\tif (!iterator) {\n\t\tthrow new $TypeError('non-iterable value provided');\n\t}\n\tif (arguments.length > 1) {\n\t\treturn iterate(iterator, arguments[1]);\n\t}\n\treturn iterate(iterator);\n};\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function iterateIterator(iterator) {\n\tif (!iterator || typeof iterator.next !== 'function') {\n\t\tthrow new $TypeError('iterator must be an object with a `next` method');\n\t}\n\tif (arguments.length > 1) {\n\t\tvar callback = arguments[1];\n\t\tif (typeof callback !== 'function') {\n\t\t\tthrow new $TypeError('`callback`, if provided, must be a function');\n\t\t}\n\t}\n\tvar values = callback || [];\n\tvar result;\n\twhile ((result = iterator.next()) && !result.done) {\n\t\tif (callback) {\n\t\t\tcallback(result.value); // eslint-disable-line callback-return\n\t\t} else {\n\t\t\tvalues.push(result.value);\n\t\t}\n\t}\n\tif (!callback) {\n\t\treturn values;\n\t}\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar RequireObjectCoercible = require('es-abstract/2020/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar $slice = callBound('Array.prototype.slice');\n\n// eslint-disable-next-line no-unused-vars\nvar boundMapShim = function map(array, callbackfn) {\n\tRequireObjectCoercible(array);\n\treturn polyfill.apply(array, $slice(arguments, 1));\n};\ndefine(boundMapShim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundMapShim;\n","'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\nvar $species = GetIntrinsic('%Symbol.species%', true);\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = require('./Get');\nvar IsArray = require('./IsArray');\nvar IsConstructor = require('./IsConstructor');\nvar IsInteger = require('./IsInteger');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate\n\nmodule.exports = function ArraySpeciesCreate(originalArray, length) {\n\tif (!IsInteger(length) || length < 0) {\n\t\tthrow new $TypeError('Assertion failed: length must be an integer >= 0');\n\t}\n\tvar len = length === 0 ? 0 : length;\n\tvar C;\n\tvar isArray = IsArray(originalArray);\n\tif (isArray) {\n\t\tC = Get(originalArray, 'constructor');\n\t\t// TODO: figure out how to make a cross-realm normal Array, a same-realm Array\n\t\t// if (IsConstructor(C)) {\n\t\t// \tif C is another realm's Array, C = undefined\n\t\t// \tObject.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?\n\t\t// }\n\t\tif ($species && Type(C) === 'Object') {\n\t\t\tC = Get(C, $species);\n\t\t\tif (C === null) {\n\t\t\t\tC = void 0;\n\t\t\t}\n\t\t}\n\t}\n\tif (typeof C === 'undefined') {\n\t\treturn $Array(len);\n\t}\n\tif (!IsConstructor(C)) {\n\t\tthrow new $TypeError('C must be a constructor');\n\t}\n\treturn new C(len); // Construct(C, len);\n};\n\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean') {\n throw new TypeError('option \"customInspect\", if provided, must be `true` or `false`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar isPropertyDescriptor = require('../helpers/isPropertyDescriptor');\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar IsAccessorDescriptor = require('./IsAccessorDescriptor');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar ToPropertyDescriptor = require('./ToPropertyDescriptor');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow\n\nmodule.exports = function DefinePropertyOrThrow(O, P, desc) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\n\tvar Desc = isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, desc) ? desc : ToPropertyDescriptor(desc);\n\tif (!isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, Desc)) {\n\t\tthrow new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');\n\t}\n\n\treturn DefineOwnProperty(\n\t\tIsDataDescriptor,\n\t\tSameValue,\n\t\tFromPropertyDescriptor,\n\t\tO,\n\t\tP,\n\t\tDesc\n\t);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar has = require('has');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nmodule.exports = function IsPropertyDescriptor(ES, Desc) {\n\tif (ES.Type(Desc) !== 'Object') {\n\t\treturn false;\n\t}\n\tvar allowed = {\n\t\t'[[Configurable]]': true,\n\t\t'[[Enumerable]]': true,\n\t\t'[[Get]]': true,\n\t\t'[[Set]]': true,\n\t\t'[[Value]]': true,\n\t\t'[[Writable]]': true\n\t};\n\n\tfor (var key in Desc) { // eslint-disable-line no-restricted-syntax\n\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) {\n\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t}\n\treturn true;\n};\n","'use strict';\n\nvar has = require('has');\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor\n\nmodule.exports = function IsAccessorDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.11\n\nmodule.exports = require('is-callable');\n","'use strict';\n\nvar abs = require('./abs');\nvar floor = require('./floor');\n\nvar $isNaN = require('../helpers/isNaN');\nvar $isFinite = require('../helpers/isFinite');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isinteger\n\nmodule.exports = function IsInteger(argument) {\n\tif (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {\n\t\treturn false;\n\t}\n\tvar absValue = abs(argument);\n\treturn floor(absValue) === absValue;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $abs = GetIntrinsic('%Math.abs%');\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function abs(x) {\n\treturn $abs(x);\n};\n","'use strict';\n\n// var modulo = require('./modulo');\nvar $floor = Math.floor;\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function floor(x) {\n\t// return x - modulo(x, 1);\n\treturn $floor(x);\n};\n","'use strict';\n\nvar $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsArray = require('./IsArray');\n\nvar $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-call\n\nmodule.exports = function Call(F, V) {\n\tvar argumentsList = arguments.length > 2 ? arguments[2] : [];\n\tif (!IsArray(argumentsList)) {\n\t\tthrow new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');\n\t}\n\treturn $apply(F, V, argumentsList);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar CreateDataProperty = require('./CreateDataProperty');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow\n\nmodule.exports = function CreateDataPropertyOrThrow(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar success = CreateDataProperty(O, P, V);\n\tif (!success) {\n\t\tthrow new $TypeError('unable to create data property');\n\t}\n\treturn success;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsExtensible = require('./IsExtensible');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty\n\nmodule.exports = function CreateDataProperty(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar oldDesc = OrdinaryGetOwnProperty(O, P);\n\tvar extensible = !oldDesc || IsExtensible(O);\n\tvar immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);\n\tif (immutable || !extensible) {\n\t\treturn false;\n\t}\n\treturn DefineOwnProperty(\n\t\tIsDataDescriptor,\n\t\tSameValue,\n\t\tFromPropertyDescriptor,\n\t\tO,\n\t\tP,\n\t\t{\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Value]]': V,\n\t\t\t'[[Writable]]': true\n\t\t}\n\t);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = require('../helpers/getOwnPropertyDescriptor');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\nvar has = require('has');\n\nvar IsArray = require('./IsArray');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar IsRegExp = require('./IsRegExp');\nvar ToPropertyDescriptor = require('./ToPropertyDescriptor');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty\n\nmodule.exports = function OrdinaryGetOwnProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: O must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P must be a Property Key');\n\t}\n\tif (!has(O, P)) {\n\t\treturn void 0;\n\t}\n\tif (!$gOPD) {\n\t\t// ES3 / IE 8 fallback\n\t\tvar arrayLength = IsArray(O) && P === 'length';\n\t\tvar regexLastIndex = IsRegExp(O) && P === 'lastIndex';\n\t\treturn {\n\t\t\t'[[Configurable]]': !(arrayLength || regexLastIndex),\n\t\t\t'[[Enumerable]]': $isEnumerable(O, P),\n\t\t\t'[[Value]]': O[P],\n\t\t\t'[[Writable]]': true\n\t\t};\n\t}\n\treturn ToPropertyDescriptor($gOPD(O, P));\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $match = GetIntrinsic('%Symbol.match%', true);\n\nvar hasRegExpMatcher = require('is-regex');\n\nvar ToBoolean = require('./ToBoolean');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isregexp\n\nmodule.exports = function IsRegExp(argument) {\n\tif (!argument || typeof argument !== 'object') {\n\t\treturn false;\n\t}\n\tif ($match) {\n\t\tvar isRegExp = argument[$match];\n\t\tif (typeof isRegExp !== 'undefined') {\n\t\t\treturn ToBoolean(isRegExp);\n\t\t}\n\t}\n\treturn hasRegExpMatcher(argument);\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasSymbols = require('has-symbols/shams')();\nvar hasToStringTag = hasSymbols && !!Symbol.toStringTag;\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar isPrimitive = require('../helpers/isPrimitive');\n\nvar $preventExtensions = $Object.preventExtensions;\nvar $isExtensible = $Object.isExtensible;\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o\n\nmodule.exports = $preventExtensions\n\t? function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj) && $isExtensible(obj);\n\t}\n\t: function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj);\n\t};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty\n\nmodule.exports = function HasProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `O` must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: `P` must be a Property Key');\n\t}\n\treturn P in O;\n};\n","'use strict';\n\nvar ToNumber = require('./ToNumber');\n\n// http://262.ecma-international.org/5.1/#sec-9.6\n\nmodule.exports = function ToUint32(x) {\n\treturn ToNumber(x) >>> 0;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $Number = GetIntrinsic('%Number%');\nvar $RegExp = GetIntrinsic('%RegExp%');\nvar $parseInteger = GetIntrinsic('%parseInt%');\n\nvar callBound = require('call-bind/callBound');\nvar regexTester = require('../helpers/regexTester');\nvar isPrimitive = require('../helpers/isPrimitive');\n\nvar $strSlice = callBound('String.prototype.slice');\nvar isBinary = regexTester(/^0b[01]+$/i);\nvar isOctal = regexTester(/^0o[0-7]+$/i);\nvar isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);\nvar nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\nvar nonWSregex = new $RegExp('[' + nonWS + ']', 'g');\nvar hasNonWS = regexTester(nonWSregex);\n\n// whitespace from: https://es5.github.io/#x15.5.4.20\n// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\nvar ws = [\n\t'\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n\t'\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n\t'\\u2029\\uFEFF'\n].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar $replace = callBound('String.prototype.replace');\nvar $trim = function (value) {\n\treturn $replace(value, trimRegex, '');\n};\n\nvar ToPrimitive = require('./ToPrimitive');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tonumber\n\nmodule.exports = function ToNumber(argument) {\n\tvar value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);\n\tif (typeof value === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a number');\n\t}\n\tif (typeof value === 'bigint') {\n\t\tthrow new $TypeError('Conversion from \\'BigInt\\' to \\'number\\' is not allowed.');\n\t}\n\tif (typeof value === 'string') {\n\t\tif (isBinary(value)) {\n\t\t\treturn ToNumber($parseInteger($strSlice(value, 2), 2));\n\t\t} else if (isOctal(value)) {\n\t\t\treturn ToNumber($parseInteger($strSlice(value, 2), 8));\n\t\t} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {\n\t\t\treturn NaN;\n\t\t} else {\n\t\t\tvar trimmed = $trim(value);\n\t\t\tif (trimmed !== value) {\n\t\t\t\treturn ToNumber(trimmed);\n\t\t\t}\n\t\t}\n\t}\n\treturn $Number(value);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $test = GetIntrinsic('RegExp.prototype.test');\n\nvar callBind = require('call-bind');\n\nmodule.exports = function regexTester(regex) {\n\treturn callBind($test, regex);\n};\n","'use strict';\n\nvar toPrimitive = require('es-to-primitive/es2015');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive\n\nmodule.exports = function ToPrimitive(input) {\n\tif (arguments.length > 1) {\n\t\treturn toPrimitive(input, arguments[1]);\n\t}\n\treturn toPrimitive(input);\n};\n","'use strict';\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isPrimitive = require('./helpers/isPrimitive');\nvar isCallable = require('is-callable');\nvar isDate = require('is-date-object');\nvar isSymbol = require('is-symbol');\n\nvar ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new TypeError('hint must be \"string\" or \"number\"');\n\t}\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError('No default value');\n};\n\nvar GetMethod = function GetMethod(O, P) {\n\tvar func = O[P];\n\tif (func !== null && typeof func !== 'undefined') {\n\t\tif (!isCallable(func)) {\n\t\t\tthrow new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');\n\t\t}\n\t\treturn func;\n\t}\n\treturn void 0;\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\t\t\texoticToPrim = GetMethod(input, Symbol.toPrimitive);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = 'string';\n\t}\n\treturn ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar RequireObjectCoercible = require('./RequireObjectCoercible');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toobject\n\nmodule.exports = function ToObject(value) {\n\tRequireObjectCoercible(value);\n\treturn $Object(value);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $String = GetIntrinsic('%String%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tostring\n\nmodule.exports = function ToString(argument) {\n\tif (typeof argument === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a string');\n\t}\n\treturn $String(argument);\n};\n","module.exports = function properlyBoxed(method) {\n\t// Check node 0.6.21 bug where third parameter is not boxed\n\tvar properlyBoxesNonStrict = true;\n\tvar properlyBoxesStrict = true;\n\tvar threwException = false;\n\tif (typeof method === 'function') {\n\t\ttry {\n\t\t\t// eslint-disable-next-line max-params\n\t\t\tmethod.call('f', function (_, __, O) {\n\t\t\t\tif (typeof O !== 'object') {\n\t\t\t\t\tproperlyBoxesNonStrict = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmethod.call(\n\t\t\t\t[null],\n\t\t\t\tfunction () {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tproperlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this\n\t\t\t\t},\n\t\t\t\t'x'\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tthrewException = true;\n\t\t}\n\t\treturn !threwException && properlyBoxesNonStrict && properlyBoxesStrict;\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimArrayPrototypeMap() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tArray.prototype,\n\t\t{ map: polyfill },\n\t\t{ map: function () { return Array.prototype.map !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar requirePromise = require('./requirePromise');\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimAllSettled() {\n\trequirePromise();\n\n\tvar polyfill = getPolyfill();\n\tdefine(Promise, { allSettled: polyfill }, {\n\t\tallSettled: function testAllSettled() {\n\t\t\treturn Promise.allSettled !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\nconst indentString = require('indent-string');\nconst cleanStack = require('clean-stack');\n\nconst cleanInternalStack = stack => stack.replace(/\\s+at .*aggregate-error\\/index.js:\\d+:\\d+\\)?/g, '');\n\nclass AggregateError extends Error {\n\tconstructor(errors) {\n\t\tif (!Array.isArray(errors)) {\n\t\t\tthrow new TypeError(`Expected input to be an Array, got ${typeof errors}`);\n\t\t}\n\n\t\terrors = [...errors].map(error => {\n\t\t\tif (error instanceof Error) {\n\t\t\t\treturn error;\n\t\t\t}\n\n\t\t\tif (error !== null && typeof error === 'object') {\n\t\t\t\t// Handle plain error objects with message property and/or possibly other metadata\n\t\t\t\treturn Object.assign(new Error(error.message), error);\n\t\t\t}\n\n\t\t\treturn new Error(error);\n\t\t});\n\n\t\tlet message = errors\n\t\t\t.map(error => {\n\t\t\t\t// The `stack` property is not standardized, so we can't assume it exists\n\t\t\t\treturn typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);\n\t\t\t})\n\t\t\t.join('\\n');\n\t\tmessage = '\\n' + indentString(message, 4);\n\t\tsuper(message);\n\n\t\tthis.name = 'AggregateError';\n\n\t\tObject.defineProperty(this, '_errors', {value: errors});\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const error of this._errors) {\n\t\t\tyield error;\n\t\t}\n\t}\n}\n\nmodule.exports = AggregateError;\n","'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n","'use strict';\nconst os = require('os');\n\nconst extractPathRegex = /\\s+at.*(?:\\(|\\s)(.*)\\)?/;\nconst pathRegex = /^(?:(?:(?:node|(?:internal\\/[\\w/]*|.*node_modules\\/(?:babel-polyfill|pirates)\\/.*)?\\w+)\\.js:\\d+:\\d+)|native)/;\nconst homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();\n\nmodule.exports = (stack, options) => {\n\toptions = Object.assign({pretty: false}, options);\n\n\treturn stack.replace(/\\\\/g, '/')\n\t\t.split('\\n')\n\t\t.filter(line => {\n\t\t\tconst pathMatches = line.match(extractPathRegex);\n\t\t\tif (pathMatches === null || !pathMatches[1]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst match = pathMatches[1];\n\n\t\t\t// Electron\n\t\t\tif (\n\t\t\t\tmatch.includes('.app/Contents/Resources/electron.asar') ||\n\t\t\t\tmatch.includes('.app/Contents/Resources/default_app.asar')\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn !pathRegex.test(match);\n\t\t})\n\t\t.filter(line => line.trim() !== '')\n\t\t.map(line => {\n\t\t\tif (options.pretty) {\n\t\t\t\treturn line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));\n\t\t\t}\n\n\t\t\treturn line;\n\t\t})\n\t\t.join('\\n');\n};\n","'use strict';\n\nconst anyMap = new WeakMap();\nconst eventsMap = new WeakMap();\nconst producersMap = new WeakMap();\nconst anyProducer = Symbol('anyProducer');\nconst resolvedPromise = Promise.resolve();\n\nconst listenerAdded = Symbol('listenerAdded');\nconst listenerRemoved = Symbol('listenerRemoved');\n\nfunction assertEventName(eventName) {\n\tif (typeof eventName !== 'string' && typeof eventName !== 'symbol') {\n\t\tthrow new TypeError('eventName must be a string or a symbol');\n\t}\n}\n\nfunction assertListener(listener) {\n\tif (typeof listener !== 'function') {\n\t\tthrow new TypeError('listener must be a function');\n\t}\n}\n\nfunction getListeners(instance, eventName) {\n\tconst events = eventsMap.get(instance);\n\tif (!events.has(eventName)) {\n\t\tevents.set(eventName, new Set());\n\t}\n\n\treturn events.get(eventName);\n}\n\nfunction getEventProducers(instance, eventName) {\n\tconst key = typeof eventName === 'string' || typeof eventName === 'symbol' ? eventName : anyProducer;\n\tconst producers = producersMap.get(instance);\n\tif (!producers.has(key)) {\n\t\tproducers.set(key, new Set());\n\t}\n\n\treturn producers.get(key);\n}\n\nfunction enqueueProducers(instance, eventName, eventData) {\n\tconst producers = producersMap.get(instance);\n\tif (producers.has(eventName)) {\n\t\tfor (const producer of producers.get(eventName)) {\n\t\t\tproducer.enqueue(eventData);\n\t\t}\n\t}\n\n\tif (producers.has(anyProducer)) {\n\t\tconst item = Promise.all([eventName, eventData]);\n\t\tfor (const producer of producers.get(anyProducer)) {\n\t\t\tproducer.enqueue(item);\n\t\t}\n\t}\n}\n\nfunction iterator(instance, eventNames) {\n\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\tlet isFinished = false;\n\tlet flush = () => {};\n\tlet queue = [];\n\n\tconst producer = {\n\t\tenqueue(item) {\n\t\t\tqueue.push(item);\n\t\t\tflush();\n\t\t},\n\t\tfinish() {\n\t\t\tisFinished = true;\n\t\t\tflush();\n\t\t}\n\t};\n\n\tfor (const eventName of eventNames) {\n\t\tgetEventProducers(instance, eventName).add(producer);\n\t}\n\n\treturn {\n\t\tasync next() {\n\t\t\tif (!queue) {\n\t\t\t\treturn {done: true};\n\t\t\t}\n\n\t\t\tif (queue.length === 0) {\n\t\t\t\tif (isFinished) {\n\t\t\t\t\tqueue = undefined;\n\t\t\t\t\treturn this.next();\n\t\t\t\t}\n\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tflush = resolve;\n\t\t\t\t});\n\n\t\t\t\treturn this.next();\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: await queue.shift()\n\t\t\t};\n\t\t},\n\n\t\tasync return(value) {\n\t\t\tqueue = undefined;\n\n\t\t\tfor (const eventName of eventNames) {\n\t\t\t\tgetEventProducers(instance, eventName).delete(producer);\n\t\t\t}\n\n\t\t\tflush();\n\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\t{done: true, value: await value} :\n\t\t\t\t{done: true};\n\t\t},\n\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t}\n\t};\n}\n\nfunction defaultMethodNamesOrAssert(methodNames) {\n\tif (methodNames === undefined) {\n\t\treturn allEmitteryMethods;\n\t}\n\n\tif (!Array.isArray(methodNames)) {\n\t\tthrow new TypeError('`methodNames` must be an array of strings');\n\t}\n\n\tfor (const methodName of methodNames) {\n\t\tif (!allEmitteryMethods.includes(methodName)) {\n\t\t\tif (typeof methodName !== 'string') {\n\t\t\t\tthrow new TypeError('`methodNames` element must be a string');\n\t\t\t}\n\n\t\t\tthrow new Error(`${methodName} is not Emittery method`);\n\t\t}\n\t}\n\n\treturn methodNames;\n}\n\nconst isListenerSymbol = symbol => symbol === listenerAdded || symbol === listenerRemoved;\n\nclass Emittery {\n\tstatic mixin(emitteryPropertyName, methodNames) {\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\t\treturn target => {\n\t\t\tif (typeof target !== 'function') {\n\t\t\t\tthrow new TypeError('`target` must be function');\n\t\t\t}\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tif (target.prototype[methodName] !== undefined) {\n\t\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction getEmitteryProperty() {\n\t\t\t\tObject.defineProperty(this, emitteryPropertyName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: new Emittery()\n\t\t\t\t});\n\t\t\t\treturn this[emitteryPropertyName];\n\t\t\t}\n\n\t\t\tObject.defineProperty(target.prototype, emitteryPropertyName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: getEmitteryProperty\n\t\t\t});\n\n\t\t\tconst emitteryMethodCaller = methodName => function (...args) {\n\t\t\t\treturn this[emitteryPropertyName][methodName](...args);\n\t\t\t};\n\n\t\t\tfor (const methodName of methodNames) {\n\t\t\t\tObject.defineProperty(target.prototype, methodName, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tvalue: emitteryMethodCaller(methodName)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn target;\n\t\t};\n\t}\n\n\tconstructor() {\n\t\tanyMap.set(this, new Set());\n\t\teventsMap.set(this, new Map());\n\t\tproducersMap.set(this, new Map());\n\t}\n\n\ton(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).add(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerAdded, {eventName, listener});\n\t\t\t}\n\t\t}\n\n\t\treturn this.off.bind(this, eventNames, listener);\n\t}\n\n\toff(eventNames, listener) {\n\t\tassertListener(listener);\n\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t\tgetListeners(this, eventName).delete(listener);\n\n\t\t\tif (!isListenerSymbol(eventName)) {\n\t\t\t\tthis.emit(listenerRemoved, {eventName, listener});\n\t\t\t}\n\t\t}\n\t}\n\n\tonce(eventNames) {\n\t\treturn new Promise(resolve => {\n\t\t\tconst off = this.on(eventNames, data => {\n\t\t\t\toff();\n\t\t\t\tresolve(data);\n\t\t\t});\n\t\t});\n\t}\n\n\tevents(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tfor (const eventName of eventNames) {\n\t\t\tassertEventName(eventName);\n\t\t}\n\n\t\treturn iterator(this, eventNames);\n\t}\n\n\tasync emit(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tenqueueProducers(this, eventName, eventData);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = isListenerSymbol(eventName) ? [] : [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\tawait Promise.all([\n\t\t\t...staticListeners.map(async listener => {\n\t\t\t\tif (listeners.has(listener)) {\n\t\t\t\t\treturn listener(eventData);\n\t\t\t\t}\n\t\t\t}),\n\t\t\t...staticAnyListeners.map(async listener => {\n\t\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\t\treturn listener(eventName, eventData);\n\t\t\t\t}\n\t\t\t})\n\t\t]);\n\t}\n\n\tasync emitSerial(eventName, eventData) {\n\t\tassertEventName(eventName);\n\n\t\tconst listeners = getListeners(this, eventName);\n\t\tconst anyListeners = anyMap.get(this);\n\t\tconst staticListeners = [...listeners];\n\t\tconst staticAnyListeners = [...anyListeners];\n\n\t\tawait resolvedPromise;\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (const listener of staticListeners) {\n\t\t\tif (listeners.has(listener)) {\n\t\t\t\tawait listener(eventData);\n\t\t\t}\n\t\t}\n\n\t\tfor (const listener of staticAnyListeners) {\n\t\t\tif (anyListeners.has(listener)) {\n\t\t\t\tawait listener(eventName, eventData);\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\t}\n\n\tonAny(listener) {\n\t\tassertListener(listener);\n\t\tanyMap.get(this).add(listener);\n\t\tthis.emit(listenerAdded, {listener});\n\t\treturn this.offAny.bind(this, listener);\n\t}\n\n\tanyEvent() {\n\t\treturn iterator(this);\n\t}\n\n\toffAny(listener) {\n\t\tassertListener(listener);\n\t\tthis.emit(listenerRemoved, {listener});\n\t\tanyMap.get(this).delete(listener);\n\t}\n\n\tclearListeners(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string' || typeof eventName === 'symbol') {\n\t\t\t\tgetListeners(this, eventName).clear();\n\n\t\t\t\tconst producers = getEventProducers(this, eventName);\n\n\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\tproducer.finish();\n\t\t\t\t}\n\n\t\t\t\tproducers.clear();\n\t\t\t} else {\n\t\t\t\tanyMap.get(this).clear();\n\n\t\t\t\tfor (const listeners of eventsMap.get(this).values()) {\n\t\t\t\t\tlisteners.clear();\n\t\t\t\t}\n\n\t\t\t\tfor (const producers of producersMap.get(this).values()) {\n\t\t\t\t\tfor (const producer of producers) {\n\t\t\t\t\t\tproducer.finish();\n\t\t\t\t\t}\n\n\t\t\t\t\tproducers.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlistenerCount(eventNames) {\n\t\teventNames = Array.isArray(eventNames) ? eventNames : [eventNames];\n\t\tlet count = 0;\n\n\t\tfor (const eventName of eventNames) {\n\t\t\tif (typeof eventName === 'string') {\n\t\t\t\tcount += anyMap.get(this).size + getListeners(this, eventName).size +\n\t\t\t\t\tgetEventProducers(this, eventName).size + getEventProducers(this).size;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (typeof eventName !== 'undefined') {\n\t\t\t\tassertEventName(eventName);\n\t\t\t}\n\n\t\t\tcount += anyMap.get(this).size;\n\n\t\t\tfor (const value of eventsMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\n\t\t\tfor (const value of producersMap.get(this).values()) {\n\t\t\t\tcount += value.size;\n\t\t\t}\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tbindMethods(target, methodNames) {\n\t\tif (typeof target !== 'object' || target === null) {\n\t\t\tthrow new TypeError('`target` must be an object');\n\t\t}\n\n\t\tmethodNames = defaultMethodNamesOrAssert(methodNames);\n\n\t\tfor (const methodName of methodNames) {\n\t\t\tif (target[methodName] !== undefined) {\n\t\t\t\tthrow new Error(`The property \\`${methodName}\\` already exists on \\`target\\``);\n\t\t\t}\n\n\t\t\tObject.defineProperty(target, methodName, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: this[methodName].bind(this)\n\t\t\t});\n\t\t}\n\t}\n}\n\nconst allEmitteryMethods = Object.getOwnPropertyNames(Emittery.prototype).filter(v => v !== 'constructor');\n\nObject.defineProperty(Emittery, 'listenerAdded', {\n\tvalue: listenerAdded,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\nObject.defineProperty(Emittery, 'listenerRemoved', {\n\tvalue: listenerRemoved,\n\twritable: false,\n\tenumerable: true,\n\tconfigurable: false\n});\n\nmodule.exports = Emittery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=connector.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Base implementation for an API.\n * All properties must be `async` callable or return a `Promise`\n */\nclass ApiBase {\n}\n//# sourceMappingURL=api.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bigIntToBuffer = void 0;\nconst common_1 = require(\"../common\");\nconst uint_to_buffer_1 = require(\"./uint-to-buffer\");\nconst allocUnsafe = Buffer.allocUnsafe;\nlet _bigIntToBuffer;\n/**\n * Returns the number of bytes contained in this given `value`.\n * @param value\n */\nfunction bigIntByteLength(value) {\n let length = 1;\n while ((value >>= 8n))\n length++;\n return length;\n}\nconst MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);\ntry {\n // force fallback if only `toBufferBE` is missing (this can happen if toBufferBE isn't polyfilled for the browser,\n // which, at the time of this writing... it isn't)\n if (!common_1.toBufferBE)\n throw new Error(\"Missing function `toBufferBE`!\");\n _bigIntToBuffer = (value) => {\n if (value <= MAX_SAFE_INTEGER) {\n return uint_to_buffer_1.uintToBuffer(Number(value));\n }\n else {\n const size = bigIntByteLength(value);\n return common_1.toBufferBE(value, size);\n }\n };\n}\ncatch (e) {\n _bigIntToBuffer = (value) => {\n if (value <= MAX_SAFE_INTEGER) {\n // if this value can be handled as a JS number safely, convert it that way\n return uint_to_buffer_1.uintToBuffer(Number(value));\n }\n else {\n let length = bigIntByteLength(value);\n const buf = allocUnsafe(length);\n // process 1 byte at a time\n do {\n // truncate to right-most 32 bits and assign to buffer position `length`\n buf[--length] = Number(value & 0xffffffffn);\n // shift right-most byte off since we've used it\n value >>= 8n;\n } while (length);\n return buf;\n }\n };\n}\n/**\n * Converts a bigint to a Buffer (Big Endian)\n */\nexports.bigIntToBuffer = _bigIntToBuffer;\n//# sourceMappingURL=bigint-to-buffer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBigIntBE = exports.toBufferBE = void 0;\nvar bigint_buffer_1 = require(\"bigint-buffer\");\nObject.defineProperty(exports, \"toBufferBE\", { enumerable: true, get: function () { return bigint_buffer_1.toBufferBE; } });\nObject.defineProperty(exports, \"toBigIntBE\", { enumerable: true, get: function () { return bigint_buffer_1.toBigIntBE; } });\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferToBigInt = void 0;\nconst bigint_buffer_1 = require(\"bigint-buffer\");\n/**\n * note: this doesn't handle negative values\n * @param value Buffer representation of a bigint, most-significant bit first (Big-endian)\n */\nfunction bufferToBigInt(value) {\n // Parsed as BE.\n // This doesn't handle negative values. We may need to add logic to handle\n // it because it is possible values returned from the VM could be negative\n // and stored in a buffer.\n const length = value.byteLength;\n if (length === 0) {\n return null;\n }\n // Buffers that are 6 bytes or less can be converted with built-in methods\n if (length <= 6) {\n return BigInt(value.readUIntBE(0, length));\n }\n let view;\n // Buffers that are 7 bytes need to be padded to 8 bytes\n if (length === 7) {\n const padded = new Uint8Array(8);\n // set byte 0 to 0, and bytes 1-8 to the value's 7 bytes:\n padded.set(value, 1);\n view = new DataView(padded.buffer);\n }\n else if (length === 8) {\n view = new DataView(value.buffer, value.byteOffset, length);\n }\n else {\n // TODO: toBigIntBE is a native lib with no pure JS fallback yet.\n return bigint_buffer_1.toBigIntBE(value);\n }\n return view.getBigUint64(0);\n}\nexports.bufferToBigInt = bufferToBigInt;\n//# sourceMappingURL=buffer-to-bigint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Heap = void 0;\nclass Heap {\n /**\n * Creates a priority-queue heap where the highest priority element,\n * as determined by the `less` function, is at the tip/root of the heap.\n * To read the highest priority element without removing it call peek(). To\n * read and remove the element call `shift()`\n * @param size the size of the heap\n * @param less the comparator function\n */\n constructor(less) {\n this.length = 0;\n this.array = [];\n this.less = less;\n }\n init(array) {\n this.array = array;\n const length = (this.length = array.length);\n for (let i = ((length / 2) | 0) - 1; i >= 0;) {\n this.down(i--, length);\n }\n }\n /**\n * Pushes a new element onto the heap\n * @param value\n */\n push(value) {\n const i = this.length++;\n this.array[i] = value;\n this.up(i);\n }\n size() {\n return this.length;\n }\n /**\n * Return the current best element. Does not remove it\n */\n peek() {\n return this.array[0];\n }\n clear() {\n this.length = this.array.length = 0;\n }\n /**\n * Removes and returns the element with the highest priority from the heap.\n * The complexity is O(log n) where n = this.size().\n * @returns the element with the highest priority. returns `undefined` if\n * there are no more elements in the heap.\n */\n shift() {\n const length = this.length;\n // if we are empty or about to be empty...\n if (length <= 1) {\n if (length === 0)\n return;\n const element = this.array[0];\n // finally, clear the array\n this.clear();\n return element;\n }\n // otherwise...\n // remember the best element\n const array = this.array;\n const best = array[0];\n const newLength = (this.length = length - 1);\n // put our last element at the start of the heap\n array[0] = array[newLength];\n // then sort from the new first element to the second to last element\n this.down(0, newLength);\n return best;\n }\n /**\n * Removes the highest priority element from the queue, replacing it with\n * the new element. This is equivalent to, but faster than, calling\n * `replace(0, newValue);`.\n * If you call this on an empty heap (`this.size() === 0`) you may find\n * unexpected behavior.\n * @param newValue\n */\n replaceBest(newValue) {\n this.array[0] = newValue;\n this.down(0, this.length);\n }\n /**\n * Replaces the element at position `i` with the `newValue`. If the element at\n * position `i` doesn't exist, or if `i < 0` or `i > this.size()` you may\n * find unexpected behavior.\n * @param i\n * @param newValue\n */\n replace(i, newValue) {\n this.array[i] = newValue;\n this.fix(i);\n }\n /**\n * Removes the element at position `i`.\n * The complexity is O(log n) where n = this.size().\n * @param i the element to remove\n */\n remove(i) {\n const newLength = --this.length;\n if (newLength !== i) {\n this.swap(i, newLength);\n if (!this.down(i, newLength)) {\n this.up(i);\n }\n }\n }\n /**\n * Removes the element with the highest priority from the heap\n * The complexity is O(log n) where n = this.size().\n * @returns `true` when there are more elements in the queue, `false` when the\n * last element was just removed. Calling `removeBest` when there are no more\n * elements in the queue will return `true`. So don't do that.\n */\n removeBest() {\n const array = this.array;\n const length = this.length;\n if (length === 1) {\n // finally, clear the array\n this.length = array.length = 0;\n return false;\n }\n const newLength = --this.length;\n // put our last element at the start of the heap\n array[0] = array[newLength];\n // then sort from the new first element to the second to last element\n this.down(0, newLength);\n return true;\n }\n /**\n * Re-establishes the heap ordering after the element at index `i` changes\n * its value. Changing the value of the element at index `i` and then\n * calling fix is equivalent to, but faster than, calling\n * `remove(i); push(newValue);`.\n * The complexity is O(log n) where n = this.size().\n * @param i\n */\n fix(i) {\n if (!this.down(i, this.length)) {\n this.up(i);\n }\n }\n up(j) {\n const less = this.less.bind(null, this.array);\n for (let i; (i = ((j - 1) / 2) | 0), i !== j && less(j, i); j = i) {\n this.swap(i, j);\n }\n }\n down(i0, l) {\n const less = this.less.bind(null, this.array);\n let i = i0;\n for (let j1; (j1 = 2 * i + 1) < l;) {\n let j = j1; // left child\n let j2 = j1 + 1;\n if (j2 < l && less(j2, j1)) {\n j = j2; // = 2 * i + 2 // right child\n }\n if (!less(j, i)) {\n break;\n }\n this.swap(i, j);\n i = j;\n }\n return i > i0;\n }\n /**\n * Swaps the elements in the heap\n * @param i The first element\n * @param j The second element\n */\n swap(i, j) {\n const array = this.array;\n const first = array[i];\n array[i] = array[j];\n array[j] = first;\n }\n /**\n * Heap initialization helper for when you only know of a single item for the\n * heap.\n * @param item\n * @param less\n */\n static from(item, less) {\n const heap = new Heap(less);\n heap.array = [item];\n heap.length = 1;\n return heap;\n }\n}\nexports.Heap = Heap;\n//# sourceMappingURL=heap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unref = void 0;\n/**\n * In node, calling `unref(timer)` on a running timer ensures that the timer\n * does not require that the Node.js event remain active. If there is no other\n * activity keeping the event loop running, the process may exit before the\n * timer's callback is invoked.\n * @param timer\n * @returns `true` if the timer could be `unref`ed, otherwise returns `false`\n */\nfunction unref(timer) {\n if (typeof timer === \"object\" && typeof timer.unref === \"function\") {\n timer.unref();\n return true;\n }\n else {\n return false;\n }\n}\nexports.unref = unref;\n//# sourceMappingURL=unref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferToMinHexKey = void 0;\nlet stringify;\nif (typeof Buffer.prototype.latin1Slice === \"function\") {\n stringify = (buffer, start, end) => {\n // this is just `buffer.toString(\"hex\")`, but it skips a bunch of checks\n // that don't apply because our `start` and `end` just can't be out of\n // bounds.\n return buffer.hexSlice(start, end);\n };\n}\nelse {\n stringify = (buffer, start, end) => {\n return buffer.slice(start, end).toString(\"hex\");\n };\n}\n/**\n * Trims leading 0s from a buffer and returns a key representing the buffer's\n * trimmed value (`Buffer.from([0, 0, 12, 0])` => `1200`).\n *\n * @param buffer\n */\nfunction bufferToMinHexKey(buffer) {\n for (let i = 0, length = buffer.byteLength; i < length; i++) {\n const value = buffer[i];\n // once we find a non-zero value take the rest of the buffer as the key\n if (value !== 0) {\n if (i + 1 === length) {\n // use a lookup table for single character lookups\n return HEX_MAP[value];\n }\n else {\n return stringify(buffer, i, length);\n }\n }\n }\n return \"\";\n}\nexports.bufferToMinHexKey = bufferToMinHexKey;\nconst HEX_MAP = [\n \"00\",\n \"01\",\n \"02\",\n \"03\",\n \"04\",\n \"05\",\n \"06\",\n \"07\",\n \"08\",\n \"09\",\n \"0a\",\n \"0b\",\n \"0c\",\n \"0d\",\n \"0e\",\n \"0f\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\",\n \"1a\",\n \"1b\",\n \"1c\",\n \"1d\",\n \"1e\",\n \"1f\",\n \"20\",\n \"21\",\n \"22\",\n \"23\",\n \"24\",\n \"25\",\n \"26\",\n \"27\",\n \"28\",\n \"29\",\n \"2a\",\n \"2b\",\n \"2c\",\n \"2d\",\n \"2e\",\n \"2f\",\n \"30\",\n \"31\",\n \"32\",\n \"33\",\n \"34\",\n \"35\",\n \"36\",\n \"37\",\n \"38\",\n \"39\",\n \"3a\",\n \"3b\",\n \"3c\",\n \"3d\",\n \"3e\",\n \"3f\",\n \"40\",\n \"41\",\n \"42\",\n \"43\",\n \"44\",\n \"45\",\n \"46\",\n \"47\",\n \"48\",\n \"49\",\n \"4a\",\n \"4b\",\n \"4c\",\n \"4d\",\n \"4e\",\n \"4f\",\n \"50\",\n \"51\",\n \"52\",\n \"53\",\n \"54\",\n \"55\",\n \"56\",\n \"57\",\n \"58\",\n \"59\",\n \"5a\",\n \"5b\",\n \"5c\",\n \"5d\",\n \"5e\",\n \"5f\",\n \"60\",\n \"61\",\n \"62\",\n \"63\",\n \"64\",\n \"65\",\n \"66\",\n \"67\",\n \"68\",\n \"69\",\n \"6a\",\n \"6b\",\n \"6c\",\n \"6d\",\n \"6e\",\n \"6f\",\n \"70\",\n \"71\",\n \"72\",\n \"73\",\n \"74\",\n \"75\",\n \"76\",\n \"77\",\n \"78\",\n \"79\",\n \"7a\",\n \"7b\",\n \"7c\",\n \"7d\",\n \"7e\",\n \"7f\",\n \"80\",\n \"81\",\n \"82\",\n \"83\",\n \"84\",\n \"85\",\n \"86\",\n \"87\",\n \"88\",\n \"89\",\n \"8a\",\n \"8b\",\n \"8c\",\n \"8d\",\n \"8e\",\n \"8f\",\n \"90\",\n \"91\",\n \"92\",\n \"93\",\n \"94\",\n \"95\",\n \"96\",\n \"97\",\n \"98\",\n \"99\",\n \"9a\",\n \"9b\",\n \"9c\",\n \"9d\",\n \"9e\",\n \"9f\",\n \"a0\",\n \"a1\",\n \"a2\",\n \"a3\",\n \"a4\",\n \"a5\",\n \"a6\",\n \"a7\",\n \"a8\",\n \"a9\",\n \"aa\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"ae\",\n \"af\",\n \"b0\",\n \"b1\",\n \"b2\",\n \"b3\",\n \"b4\",\n \"b5\",\n \"b6\",\n \"b7\",\n \"b8\",\n \"b9\",\n \"ba\",\n \"bb\",\n \"bc\",\n \"bd\",\n \"be\",\n \"bf\",\n \"c0\",\n \"c1\",\n \"c2\",\n \"c3\",\n \"c4\",\n \"c5\",\n \"c6\",\n \"c7\",\n \"c8\",\n \"c9\",\n \"ca\",\n \"cb\",\n \"cc\",\n \"cd\",\n \"ce\",\n \"cf\",\n \"d0\",\n \"d1\",\n \"d2\",\n \"d3\",\n \"d4\",\n \"d5\",\n \"d6\",\n \"d7\",\n \"d8\",\n \"d9\",\n \"da\",\n \"db\",\n \"dc\",\n \"dd\",\n \"de\",\n \"df\",\n \"e0\",\n \"e1\",\n \"e2\",\n \"e3\",\n \"e4\",\n \"e5\",\n \"e6\",\n \"e7\",\n \"e8\",\n \"e9\",\n \"ea\",\n \"eb\",\n \"ec\",\n \"ed\",\n \"ee\",\n \"ef\",\n \"f0\",\n \"f1\",\n \"f2\",\n \"f3\",\n \"f4\",\n \"f5\",\n \"f6\",\n \"f7\",\n \"f8\",\n \"f9\",\n \"fa\",\n \"fb\",\n \"fc\",\n \"fd\",\n \"fe\",\n \"ff\"\n];\n//# sourceMappingURL=buffer-to-key.js.map","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findInsertPosition = void 0;\n/**\n * AKA `upper_bound`\n *\n * The elements are compared using `comp`. The elements in the range must\n * already be sorted according to this same criterion (`comp`), or at least\n * partitioned with respect to val.\n *\n * The function optimizes the number of comparisons performed by comparing\n * non-consecutive elements of the sorted range.\n *\n * The index into the `array` returned by this function will always be greater than\n * the index of the last-occurrence of `val`.\n *\n * On average, logarithmic in the distance of the length of the array: Performs\n * approximately `log2(N)+1` element comparisons (where `N` is this length).\n *\n * @param array\n * @param val Value of the upper bound to search for in the range.\n * @param comp A function that accepts two arguments (the first is always\n * `val`, and the second from the given `array`) and returns bool. The value\n * returned indicates whether the first argument is considered to go before the\n * second.\n *\n * @returns The index to the upper bound position for `val` in the range. If no\n * element in the range compares greater than `val`, the function returns\n * `array.length`.\n */\nfunction findInsertPosition(array, val, comp) {\n // `count` tracks the number of elements that remain to be searched\n let count = array.length;\n // `insertPosition` tracks the best insert position for the element we know\n // about _so far_\n let insertPosition = 0;\n // `offset` tracks the start position of the elements that remain to be\n // searched\n let offset = 0;\n while (count > 0) {\n // find the middle element between `offset` and `count`\n const step = (count / 2) | 0; // ()`| 0` rounds towards 0)\n offset += step;\n // compare our val to the \"middle element\" (`array[offset]`)\n if (!comp(val, array[offset])) {\n // `val` should come _after_ the element at `array[offset]`.\n // * update our `insertPosition` to the index immediately after\n // `array[offset]`\n // * shrink our search range\n // This narrows our search the elements to the right of `array[offset]`.\n insertPosition = ++offset;\n count -= step + 1;\n }\n else {\n // `val` should come before the element at `array[offset]`:\n // This narrows the search the elements to the left of `array[offset]`.\n count = step;\n offset = insertPosition;\n }\n }\n return insertPosition;\n}\nexports.findInsertPosition = findInsertPosition;\n//# sourceMappingURL=find-insert-position.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Data = void 0;\nconst json_rpc_base_types_1 = require(\"./json-rpc-base-types\");\nconst json_rpc_base_types_2 = require(\"./json-rpc-base-types\");\nfunction validateByteLength(byteLength) {\n if (typeof byteLength !== \"number\" || byteLength < 0) {\n throw new Error(`byteLength must be a number greater than 0`);\n }\n}\nconst byteLengths = new WeakMap();\nclass Data extends json_rpc_base_types_1.BaseJsonRpcType {\n constructor(value, byteLength) {\n if (typeof value === \"bigint\") {\n throw new Error(`Cannot create a ${typeof value} as a Data`);\n }\n super(value);\n if (byteLength !== void 0) {\n validateByteLength(byteLength);\n byteLengths.set(this, byteLength | 0);\n }\n }\n toString(byteLength) {\n const str = json_rpc_base_types_2.strCache.get(this);\n if (str !== void 0) {\n return str;\n }\n else {\n let str = json_rpc_base_types_2.toStrings.get(this)();\n let length = str.length;\n if (length % 2 === 1) {\n length++;\n str = `0${str}`;\n }\n if (byteLength !== void 0) {\n validateByteLength(byteLength);\n }\n else {\n byteLength = byteLengths.get(this);\n }\n if (byteLength !== void 0) {\n const strLength = byteLength * 2;\n const padBy = strLength - length;\n if (padBy < 0) {\n // if our hex-encoded data is longer than it should be, truncate it:\n str = str.slice(0, strLength);\n }\n else if (padBy > 0) {\n // if our hex-encoded data is shorter than it should be, pad it:\n str = \"0\".repeat(padBy) + str;\n }\n }\n return `0x${str}`;\n }\n }\n static from(value, byteLength) {\n return new Data(value, byteLength);\n }\n}\nexports.Data = Data;\n//# sourceMappingURL=json-rpc-data.js.map","module.exports = require('./lib/index.js')\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar randombytes = require(\"randombytes\");\nfunction getRandomBytes(bytes) {\n return new Promise(function (resolve, reject) {\n randombytes(bytes, function (err, resp) {\n if (err) {\n reject(err);\n return;\n }\n resolve(resp);\n });\n });\n}\nexports.getRandomBytes = getRandomBytes;\nfunction getRandomBytesSync(bytes) {\n return randombytes(bytes);\n}\nexports.getRandomBytesSync = getRandomBytesSync;\n//# sourceMappingURL=random.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","\"use strict\";\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BN = require(\"bn.js\");\nvar EC = require('elliptic').ec;\nvar ec = new EC('secp256k1');\nvar ecparams = ec.curve;\nexports.privateKeyExport = function (privateKey, compressed) {\n if (compressed === void 0) { compressed = true; }\n var d = new BN(privateKey);\n if (d.ucmp(ecparams.n) >= 0) {\n throw new Error(\"couldn't export to DER format\");\n }\n var point = ec.g.mul(d);\n return toPublicKey(point.getX(), point.getY(), compressed);\n};\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey);\n if (bn.ucmp(ecparams.n) >= 0 || bn.isZero()) {\n throw new Error('private key range is invalid');\n }\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32);\n};\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r);\n if (r.ucmp(ecparams.n) >= 0) {\n r = new BN(0);\n }\n var s = new BN(sigObj.s);\n if (s.ucmp(ecparams.n) >= 0) {\n s = new BN(0);\n }\n return Buffer.concat([r.toArrayLike(Buffer, 'be', 32), s.toArrayLike(Buffer, 'be', 32)]);\n};\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n if (compressed === void 0) { compressed = true; }\n var point = ec.keyFromPublic(publicKey);\n var scalar = new BN(privateKey);\n if (scalar.ucmp(ecparams.n) >= 0 || scalar.isZero()) {\n throw new Error('scalar was invalid (zero or overflow)');\n }\n var shared = point.pub.mul(scalar);\n return toPublicKey(shared.getX(), shared.getY(), compressed);\n};\nvar toPublicKey = function (x, y, compressed) {\n var publicKey;\n if (compressed) {\n publicKey = Buffer.alloc(33);\n publicKey[0] = y.isOdd() ? 0x03 : 0x02;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n }\n else {\n publicKey = Buffer.alloc(65);\n publicKey[0] = 0x04;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n y.toArrayLike(Buffer, 'be', 32).copy(publicKey, 33);\n }\n return publicKey;\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n // begin\n 0x30,\n 0x81,\n 0xd3,\n 0x02,\n 0x01,\n 0x01,\n 0x04,\n 0x20,\n // private key\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n // middle\n 0xa0,\n 0x81,\n 0x85,\n 0x30,\n 0x81,\n 0x82,\n 0x02,\n 0x01,\n 0x01,\n 0x30,\n 0x2c,\n 0x06,\n 0x07,\n 0x2a,\n 0x86,\n 0x48,\n 0xce,\n 0x3d,\n 0x01,\n 0x01,\n 0x02,\n 0x21,\n 0x00,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xfe,\n 0xff,\n 0xff,\n 0xfc,\n 0x2f,\n 0x30,\n 0x06,\n 0x04,\n 0x01,\n 0x00,\n 0x04,\n 0x01,\n 0x07,\n 0x04,\n 0x21,\n 0x02,\n 0x79,\n 0xbe,\n 0x66,\n 0x7e,\n 0xf9,\n 0xdc,\n 0xbb,\n 0xac,\n 0x55,\n 0xa0,\n 0x62,\n 0x95,\n 0xce,\n 0x87,\n 0x0b,\n 0x07,\n 0x02,\n 0x9b,\n 0xfc,\n 0xdb,\n 0x2d,\n 0xce,\n 0x28,\n 0xd9,\n 0x59,\n 0xf2,\n 0x81,\n 0x5b,\n 0x16,\n 0xf8,\n 0x17,\n 0x98,\n 0x02,\n 0x21,\n 0x00,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xfe,\n 0xba,\n 0xae,\n 0xdc,\n 0xe6,\n 0xaf,\n 0x48,\n 0xa0,\n 0x3b,\n 0xbf,\n 0xd2,\n 0x5e,\n 0x8c,\n 0xd0,\n 0x36,\n 0x41,\n 0x41,\n 0x02,\n 0x01,\n 0x01,\n 0xa1,\n 0x24,\n 0x03,\n 0x22,\n 0x00,\n // public key\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n]);\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n // begin\n 0x30,\n 0x82,\n 0x01,\n 0x13,\n 0x02,\n 0x01,\n 0x01,\n 0x04,\n 0x20,\n // private key\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n // middle\n 0xa0,\n 0x81,\n 0xa5,\n 0x30,\n 0x81,\n 0xa2,\n 0x02,\n 0x01,\n 0x01,\n 0x30,\n 0x2c,\n 0x06,\n 0x07,\n 0x2a,\n 0x86,\n 0x48,\n 0xce,\n 0x3d,\n 0x01,\n 0x01,\n 0x02,\n 0x21,\n 0x00,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xfe,\n 0xff,\n 0xff,\n 0xfc,\n 0x2f,\n 0x30,\n 0x06,\n 0x04,\n 0x01,\n 0x00,\n 0x04,\n 0x01,\n 0x07,\n 0x04,\n 0x41,\n 0x04,\n 0x79,\n 0xbe,\n 0x66,\n 0x7e,\n 0xf9,\n 0xdc,\n 0xbb,\n 0xac,\n 0x55,\n 0xa0,\n 0x62,\n 0x95,\n 0xce,\n 0x87,\n 0x0b,\n 0x07,\n 0x02,\n 0x9b,\n 0xfc,\n 0xdb,\n 0x2d,\n 0xce,\n 0x28,\n 0xd9,\n 0x59,\n 0xf2,\n 0x81,\n 0x5b,\n 0x16,\n 0xf8,\n 0x17,\n 0x98,\n 0x48,\n 0x3a,\n 0xda,\n 0x77,\n 0x26,\n 0xa3,\n 0xc4,\n 0x65,\n 0x5d,\n 0xa4,\n 0xfb,\n 0xfc,\n 0x0e,\n 0x11,\n 0x08,\n 0xa8,\n 0xfd,\n 0x17,\n 0xb4,\n 0x48,\n 0xa6,\n 0x85,\n 0x54,\n 0x19,\n 0x9c,\n 0x47,\n 0xd0,\n 0x8f,\n 0xfb,\n 0x10,\n 0xd4,\n 0xb8,\n 0x02,\n 0x21,\n 0x00,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xff,\n 0xfe,\n 0xba,\n 0xae,\n 0xdc,\n 0xe6,\n 0xaf,\n 0x48,\n 0xa0,\n 0x3b,\n 0xbf,\n 0xd2,\n 0x5e,\n 0x8c,\n 0xd0,\n 0x36,\n 0x41,\n 0x41,\n 0x02,\n 0x01,\n 0x01,\n 0xa1,\n 0x44,\n 0x03,\n 0x42,\n 0x00,\n // public key\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n]);\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n if (compressed === void 0) { compressed = true; }\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED);\n privateKey.copy(result, compressed ? 8 : 9);\n publicKey.copy(result, compressed ? 181 : 214);\n return result;\n};\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length;\n // sequence header\n var index = 0;\n if (length < index + 1 || privateKey[index] !== 0x30)\n return null;\n index += 1;\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80))\n return null;\n var lenb = privateKey[index] & 0x7f;\n index += 1;\n if (lenb < 1 || lenb > 2)\n return null;\n if (length < index + lenb)\n return null;\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0);\n index += lenb;\n if (length < index + len)\n return null;\n // sequence element 0: version number (=1)\n if (length < index + 3 ||\n privateKey[index] !== 0x02 ||\n privateKey[index + 1] !== 0x01 ||\n privateKey[index + 2] !== 0x01) {\n return null;\n }\n index += 3;\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 ||\n privateKey[index] !== 0x04 ||\n privateKey[index + 1] > 0x20 ||\n length < index + 2 + privateKey[index + 1]) {\n return null;\n }\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1]);\n};\nexports.signatureImportLax = function (signature) {\n var r = Buffer.alloc(32, 0);\n var s = Buffer.alloc(32, 0);\n var length = signature.length;\n var index = 0;\n // sequence tag byte\n if (signature[index++] !== 0x30) {\n return null;\n }\n // sequence length byte\n var lenbyte = signature[index++];\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80;\n if (index > length) {\n return null;\n }\n }\n // sequence tag byte for r\n if (signature[index++] !== 0x02) {\n return null;\n }\n // length for r\n var rlen = signature[index++];\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1)\n ;\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1)\n rlen = (rlen << 8) + signature[index];\n }\n if (rlen > length - index) {\n return null;\n }\n var rindex = index;\n index += rlen;\n // sequence tag byte for s\n if (signature[index++] !== 0x02) {\n return null;\n }\n // length for s\n var slen = signature[index++];\n if (slen & 0x80) {\n lenbyte = slen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1)\n ;\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1)\n slen = (slen << 8) + signature[index];\n }\n if (slen > length - index) {\n return null;\n }\n var sindex = index;\n index += slen;\n // ignore leading zeros in r\n for (; rlen > 0 && signature[rindex] === 0x00; rlen -= 1, rindex += 1)\n ;\n // copy r value\n if (rlen > 32) {\n return null;\n }\n var rvalue = signature.slice(rindex, rindex + rlen);\n rvalue.copy(r, 32 - rvalue.length);\n // ignore leading zeros in s\n for (; slen > 0 && signature[sindex] === 0x00; slen -= 1, sindex += 1)\n ;\n // copy s value\n if (slen > 32) {\n return null;\n }\n var svalue = signature.slice(sindex, sindex + slen);\n svalue.copy(s, 32 - svalue.length);\n return { r: r, s: s };\n};\n//# sourceMappingURL=der.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction createHashFunction(hashConstructor) {\n return function (msg) {\n var hash = hashConstructor();\n hash.update(msg);\n return Buffer.from(hash.digest());\n };\n}\nexports.createHashFunction = createHashFunction;\n//# sourceMappingURL=hash-utils.js.map","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashPersonalMessage = exports.isValidSignature = exports.fromRpcSig = exports.toRpcSig = exports.ecrecover = exports.ecsign = void 0;\nvar secp256k1 = require('./secp256k1v3-adapter');\nvar BN = require(\"bn.js\");\nvar bytes_1 = require(\"./bytes\");\nvar hash_1 = require(\"./hash\");\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexports.ecsign = function (msgHash, privateKey, chainId) {\n var sig = secp256k1.sign(msgHash, privateKey);\n var recovery = sig.recovery;\n var ret = {\n r: sig.signature.slice(0, 32),\n s: sig.signature.slice(32, 64),\n v: chainId ? recovery + (chainId * 2 + 35) : recovery + 27,\n };\n return ret;\n};\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexports.ecrecover = function (msgHash, v, r, s, chainId) {\n var signature = Buffer.concat([bytes_1.setLength(r, 32), bytes_1.setLength(s, 32)], 64);\n var recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n var senderPubKey = secp256k1.recover(msgHash, signature, recovery);\n return secp256k1.publicKeyConvert(senderPubKey, false).slice(1);\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexports.toRpcSig = function (v, r, s, chainId) {\n var recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytes_1.bufferToHex(Buffer.concat([bytes_1.setLengthLeft(r, 32), bytes_1.setLengthLeft(s, 32), bytes_1.toBuffer(v)]));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexports.fromRpcSig = function (sig) {\n var buf = bytes_1.toBuffer(sig);\n // NOTE: with potential introduction of chainId this might need to be updated\n if (buf.length !== 65) {\n throw new Error('Invalid signature length');\n }\n var v = buf[64];\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n return {\n v: v,\n r: buf.slice(0, 32),\n s: buf.slice(32, 64),\n };\n};\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexports.isValidSignature = function (v, r, s, homesteadOrLater, chainId) {\n if (homesteadOrLater === void 0) { homesteadOrLater = true; }\n var SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n var SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n var rBN = new BN(r);\n var sBN = new BN(s);\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false;\n }\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexports.hashPersonalMessage = function (message) {\n var prefix = Buffer.from(\"\\u0019Ethereum Signed Message:\\n\" + message.length.toString(), 'utf-8');\n return hash_1.keccak(Buffer.concat([prefix, message]));\n};\nfunction calculateSigRecovery(v, chainId) {\n return chainId ? v - (2 * chainId + 35) : v - 27;\n}\nfunction isValidSigRecovery(recovery) {\n return recovery === 0 || recovery === 1;\n}\n//# sourceMappingURL=signature.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineProperties = void 0;\nvar assert = require('assert');\nvar ethjsUtil = require('ethjs-util');\nvar rlp = require(\"rlp\");\nvar bytes_1 = require(\"./bytes\");\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n // attach the `toJSON`\n self.toJSON = function (label) {\n if (label === void 0) { label = false; }\n if (label) {\n var obj_1 = {};\n self._fields.forEach(function (field) {\n obj_1[field] = \"0x\" + self[field].toString('hex');\n });\n return obj_1;\n }\n return bytes_1.baToJSON(self.raw);\n };\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n fields.forEach(function (field, i) {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = bytes_1.toBuffer(v);\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n if (field.allowLess && field.length) {\n v = bytes_1.stripZeros(v);\n assert(field.length >= v.length, \"The field \" + field.name + \" must not have more \" + field.length + \" bytes\");\n }\n else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(field.length === v.length, \"The field \" + field.name + \" must have byte length of \" + field.length);\n }\n self.raw[i] = v;\n }\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n });\n if (field.default) {\n self[field.name] = field.default;\n }\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n });\n }\n });\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(ethjsUtil.stripHexPrefix(data), 'hex');\n }\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n // make sure all the items are buffers\n data.forEach(function (d, i) {\n self[self._fields[i]] = bytes_1.toBuffer(d);\n });\n }\n else if (typeof data === 'object') {\n var keys_1 = Object.keys(data);\n fields.forEach(function (field) {\n if (keys_1.indexOf(field.name) !== -1)\n self[field.name] = data[field.name];\n if (keys_1.indexOf(field.alias) !== -1)\n self[field.alias] = data[field.alias];\n });\n }\n else {\n throw new Error('invalid data');\n }\n }\n};\n//# sourceMappingURL=object.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\nclass AbortError extends Error {\n constructor() {\n super(\"The user aborted a request.\");\n }\n}\nexports.AbortError = AbortError;\n//# sourceMappingURL=abort-error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Account = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst utils_2 = require(\"@ganache/utils\");\nclass Account {\n constructor(address) {\n this.stateRoot = ethereumjs_util_1.KECCAK256_RLP;\n this.codeHash = ethereumjs_util_1.KECCAK256_NULL;\n this.address = address;\n this.balance = utils_2.RPCQUANTITY_EMPTY;\n this.nonce = utils_2.RPCQUANTITY_EMPTY;\n }\n static fromBuffer(buffer) {\n const account = Object.create(Account.prototype);\n const raw = rlp_1.decode(buffer);\n account.nonce = utils_1.Quantity.from(raw[0]);\n account.balance = utils_1.Quantity.from(raw[1]);\n account.stateRoot = raw[2];\n account.codeHash = raw[3];\n return account;\n }\n serialize() {\n return rlp_1.encode([\n this.nonce.toBuffer(),\n this.balance.toBuffer(),\n this.stateRoot,\n this.codeHash\n ]);\n }\n}\nexports.Account = Account;\n//# sourceMappingURL=account.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert = require('assert');\nconst BN = require(\"bn.js\");\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert(BN.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert(Buffer.isBuffer(salt));\n assert(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\n// TODO: This can be replaced with a normal ESM import once\n// the new major version of the typescript config package\n// is released and adopted here.\nconst BN = require(\"bn.js\");\nexports.BN = BN;\nconst rlp = require(\"rlp\");\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLength = exports.decode = exports.encode = void 0;\nvar BN = require(\"bn.js\");\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 **/\nfunction encode(input) {\n if (Array.isArray(input)) {\n var output = [];\n for (var i = 0; i < input.length; i++) {\n output.push(encode(input[i]));\n }\n var buf = Buffer.concat(output);\n return Buffer.concat([encodeLength(buf.length, 192), buf]);\n }\n else {\n var inputBuf = toBuffer(input);\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf]);\n }\n}\nexports.encode = encode;\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, base) {\n if (v.slice(0, 2) === '00') {\n throw new Error('invalid RLP: extra zeros');\n }\n return parseInt(v, base);\n}\nfunction encodeLength(len, offset) {\n if (len < 56) {\n return Buffer.from([len + offset]);\n }\n else {\n var hexLength = intToHex(len);\n var lLength = hexLength.length / 2;\n var firstByte = intToHex(offset + 55 + lLength);\n return Buffer.from(firstByte + hexLength, 'hex');\n }\n}\nfunction decode(input, stream) {\n if (stream === void 0) { stream = false; }\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var decoded = _decode(inputBuffer);\n if (stream) {\n return decoded;\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder');\n }\n return decoded.data;\n}\nexports.decode = decode;\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 */\nfunction getLength(input) {\n if (!input || input.length === 0) {\n return Buffer.from([]);\n }\n var inputBuffer = toBuffer(input);\n var firstByte = inputBuffer[0];\n if (firstByte <= 0x7f) {\n return inputBuffer.length;\n }\n else if (firstByte <= 0xb7) {\n return firstByte - 0x7f;\n }\n else if (firstByte <= 0xbf) {\n return firstByte - 0xb6;\n }\n else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf;\n }\n else {\n // a list over 55 bytes long\n var llength = firstByte - 0xf6;\n var length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16);\n return llength + length;\n }\n}\nexports.getLength = getLength;\n/** Decode an input with RLP */\nfunction _decode(input) {\n var length, llength, data, innerRemainder, d;\n var decoded = [];\n var firstByte = input[0];\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 }\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 // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([]);\n }\n else {\n data = input.slice(1, length);\n }\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80');\n }\n return {\n data: data,\n remainder: input.slice(length),\n };\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 return {\n data: data,\n remainder: input.slice(length + llength),\n };\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);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(length),\n };\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 var totalLength = llength + length;\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data');\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 while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n };\n }\n}\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str) {\n return str.slice(0, 2) === '0x';\n}\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer) {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!');\n }\n var hex = integer.toString(16);\n return hex.length % 2 ? \"0\" + hex : hex;\n}\n/** Pad a string to be even */\nfunction padToEven(a) {\n return a.length % 2 ? \"0\" + a : a;\n}\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer) {\n var hex = intToHex(integer);\n return Buffer.from(hex, 'hex');\n}\n/** Transform anything into a Buffer */\nfunction toBuffer(v) {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex');\n }\n else {\n return Buffer.from(v);\n }\n }\n else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([]);\n }\n else {\n return intToBuffer(v);\n }\n }\n else if (v === null || v === undefined) {\n return Buffer.from([]);\n }\n else if (v instanceof Uint8Array) {\n return Buffer.from(v);\n }\n else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray());\n }\n else {\n throw new Error('invalid type');\n }\n }\n return v;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockLogs = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst utils_2 = require(\"@ganache/utils\");\nconst rlp_1 = require(\"@ganache/rlp\");\nconst ethereum_address_1 = require(\"@ganache/ethereum-address\");\nconst _raw = Symbol(\"raw\");\nconst _logs = Symbol(\"logs\");\nconst filterByTopic = (expectedTopics, logTopics) => {\n // Exclude log if its number of topics is less than the number expected\n if (expectedTopics.length > logTopics.length)\n return false;\n // for every expectedTopic, we must much the log topic in the same position\n return expectedTopics.every((expectedTopic, logPosition) => {\n // a `null` topic means \"anything\"\n if (expectedTopic === null)\n return true;\n let expectedTopicSet;\n if (!Array.isArray(expectedTopic)) {\n return logTopics[logPosition].equals(utils_1.Data.from(expectedTopic).toBuffer());\n }\n // an empty rule set means \"anything\"\n if (expectedTopic.length === 0)\n return true;\n expectedTopicSet = expectedTopic;\n const logTopic = logTopics[logPosition];\n // \"OR\" logic, e.g., [[A, B]] means log topic in the first position matching either \"A\" OR \"B\":\n return expectedTopicSet.some(expectedTopic => logTopic.equals(utils_1.Data.from(expectedTopic).toBuffer()));\n });\n};\nclass BlockLogs {\n constructor(data) {\n if (data) {\n const decoded = rlp_1.decode(data);\n this[_raw] = decoded;\n }\n }\n /**\n *\n * @param blockHash Creates an BlogLogs entity with an empty internal logs\n * array.\n */\n static create(blockHash) {\n const blockLog = Object.create(BlockLogs.prototype);\n blockLog[_raw] = [blockHash.toBuffer(), []];\n return blockLog;\n }\n /**\n * rlpEncode's the blockHash and logs array for db storage\n */\n serialize() {\n return rlp_1.encode(this[_raw]);\n }\n /**\n * Appends the data to the internal logs array\n * @param transactionIndex\n * @param transactionHash\n * @param log\n */\n append(\n /*removed: boolean, */ transactionIndex, transactionHash, log) {\n this[_raw][1].push([\n utils_2.BUFFER_ZERO,\n transactionIndex.toBuffer(),\n transactionHash.toBuffer(),\n log[0],\n log[1],\n log[2] // `data`\n ]);\n }\n /**\n * Returns the number of logs in the internal logs array.\n */\n get length() {\n return this[_raw][1].length;\n }\n static fromJSON(json) {\n if (!json || json.length === 0) {\n return null;\n }\n const blockHash = json[0].blockHash;\n const blockNumber = json[0].blockNumber;\n const blockLogs = BlockLogs.create(utils_1.Data.from(blockHash, 32));\n blockLogs.blockNumber = utils_1.Quantity.from(blockNumber);\n json.forEach(log => {\n const address = ethereum_address_1.Address.from(log.address);\n const blockNumber = log.blockNumber;\n const data = Array.isArray(log.data)\n ? log.data.map(d => utils_1.Data.from(d).toBuffer())\n : utils_1.Data.from(log.data).toBuffer();\n const logIndex = log.logIndex;\n const removed = log.removed === false ? utils_2.BUFFER_ZERO : utils_2.RPCQUANTITY_ONE.toBuffer();\n const topics = Array.isArray(log.topics)\n ? log.topics.map(t => utils_1.Data.from(t, 32).toBuffer())\n : utils_1.Data.from(log.topics, 32).toBuffer();\n const transactionHash = utils_1.Data.from(log.transactionHash, 32);\n const transactionIndex = utils_1.Quantity.from(log.transactionIndex);\n blockLogs.append(transactionIndex, transactionHash, [\n address.toBuffer(),\n topics,\n data\n ]);\n });\n return blockLogs;\n }\n toJSON() {\n return this[_logs]().toJSON();\n }\n [_logs]() {\n const blockNumber = this.blockNumber;\n const raw = this[_raw];\n const logs = raw[1];\n const l = this.length;\n const blockHash = utils_1.Data.from(raw[0]);\n return {\n toJSON() {\n return {\n *[Symbol.iterator]() {\n for (let i = 0; i < l; i++) {\n yield BlockLogs.logToJSON(logs[i], utils_1.Quantity.from(i), blockHash, blockNumber);\n }\n }\n };\n },\n *[Symbol.iterator]() {\n for (let i = 0; i < l; i++) {\n const log = logs[i];\n const address = log[3];\n const topics = log[4];\n yield {\n address,\n topics,\n toJSON: () => BlockLogs.logToJSON(log, utils_1.Quantity.from(i), blockHash, blockNumber)\n };\n }\n }\n };\n }\n /**\n *\n * @param log\n * @param logIndex The index this log appears in the block\n * @param blockHash The hash of the block\n * @param blockNumber The block number\n */\n static logToJSON(log, logIndex, blockHash, blockNumber) {\n const topics = log[4];\n const data = log[5];\n return {\n address: ethereum_address_1.Address.from(log[3]),\n blockHash,\n blockNumber,\n data: Array.isArray(data)\n ? data.map(d => utils_1.Data.from(d, d.length))\n : utils_1.Data.from(data, data.length),\n logIndex,\n removed: log[0].equals(utils_2.BUFFER_ZERO) ? false : true,\n topics: Array.isArray(topics)\n ? topics.map(t => utils_1.Data.from(t, 32))\n : utils_1.Data.from(topics, 32),\n transactionHash: utils_1.Data.from(log[2], 32),\n transactionIndex: utils_1.Quantity.from(log[1])\n };\n }\n /**\n * Note: you must set `this.blockNumber: Quantity` first!\n *\n * Topics are order-dependent. A transaction with a log with topics [A, B] will be matched by the following topic\n * filters:\n * ▸ [] \"anything\"\n * ▸ [A] \"A in first position (and anything after)\"\n * ▸ [null, B] \"anything in first position AND B in second position (and anything after)\"\n * ▸ [A, B] \"A\" in first position AND B in second position (and anything after)\"\n * ▸ [[A, B], [A, B]] \"(A OR B) in first position AND (A OR B) in second position (and anything after)\"\n * @param expectedAddresses\n * @param expectedTopics\n * @returns JSON representation of the filtered logs\n */\n *filter(expectedAddresses, expectedTopics) {\n const logs = this[_logs]();\n if (expectedAddresses.length !== 0) {\n if (expectedTopics.length === 0) {\n for (const log of logs) {\n if (expectedAddresses.some(address => address.equals(log.address)))\n yield log.toJSON();\n }\n }\n else {\n for (const log of logs) {\n if (!expectedAddresses.some(address => address.equals(log.address)))\n continue;\n if (filterByTopic(expectedTopics, log.topics))\n yield log.toJSON();\n }\n }\n }\n else if (expectedTopics.length !== 0) {\n for (const log of logs) {\n if (filterByTopic(expectedTopics, log.topics))\n yield log.toJSON();\n }\n }\n else {\n yield* logs.toJSON();\n }\n }\n}\nexports.BlockLogs = BlockLogs;\n//# sourceMappingURL=blocklogs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceDataFactory = void 0;\nconst utils_1 = require(\"@ganache/utils\");\nconst BYTE_LENGTH = 32;\n/**\n * Precomputed 32-byte prefixes to make stringification a faster\n */\nconst PREFIXES = [\n \"\",\n \"00\",\n \"0000\",\n \"000000\",\n \"00000000\",\n \"0000000000\",\n \"000000000000\",\n \"00000000000000\",\n \"0000000000000000\",\n \"000000000000000000\",\n \"00000000000000000000\",\n \"0000000000000000000000\",\n \"000000000000000000000000\",\n \"00000000000000000000000000\",\n \"0000000000000000000000000000\",\n \"000000000000000000000000000000\",\n \"00000000000000000000000000000000\",\n \"0000000000000000000000000000000000\",\n \"000000000000000000000000000000000000\",\n \"00000000000000000000000000000000000000\",\n \"0000000000000000000000000000000000000000\",\n \"000000000000000000000000000000000000000000\",\n \"00000000000000000000000000000000000000000000\",\n \"0000000000000000000000000000000000000000000000\",\n \"000000000000000000000000000000000000000000000000\",\n \"00000000000000000000000000000000000000000000000000\",\n \"0000000000000000000000000000000000000000000000000000\",\n \"000000000000000000000000000000000000000000000000000000\",\n \"00000000000000000000000000000000000000000000000000000000\",\n \"0000000000000000000000000000000000000000000000000000000000\",\n \"000000000000000000000000000000000000000000000000000000000000\",\n \"00000000000000000000000000000000000000000000000000000000000000\",\n \"0000000000000000000000000000000000000000000000000000000000000000\"\n];\nconst TraceDataFactory = () => {\n const traceDataLookup = new Map();\n const TraceData = {\n from: (value) => {\n // Remove all leading zeroes from keys.\n const key = utils_1.bufferToMinHexKey(value);\n const existing = traceDataLookup.get(key);\n if (existing) {\n return existing;\n }\n let buffer;\n let str;\n const data = {\n /**\n * Returns a 32-byte 0-padded Buffer\n */\n toBuffer: () => {\n if (buffer) {\n return buffer;\n }\n const length = value.byteLength;\n if (length === BYTE_LENGTH) {\n buffer = value;\n }\n else {\n // convert the buffer into the appropriately sized buffer.\n const lengthDiff = BYTE_LENGTH - length;\n buffer = Buffer.allocUnsafe(BYTE_LENGTH).fill(0, 0, lengthDiff);\n value.copy(buffer, lengthDiff, 0, length);\n }\n return buffer;\n },\n /**\n * Returns a 32-byte hex-string representation\n */\n toJSON: () => {\n if (str) {\n return str;\n }\n // convert a hex key like \"ab01\" into \"00...00ab01\"\n return (str = `${PREFIXES[BYTE_LENGTH - key.length / 2]}${key}`);\n }\n };\n traceDataLookup.set(key, data);\n return data;\n }\n };\n return TraceData;\n};\nexports.TraceDataFactory = TraceDataFactory;\n//# sourceMappingURL=trace-data.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStorageMap = void 0;\nclass TraceStorageMap extends Map {\n toJSON() {\n const obj = {};\n for (const [key, value] of this) {\n obj[key.toJSON()] = value;\n }\n return obj;\n }\n}\nexports.TraceStorageMap = TraceStorageMap;\n//# sourceMappingURL=trace-storage-map.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=extract-values-from-types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=shh.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=step-event.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=subscriptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=tuple-from-union.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=debug-storage.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hash_utils_1 = require(\"./hash-utils\");\nvar createKeccakHash = require(\"keccak\");\nexports.keccak224 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak224\");\n});\nexports.keccak256 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak256\");\n});\nexports.keccak384 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak384\");\n});\nexports.keccak512 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak512\");\n});\n//# sourceMappingURL=keccak.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction createHashFunction(hashConstructor) {\n return function (msg) {\n var hash = hashConstructor();\n hash.update(msg);\n return Buffer.from(hash.digest());\n };\n}\nexports.createHashFunction = createHashFunction;\n//# sourceMappingURL=hash-utils.js.map","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar randombytes = require(\"randombytes\");\nfunction getRandomBytes(bytes) {\n return new Promise(function (resolve, reject) {\n randombytes(bytes, function (err, resp) {\n if (err) {\n reject(err);\n return;\n }\n resolve(resp);\n });\n });\n}\nexports.getRandomBytes = getRandomBytes;\nfunction getRandomBytesSync(bytes) {\n return randombytes(bytes);\n}\nexports.getRandomBytesSync = getRandomBytesSync;\n//# sourceMappingURL=random.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert = require('assert');\nconst BN = require(\"bn.js\");\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert(BN.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert(Buffer.isBuffer(salt));\n assert(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\n// TODO: This can be replaced with a normal ESM import once\n// the new major version of the typescript config package\n// is released and adopted here.\nconst BN = require(\"bn.js\");\nexports.BN = BN;\nconst rlp = require(\"rlp\");\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockTransaction = void 0;\nconst frozen_transaction_1 = require(\"./frozen-transaction\");\n/**\n * A FrozenTransaction, whose _source_ is an existing Block\n */\nclass BlockTransaction extends frozen_transaction_1.FrozenTransaction {\n constructor(data, [from, hash], blockHash, blockNumber, index, common) {\n // Build a GanacheRawExtraTx from the data given to use by BlockRawTx and\n // the constructor args\n const extraRaw = [\n from,\n hash,\n blockHash,\n blockNumber,\n index\n ];\n super([data, extraRaw], common);\n }\n}\nexports.BlockTransaction = BlockTransaction;\n//# sourceMappingURL=block-transaction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FakeTransaction = void 0;\nconst runtime_transaction_1 = require(\"./runtime-transaction\");\n/**\n * A FakeTransaction spoofs the from address and signature.\n */\nclass FakeTransaction extends runtime_transaction_1.RuntimeTransaction {\n constructor(data, common) {\n super(data, common);\n if (this.from == null) {\n throw new Error(\"Internal Error: FakeTransaction initialized without a `from` field.\");\n }\n }\n}\nexports.FakeTransaction = FakeTransaction;\n//# sourceMappingURL=fake-transaction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=hardfork.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=raw.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=rpc-transaction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=vm-transaction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hash_utils_1 = require(\"./hash-utils\");\nvar createKeccakHash = require(\"keccak\");\nexports.keccak224 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak224\");\n});\nexports.keccak256 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak256\");\n});\nexports.keccak384 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak384\");\n});\nexports.keccak512 = hash_utils_1.createHashFunction(function () {\n return createKeccakHash(\"keccak512\");\n});\n//# sourceMappingURL=keccak.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction createHashFunction(hashConstructor) {\n return function (msg) {\n var hash = hashConstructor();\n hash.update(msg);\n return Buffer.from(hash.digest());\n };\n}\nexports.createHashFunction = createHashFunction;\n//# sourceMappingURL=hash-utils.js.map","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar randombytes = require(\"randombytes\");\nfunction getRandomBytes(bytes) {\n return new Promise(function (resolve, reject) {\n randombytes(bytes, function (err, resp) {\n if (err) {\n reject(err);\n return;\n }\n resolve(resp);\n });\n });\n}\nexports.getRandomBytes = getRandomBytes;\nfunction getRandomBytesSync(bytes) {\n return randombytes(bytes);\n}\nexports.getRandomBytesSync = getRandomBytesSync;\n//# sourceMappingURL=random.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert = require('assert');\nconst BN = require(\"bn.js\");\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert(BN.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert(Buffer.isBuffer(salt));\n assert(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\n// TODO: This can be replaced with a normal ESM import once\n// the new major version of the typescript config package\n// is released and adopted here.\nconst BN = require(\"bn.js\");\nexports.BN = BN;\nconst rlp = require(\"rlp\");\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=snapshots.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction createHashFunction(hashConstructor) {\n return function (msg) {\n var hash = hashConstructor();\n hash.update(msg);\n return Buffer.from(hash.digest());\n };\n}\nexports.createHashFunction = createHashFunction;\n//# sourceMappingURL=hash-utils.js.map","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar randombytes = require(\"randombytes\");\nfunction getRandomBytes(bytes) {\n return new Promise(function (resolve, reject) {\n randombytes(bytes, function (err, resp) {\n if (err) {\n reject(err);\n return;\n }\n resolve(resp);\n });\n });\n}\nexports.getRandomBytes = getRandomBytes;\nfunction getRandomBytesSync(bytes) {\n return randombytes(bytes);\n}\nexports.getRandomBytesSync = getRandomBytesSync;\n//# sourceMappingURL=random.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nconst assert = require('assert');\nconst BN = require(\"bn.js\");\nconst bytes_1 = require(\"./bytes\");\nconst account_1 = require(\"./account\");\nclass Address {\n constructor(buf) {\n assert(buf.length === 20, 'Invalid address length');\n this.buf = buf;\n }\n /**\n * Returns the zero address.\n */\n static zero() {\n return new Address(bytes_1.zeros(20));\n }\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str) {\n assert(account_1.isValidAddress(str), 'Invalid address');\n return new Address(bytes_1.toBuffer(str));\n }\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey) {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer');\n const buf = account_1.pubToAddress(pubKey);\n return new Address(buf);\n }\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey) {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer');\n const buf = account_1.privateToAddress(privateKey);\n return new Address(buf);\n }\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from, nonce) {\n assert(BN.isBN(nonce));\n return new Address(account_1.generateAddress(from.buf, nonce.toArrayLike(Buffer)));\n }\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from, salt, initCode) {\n assert(Buffer.isBuffer(salt));\n assert(Buffer.isBuffer(initCode));\n return new Address(account_1.generateAddress2(from.buf, salt, initCode));\n }\n /**\n * Is address equal to another.\n */\n equals(address) {\n return this.buf.equals(address.buf);\n }\n /**\n * Is address zero.\n */\n isZero() {\n return this.equals(Address.zero());\n }\n /**\n * Returns hex encoding of address.\n */\n toString() {\n return '0x' + this.buf.toString('hex');\n }\n /**\n * Returns Buffer representation of address.\n */\n toBuffer() {\n return Buffer.from(this.buf);\n }\n}\nexports.Address = Address;\n//# sourceMappingURL=address.js.map","\"use strict\";\n/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rlp = exports.BN = void 0;\n// TODO: This can be replaced with a normal ESM import once\n// the new major version of the typescript config package\n// is released and adopted here.\nconst BN = require(\"bn.js\");\nexports.BN = BN;\nconst rlp = require(\"rlp\");\nexports.rlp = rlp;\n//# sourceMappingURL=externals.js.map","'use strict';\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\n\nvar ec = new EC('secp256k1');\nvar ecparams = ec.curve;\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey);\n if (d.ucmp(ecparams.n) >= 0) {\n throw new Error('couldn\\'t export to DER format');\n }\n\n var point = ec.g.mul(d);\n return toPublicKey(point.getX(), point.getY(), compressed);\n};\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey);\n if (bn.ucmp(ecparams.n) >= 0 || bn.isZero()) {\n throw new Error('private key range is invalid');\n }\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32);\n};\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r);\n if (r.ucmp(ecparams.n) >= 0) {\n r = new BN(0);\n }\n\n var s = new BN(sigObj.s);\n if (s.ucmp(ecparams.n) >= 0) {\n s = new BN(0);\n }\n\n return Buffer.concat([r.toArrayLike(Buffer, 'be', 32), s.toArrayLike(Buffer, 'be', 32)]);\n};\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var point = ec.keyFromPublic(publicKey);\n\n var scalar = new BN(privateKey);\n if (scalar.ucmp(ecparams.n) >= 0 || scalar.isZero()) {\n throw new Error('scalar was invalid (zero or overflow)');\n }\n\n var shared = point.pub.mul(scalar);\n return toPublicKey(shared.getX(), shared.getY(), compressed);\n};\n\nvar toPublicKey = function toPublicKey(x, y, compressed) {\n var publicKey = void 0;\n\n if (compressed) {\n publicKey = Buffer.alloc(33);\n publicKey[0] = y.isOdd() ? 0x03 : 0x02;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n } else {\n publicKey = Buffer.alloc(65);\n publicKey[0] = 0x04;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n y.toArrayLike(Buffer, 'be', 32).copy(publicKey, 33);\n }\n\n return publicKey;\n};","\"use strict\";\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n// begin\n0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x21, 0x02, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n// begin\n0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x41, 0x04, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED);\n privateKey.copy(result, compressed ? 8 : 9);\n publicKey.copy(result, compressed ? 181 : 214);\n return result;\n};\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length;\n\n // sequence header\n var index = 0;\n if (length < index + 1 || privateKey[index] !== 0x30) return null;\n index += 1;\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return null;\n\n var lenb = privateKey[index] & 0x7f;\n index += 1;\n if (lenb < 1 || lenb > 2) return null;\n if (length < index + lenb) return null;\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0);\n index += lenb;\n if (length < index + len) return null;\n\n // sequence element 0: version number (=1)\n if (length < index + 3 || privateKey[index] !== 0x02 || privateKey[index + 1] !== 0x01 || privateKey[index + 2] !== 0x01) {\n return null;\n }\n index += 3;\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 || privateKey[index] !== 0x04 || privateKey[index + 1] > 0x20 || length < index + 2 + privateKey[index + 1]) {\n return null;\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1]);\n};\n\nexports.signatureImportLax = function (signature) {\n var r = Buffer.alloc(32, 0);\n var s = Buffer.alloc(32, 0);\n\n var length = signature.length;\n var index = 0;\n\n // sequence tag byte\n if (signature[index++] !== 0x30) {\n return null;\n }\n\n // sequence length byte\n var lenbyte = signature[index++];\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80;\n if (index > length) {\n return null;\n }\n }\n\n // sequence tag byte for r\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for r\n var rlen = signature[index++];\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n rlen = (rlen << 8) + signature[index];\n }\n }\n if (rlen > length - index) {\n return null;\n }\n var rindex = index;\n index += rlen;\n\n // sequence tag byte for s\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for s\n var slen = signature[index++];\n if (slen & 0x80) {\n lenbyte = slen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n slen = (slen << 8) + signature[index];\n }\n }\n if (slen > length - index) {\n return null;\n }\n var sindex = index;\n index += slen;\n\n // ignore leading zeros in r\n for (; rlen > 0 && signature[rindex] === 0x00; rlen -= 1, rindex += 1) {}\n // copy r value\n if (rlen > 32) {\n return null;\n }\n var rvalue = signature.slice(rindex, rindex + rlen);\n rvalue.copy(r, 32 - rvalue.length);\n\n // ignore leading zeros in s\n for (; slen > 0 && signature[sindex] === 0x00; slen -= 1, sindex += 1) {}\n // copy s value\n if (slen > 32) {\n return null;\n }\n var svalue = signature.slice(sindex, sindex + slen);\n svalue.copy(s, 32 - svalue.length);\n\n return { r: r, s: s };\n};","module.exports = require('./lib/index.js')\n","'use strict';\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\n\nvar ec = new EC('secp256k1');\nvar ecparams = ec.curve;\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey);\n if (d.ucmp(ecparams.n) >= 0) {\n throw new Error('couldn\\'t export to DER format');\n }\n\n var point = ec.g.mul(d);\n return toPublicKey(point.getX(), point.getY(), compressed);\n};\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey);\n if (bn.ucmp(ecparams.n) >= 0 || bn.isZero()) {\n throw new Error('private key range is invalid');\n }\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32);\n};\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r);\n if (r.ucmp(ecparams.n) >= 0) {\n r = new BN(0);\n }\n\n var s = new BN(sigObj.s);\n if (s.ucmp(ecparams.n) >= 0) {\n s = new BN(0);\n }\n\n return Buffer.concat([r.toArrayLike(Buffer, 'be', 32), s.toArrayLike(Buffer, 'be', 32)]);\n};\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var point = ec.keyFromPublic(publicKey);\n\n var scalar = new BN(privateKey);\n if (scalar.ucmp(ecparams.n) >= 0 || scalar.isZero()) {\n throw new Error('scalar was invalid (zero or overflow)');\n }\n\n var shared = point.pub.mul(scalar);\n return toPublicKey(shared.getX(), shared.getY(), compressed);\n};\n\nvar toPublicKey = function toPublicKey(x, y, compressed) {\n var publicKey = void 0;\n\n if (compressed) {\n publicKey = Buffer.alloc(33);\n publicKey[0] = y.isOdd() ? 0x03 : 0x02;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n } else {\n publicKey = Buffer.alloc(65);\n publicKey[0] = 0x04;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n y.toArrayLike(Buffer, 'be', 32).copy(publicKey, 33);\n }\n\n return publicKey;\n};","\"use strict\";\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n// begin\n0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x21, 0x02, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n// begin\n0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x41, 0x04, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED);\n privateKey.copy(result, compressed ? 8 : 9);\n publicKey.copy(result, compressed ? 181 : 214);\n return result;\n};\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length;\n\n // sequence header\n var index = 0;\n if (length < index + 1 || privateKey[index] !== 0x30) return null;\n index += 1;\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return null;\n\n var lenb = privateKey[index] & 0x7f;\n index += 1;\n if (lenb < 1 || lenb > 2) return null;\n if (length < index + lenb) return null;\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0);\n index += lenb;\n if (length < index + len) return null;\n\n // sequence element 0: version number (=1)\n if (length < index + 3 || privateKey[index] !== 0x02 || privateKey[index + 1] !== 0x01 || privateKey[index + 2] !== 0x01) {\n return null;\n }\n index += 3;\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 || privateKey[index] !== 0x04 || privateKey[index + 1] > 0x20 || length < index + 2 + privateKey[index + 1]) {\n return null;\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1]);\n};\n\nexports.signatureImportLax = function (signature) {\n var r = Buffer.alloc(32, 0);\n var s = Buffer.alloc(32, 0);\n\n var length = signature.length;\n var index = 0;\n\n // sequence tag byte\n if (signature[index++] !== 0x30) {\n return null;\n }\n\n // sequence length byte\n var lenbyte = signature[index++];\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80;\n if (index > length) {\n return null;\n }\n }\n\n // sequence tag byte for r\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for r\n var rlen = signature[index++];\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n rlen = (rlen << 8) + signature[index];\n }\n }\n if (rlen > length - index) {\n return null;\n }\n var rindex = index;\n index += rlen;\n\n // sequence tag byte for s\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for s\n var slen = signature[index++];\n if (slen & 0x80) {\n lenbyte = slen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n slen = (slen << 8) + signature[index];\n }\n }\n if (slen > length - index) {\n return null;\n }\n var sindex = index;\n index += slen;\n\n // ignore leading zeros in r\n for (; rlen > 0 && signature[rindex] === 0x00; rlen -= 1, rindex += 1) {}\n // copy r value\n if (rlen > 32) {\n return null;\n }\n var rvalue = signature.slice(rindex, rindex + rlen);\n rvalue.copy(r, 32 - rvalue.length);\n\n // ignore leading zeros in s\n for (; slen > 0 && signature[sindex] === 0x00; slen -= 1, sindex += 1) {}\n // copy s value\n if (slen > 32) {\n return null;\n }\n var svalue = signature.slice(sindex, sindex + slen);\n svalue.copy(s, 32 - svalue.length);\n\n return { r: r, s: s };\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please explicitly pass a 2048 word array explicitly.';\nfunction lpad(str, padString, length) {\n while (str.length < length)\n str = padString + str;\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map(x => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary([...hash]).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return new Promise((resolve, reject) => {\n try {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n pbkdf2_1.pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', (err, data) => {\n if (err)\n return reject(err);\n else\n return resolve(data);\n });\n }\n catch (error) {\n return reject(error);\n }\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = (mnemonic || '').normalize('NFKD').split(' ');\n if (words.length % 3 !== 0)\n throw new Error(INVALID_MNEMONIC);\n // convert word indices to 11 bit binary strings\n const bits = words\n .map(word => {\n const index = wordlist.indexOf(word);\n if (index === -1)\n throw new Error(INVALID_MNEMONIC);\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length > 32)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length % 4 !== 0)\n throw new Error(INVALID_ENTROPY);\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits)\n throw new Error(INVALID_CHECKSUM);\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy))\n entropy = Buffer.from(entropy, 'hex');\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length > 32)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length % 4 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n const entropyBits = bytesToBinary([...entropy]);\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map(binary => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result)\n DEFAULT_WORDLIST = result;\n else\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST)\n throw new Error('No Default Wordlist set');\n return Object.keys(_wordlists_1.wordlists).filter(lang => {\n if (lang === 'JA' || lang === 'EN')\n return false;\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","module.exports = require('./browser/algorithms.json')\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\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","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ethereumjs_util_1 = require(\"ethereumjs-util\");\nconst ethereum_utils_1 = require(\"@ganache/ethereum-utils\");\nconst utils_1 = require(\"@ganache/utils\");\nconst bn = (val = 0) => new ethereumjs_util_1.BN(val);\nconst STIPEND = bn(2300);\nconst MULTIPLE = 64 / 63;\nconst check = set => opname => set.has(opname);\nconst isCall = check(new Set([\"CALL\", \"DELEGATECALL\", \"STATICCALL\", \"CALLCODE\"]));\nconst isCallOrCallcode = check(new Set([\"CALL\", \"CALLCODE\"]));\nconst isCreate = check(new Set([\"CREATE\", \"CREATE2\"]));\nconst isTerminator = check(new Set([\"STOP\", \"RETURN\", \"REVERT\", \"INVALID\", \"SELFDESTRUCT\"]));\nconst stepTracker = () => {\n const sysOps = [];\n const allOps = [];\n const preCompile = new Set();\n let preCompileCheck = false;\n let precompileCallDepth = 0;\n return {\n collect: info => {\n if (preCompileCheck) {\n if (info.depth === precompileCallDepth) {\n // If the current depth is unchanged.\n // we record its position.\n preCompile.add(allOps.length - 1);\n }\n // Reset the flag immediately here\n preCompileCheck = false;\n }\n if (isCall(info.opcode.name)) {\n info.stack = info.stack.map(val => val.clone());\n preCompileCheck = true;\n precompileCallDepth = info.depth;\n sysOps.push({\n index: allOps.length,\n depth: info.depth,\n name: info.opcode.name\n });\n }\n else if (isCreate(info.opcode.name) || isTerminator(info.opcode.name)) {\n sysOps.push({\n index: allOps.length,\n depth: info.depth,\n name: info.opcode.name\n });\n }\n // This goes last so we can use the length for the index ^\n allOps.push(info);\n },\n isPrecompile: index => preCompile.has(index),\n done: () => !allOps.length ||\n sysOps.length < 2 ||\n !isTerminator(allOps[allOps.length - 1].opcode.name),\n ops: allOps,\n systemOps: sysOps\n };\n};\nconst estimateGas = (generateVM, runArgs, callback) => {\n exactimate(generateVM(), runArgs, (err, result) => {\n if (err)\n return callback(err);\n binSearch(generateVM, runArgs, result, (err, result) => {\n if (err)\n return callback(err);\n callback(null, result);\n });\n });\n};\nconst binSearch = async (generateVM, runArgs, result, callback) => {\n const MAX = runArgs.block.header.gasLimit;\n const gasRefund = result.execResult.gasRefund;\n const startingGas = gasRefund\n ? result.gasEstimate.add(gasRefund)\n : result.gasEstimate;\n const range = { lo: startingGas, hi: startingGas };\n const isEnoughGas = async (gas) => {\n const vm = generateVM(); // Generate fresh VM\n runArgs.tx.gasLimit = new ethereumjs_util_1.BN(gas.toArrayLike(Buffer));\n const result = await vm.runTx(runArgs).catch(vmerr => ({ vmerr }));\n return !result.vmerr && !result.execResult.exceptionError;\n };\n if (!(await isEnoughGas(range.hi))) {\n do {\n range.hi = range.hi.muln(MULTIPLE);\n } while (!(await isEnoughGas(range.hi)));\n while (range.lo.addn(1).lt(range.hi)) {\n const mid = range.lo.add(range.hi).divn(2);\n if (await isEnoughGas(mid)) {\n range.hi = mid;\n }\n else {\n range.lo = mid;\n }\n }\n if (range.hi.gte(MAX)) {\n if (!(await isEnoughGas(range.hi))) {\n return callback(new Error(\"gas required exceeds allowance or always failing transaction\"));\n }\n }\n }\n result.gasEstimate = range.hi;\n callback(null, result);\n};\nconst exactimate = async (vm, runArgs, callback) => {\n const steps = stepTracker();\n vm.on(\"step\", steps.collect);\n const Context = (index, fee) => {\n const base = index === 0;\n let start = index;\n let stop = 0;\n const cost = bn();\n let sixtyFloorths = bn();\n const op = steps.ops[index];\n const next = steps.ops[index + 1];\n const intermediateCost = op.gasLeft.sub(next.gasLeft);\n const callingFee = fee || bn();\n let compositeContext = false;\n function addGas(val) {\n // Add to our current context, but accounted for in sixtyfloorths\n if (sixtyFloorths.gtn(0)) {\n if (val.gte(sixtyFloorths)) {\n sixtyFloorths = bn();\n }\n else {\n sixtyFloorths.isub(val);\n }\n }\n cost.iadd(val);\n }\n return {\n start: () => start,\n stop: () => stop,\n setStart: val => {\n start = val;\n compositeContext = true;\n },\n setStop: val => {\n stop = val;\n },\n getCost: () => ({ cost, sixtyFloorths }),\n transfer: ctx => {\n const values = ctx.getCost();\n addGas(values.cost);\n sixtyFloorths.iadd(values.sixtyFloorths);\n },\n addSixtyFloorth: sixtyFloorth => {\n sixtyFloorths.iadd(sixtyFloorth);\n },\n addRange: (fee = bn()) => {\n // only occurs on stack increasing ops\n addGas(steps.ops[base || compositeContext ? start : start + 1].gasLeft\n .sub(steps.ops[stop].gasLeft)\n .add(fee));\n },\n finalizeRange: () => {\n let range;\n // if we have a composite context and we are NOT at the final terminator\n if (compositeContext && stop !== steps.ops.length - 1) {\n range = steps.ops[start].gasLeft.sub(steps.ops[stop - 1].gasLeft);\n addGas(range);\n const tail = steps.ops[stop - 1].gasLeft.sub(steps.ops[stop].gasLeft);\n range = tail.add(intermediateCost);\n }\n else {\n range = steps.ops[start].gasLeft.sub(steps.ops[stop].gasLeft);\n }\n range.isub(callingFee);\n addGas(range);\n if (isCallOrCallcode(op.opcode.name) &&\n !op.stack[op.stack.length - 3].isZero()) {\n cost.iadd(sixtyFloorths);\n const innerCost = next.gasLeft.sub(steps.ops[stop - 1].gasLeft);\n if (innerCost.gt(STIPEND)) {\n sixtyFloorths = cost.divn(63);\n }\n else if (innerCost.lte(STIPEND)) {\n sixtyFloorths = STIPEND.sub(innerCost);\n }\n }\n else if (stop !== steps.ops.length - 1) {\n cost.iadd(sixtyFloorths);\n sixtyFloorths = cost.divn(63);\n }\n }\n };\n };\n const getTotal = () => {\n const sysops = steps.systemOps;\n const ops = steps.ops;\n const opIndex = cursor => sysops[cursor].index;\n const stack = [];\n let cursor = 0;\n let context = Context(0);\n while (cursor < sysops.length) {\n const currentIndex = opIndex(cursor);\n const current = ops[currentIndex];\n const name = current.opcode.name;\n if (isCall(name) || isCreate(name)) {\n if (steps.isPrecompile(currentIndex)) {\n context.setStop(currentIndex + 1);\n context.addRange();\n context.setStart(currentIndex + 1);\n context.addSixtyFloorth(STIPEND);\n }\n else {\n context.setStop(currentIndex);\n context.addRange(bn(current.opcode.fee));\n stack.push(context);\n context = Context(currentIndex, bn(current.opcode.fee)); // setup next context\n }\n }\n else if (isTerminator(name)) {\n // only on the last operation\n context.setStop(currentIndex + 1 < steps.ops.length ? currentIndex + 1 : currentIndex);\n context.finalizeRange();\n const ctx = stack.pop();\n if (ctx) {\n ctx.transfer(context);\n context = ctx;\n context.setStart(currentIndex + 1);\n }\n else {\n break;\n }\n }\n else {\n throw new Error(\"INVALID OPCODE\");\n }\n cursor++;\n }\n const gas = context.getCost();\n return gas.cost.add(gas.sixtyFloorths);\n };\n const result = await vm.runTx(runArgs).catch(vmerr => ({ vmerr }));\n const vmerr = result.vmerr;\n if (vmerr) {\n return callback(vmerr);\n }\n else if (result.execResult.exceptionError) {\n const error = new ethereum_utils_1.RuntimeError(\n // erroneous gas estimations don't have meaningful hashes\n utils_1.RPCQUANTITY_EMPTY, result, ethereum_utils_1.RETURN_TYPES.RETURN_VALUE);\n return callback(error, result);\n }\n else if (steps.done()) {\n const estimate = result.gasUsed;\n result.gasEstimate = estimate;\n }\n else {\n const actualUsed = steps.ops[0].gasLeft.sub(steps.ops[steps.ops.length - 1].gasLeft);\n const sixtyFloorths = getTotal().sub(actualUsed);\n result.gasEstimate = result.gasUsed.add(sixtyFloorths);\n }\n callback(vmerr, result);\n};\nexports.default = estimateGas;\n//# sourceMappingURL=gas-estimator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertArgLength = void 0;\nfunction assertArgLength(min, max = min) {\n return function (target, propertyKey, descriptor) {\n const original = descriptor.value;\n descriptor.value = function () {\n const length = arguments.length;\n if (length < min || length > max) {\n throw new Error(`Incorrect number of arguments. '${propertyKey}' requires ${min === max\n ? `exactly ${min} ${min === 1 ? \"argument\" : \"arguments\"}.`\n : `between ${min} and ${max} arguments.`}`);\n }\n return Reflect.apply(original, this, arguments);\n };\n return descriptor;\n };\n}\nexports.assertArgLength = assertArgLength;\n//# sourceMappingURL=assert-arg-length.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please explicitly pass a 2048 word array explicitly.';\nfunction pbkdf2Promise(password, saltMixin, iterations, keylen, digest) {\n return Promise.resolve().then(() => new Promise((resolve, reject) => {\n const callback = (err, derivedKey) => {\n if (err) {\n return reject(err);\n }\n else {\n return resolve(derivedKey);\n }\n };\n pbkdf2_1.pbkdf2(password, saltMixin, iterations, keylen, digest, callback);\n }));\n}\nfunction normalize(str) {\n return (str || '').normalize('NFKD');\n}\nfunction lpad(str, padString, length) {\n while (str.length < length) {\n str = padString + str;\n }\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map((x) => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary(Array.from(hash)).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8');\n const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return Promise.resolve().then(() => {\n const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8');\n const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8');\n return pbkdf2Promise(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = normalize(mnemonic).split(' ');\n if (words.length % 3 !== 0) {\n throw new Error(INVALID_MNEMONIC);\n }\n // convert word indices to 11 bit binary strings\n const bits = words\n .map((word) => {\n const index = wordlist.indexOf(word);\n if (index === -1) {\n throw new Error(INVALID_MNEMONIC);\n }\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16) {\n throw new Error(INVALID_ENTROPY);\n }\n if (entropyBytes.length > 32) {\n throw new Error(INVALID_ENTROPY);\n }\n if (entropyBytes.length % 4 !== 0) {\n throw new Error(INVALID_ENTROPY);\n }\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits) {\n throw new Error(INVALID_CHECKSUM);\n }\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy)) {\n entropy = Buffer.from(entropy, 'hex');\n }\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16) {\n throw new TypeError(INVALID_ENTROPY);\n }\n if (entropy.length > 32) {\n throw new TypeError(INVALID_ENTROPY);\n }\n if (entropy.length % 4 !== 0) {\n throw new TypeError(INVALID_ENTROPY);\n }\n const entropyBits = bytesToBinary(Array.from(entropy));\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map((binary) => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0) {\n throw new TypeError(INVALID_ENTROPY);\n }\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result) {\n DEFAULT_WORDLIST = result;\n }\n else {\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n }\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST) {\n throw new Error('No Default Wordlist set');\n }\n return Object.keys(_wordlists_1.wordlists).filter((lang) => {\n if (lang === 'JA' || lang === 'EN') {\n return false;\n }\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=base.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//#endregion\n//# sourceMappingURL=exclusive.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//#endregion Definition helpers\n//# sourceMappingURL=definition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeterministicSeedPhrase = void 0;\n// Don't change! We need maintain original determinism since the beginning\nexports.DeterministicSeedPhrase = \"TestRPC is awesome!\";\n//# sourceMappingURL=constants.js.map","'use strict';\nexports.test = function () {\n return typeof global.queueMicrotask === 'function';\n};\n\nexports.install = function (func) {\n return function () {\n global.queueMicrotask(func);\n };\n};\n","'use strict';\n//based off rsvp https://github.com/tildeio/rsvp.js\n//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE\n//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js\n\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nexports.test = function () {\n return Mutation;\n};\n\nexports.install = function (handle) {\n var called = 0;\n var observer = new Mutation(handle);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n return function () {\n element.data = (called = ++called % 2);\n };\n};","'use strict';\n\nexports.test = function () {\n if (global.setImmediate) {\n // we can only get here in IE10\n // which doesn't handel postMessage well\n return false;\n }\n return typeof global.MessageChannel !== 'undefined';\n};\n\nexports.install = function (func) {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = func;\n return function () {\n channel.port2.postMessage(0);\n };\n};","'use strict';\n\nexports.test = function () {\n return 'document' in global && 'onreadystatechange' in global.document.createElement('script');\n};\n\nexports.install = function (handle) {\n return function () {\n\n // Create a + diff --git a/docs/typedoc/api.json b/docs/typedoc/api.json index 0479e0219b..305c2a9a45 100644 --- a/docs/typedoc/api.json +++ b/docs/typedoc/api.json @@ -12,7 +12,7 @@ "flags": { "isExported": true }, - "originalName": "/home/david/work/ganache-core/src/chains/ethereum/ethereum/src/api.ts", + "originalName": "/home/micaiah/work/ganache-core/src/chains/ethereum/ethereum/src/api.ts", "children": [ { "id": 2, @@ -498,6 +498,16 @@ "flags": { "isExported": true }, + "comment": { + "shortText": "Returns the kademlia table in a readable table format.", + "returns": "Returns the kademlia table in a readable table format.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"bzz_hive\"));\n```\n" + } + ] + }, "type": { "type": "reference", "typeArguments": [ @@ -550,6 +560,16 @@ "flags": { "isExported": true }, + "comment": { + "shortText": "Returns details about the swarm node.", + "returns": "Returns details about the swarm node.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"bzz_info\"));\n```\n" + } + ] + }, "type": { "type": "reference", "typeArguments": [ @@ -603,8 +623,14 @@ "isExported": true }, "comment": { - "shortText": "Returns binary data from the local database", - "returns": "The previously stored data.\n" + "shortText": "Returns binary data from the local database.", + "returns": "The previously stored data.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"db_getHex\", [\"testDb\", \"testKey\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -690,8 +716,14 @@ "isExported": true }, "comment": { - "shortText": "Returns string from the local database", - "returns": "The previously stored string.\n" + "shortText": "Returns string from the local database.", + "returns": "The previously stored string.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"db_getString\", [\"testDb\", \"testKey\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -778,7 +810,13 @@ }, "comment": { "shortText": "Stores binary data in the local database.", - "returns": "true if the value was stored, otherwise false.\n" + "returns": "`true` if the value was stored, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"db_putHex\", [\"testDb\", \"testKey\", \"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -825,8 +863,8 @@ "text": "Data to store." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -881,7 +919,13 @@ }, "comment": { "shortText": "Stores a string in the local database.", - "returns": "returns true if the value was stored, otherwise false.\n" + "returns": "Returns true if the value was stored, otherwise false.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"db_putString\", [\"testDb\", \"testKey\", \"testValue\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -954,7 +998,7 @@ ] }, { - "id": 326, + "id": 309, "name": "debug_storageRangeAt", "kind": 2048, "kindString": "Method", @@ -963,7 +1007,7 @@ }, "signatures": [ { - "id": 327, + "id": 310, "name": "debug_storageRangeAt", "kind": 4096, "kindString": "Call signature", @@ -976,7 +1020,7 @@ }, "parameters": [ { - "id": 328, + "id": 311, "name": "blockHash", "kind": 32768, "kindString": "Parameter", @@ -984,24 +1028,15 @@ "isExported": true }, "comment": { - "text": "DATA, 32 Bytes - hash of a block" + "text": "Hash of a block." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } }, { - "id": 329, + "id": 312, "name": "transactionIndex", "kind": 32768, "kindString": "Parameter", @@ -1009,7 +1044,7 @@ "isExported": true }, "comment": { - "text": "QUANTITY - the index of the transaction in the block" + "text": "Integer of the transaction index position." }, "type": { "type": "intrinsic", @@ -1017,7 +1052,7 @@ } }, { - "id": 330, + "id": 313, "name": "contractAddress", "kind": 32768, "kindString": "Parameter", @@ -1025,15 +1060,15 @@ "isExported": true }, "comment": { - "text": "DATA, 20 Bytes - address of the contract" + "text": "Address of the contract." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 331, + "id": 314, "name": "startKey", "kind": 32768, "kindString": "Parameter", @@ -1044,21 +1079,12 @@ "text": "hash of the start key for grabbing storage entries" }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } }, { - "id": 332, + "id": 315, "name": "maxResult", "kind": 32768, "kindString": "Parameter", @@ -1066,7 +1092,7 @@ "isExported": true }, "comment": { - "text": "integer of maximum number of storage entries to return" + "text": "Integer of maximum number of storage entries to return." }, "type": { "type": "intrinsic", @@ -1095,7 +1121,7 @@ ] }, { - "id": 308, + "id": 305, "name": "debug_traceTransaction", "kind": 2048, "kindString": "Method", @@ -1104,7 +1130,7 @@ }, "signatures": [ { - "id": 309, + "id": 306, "name": "debug_traceTransaction", "kind": 4096, "kindString": "Call signature", @@ -1124,7 +1150,7 @@ }, "parameters": [ { - "id": 310, + "id": 307, "name": "transactionHash", "kind": 32768, "kindString": "Parameter", @@ -1135,12 +1161,12 @@ "text": "transactionHash" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 311, + "id": 308, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -1481,7 +1507,7 @@ ] }, { - "id": 175, + "id": 169, "name": "eth_accounts", "kind": 2048, "kindString": "Method", @@ -1502,7 +1528,7 @@ ], "signatures": [ { - "id": 176, + "id": 170, "name": "eth_accounts", "kind": 4096, "kindString": "Call signature", @@ -1511,7 +1537,13 @@ }, "comment": { "shortText": "Returns a list of addresses owned by client.", - "returns": "Array of 20 Bytes - addresses owned by the client.\n" + "returns": "Array of 20 Bytes - addresses owned by the client.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst accounts = await provider.request({ method: \"eth_accounts\", params: [] });\nconsole.log(accounts);\n```\n" + } + ] }, "type": { "type": "reference", @@ -1537,7 +1569,7 @@ ] }, { - "id": 177, + "id": 171, "name": "eth_blockNumber", "kind": 2048, "kindString": "Method", @@ -1558,7 +1590,7 @@ ], "signatures": [ { - "id": 178, + "id": 172, "name": "eth_blockNumber", "kind": 4096, "kindString": "Call signature", @@ -1567,7 +1599,13 @@ }, "comment": { "shortText": "Returns the number of the most recent block.", - "returns": "integer of the current block number the client is on.\n" + "returns": "The current block number the client is on.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst blockNumber = await provider.request({ method: \"eth_blockNumber\" });\nconsole.log(blockNumber);\n```\n" + } + ] }, "type": { "type": "reference", @@ -1590,7 +1628,7 @@ ] }, { - "id": 304, + "id": 301, "name": "eth_call", "kind": 2048, "kindString": "Method", @@ -1612,7 +1650,7 @@ ], "signatures": [ { - "id": 305, + "id": 302, "name": "eth_call", "kind": 4096, "kindString": "Call signature", @@ -1621,11 +1659,18 @@ }, "comment": { "shortText": "Executes a new message call immediately without creating a transaction on the block chain.", - "returns": "the return value of executed contract.\n" + "text": "Transaction call object:\n* `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from.\n* `to`: `DATA`, 20 bytes - The address the transaction is sent to.\n* `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction.\n* `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei.\n* `value`: `QUANTITY` (optional) - Integer of the value in wei.\n* `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters.\n", + "returns": "The return value of executed contract.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Simple.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n//\n// contract Simple {\n// uint256 public value;\n// constructor() payable {\n// value = 5;\n// }\n// }\nconst simpleSol = \"0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033\";\nconst [from] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst txObj = { from, gas: \"0x5b8d80\", gasPrice: \"0x1dfd14000\", value:\"0x0\", data: simpleSol };\nconst result = await provider.request({ method: \"eth_call\", params: [txObj, \"latest\"] });\nconsole.log(result);\n```\n" + } + ] }, "parameters": [ { - "id": 306, + "id": 303, "name": "transaction", "kind": 32768, "kindString": "Parameter", @@ -1641,7 +1686,7 @@ } }, { - "id": 307, + "id": 304, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -1654,13 +1699,9 @@ "type": { "type": "union", "types": [ - { - "type": "intrinsic", - "name": "string" - }, { "type": "reference", - "name": "Buffer" + "name": "QUANTITY" }, { "type": "reference", @@ -1692,7 +1733,7 @@ ] }, { - "id": 179, + "id": 173, "name": "eth_chainId", "kind": 2048, "kindString": "Method", @@ -1713,7 +1754,7 @@ ], "signatures": [ { - "id": 180, + "id": 174, "name": "eth_chainId", "kind": 4096, "kindString": "Call signature", @@ -1755,7 +1796,7 @@ ] }, { - "id": 117, + "id": 111, "name": "eth_coinbase", "kind": 2048, "kindString": "Method", @@ -1776,7 +1817,7 @@ ], "signatures": [ { - "id": 118, + "id": 112, "name": "eth_coinbase", "kind": 4096, "kindString": "Call signature", @@ -1785,7 +1826,13 @@ }, "comment": { "shortText": "Returns the client coinbase address.", - "returns": "20 bytes - the current coinbase address.\n" + "returns": "The current coinbase address.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst coinbaseAddress = await provider.request({ method: \"eth_coinbase\" });\nconsole.log(coinbaseAddress);\n```\n" + } + ] }, "type": { "type": "reference", @@ -1808,7 +1855,7 @@ ] }, { - "id": 109, + "id": 103, "name": "eth_estimateGas", "kind": 2048, "kindString": "Method", @@ -1830,7 +1877,7 @@ ], "signatures": [ { - "id": 110, + "id": 104, "name": "eth_estimateGas", "kind": 4096, "kindString": "Call signature", @@ -1839,42 +1886,49 @@ }, "comment": { "shortText": "Generates and returns an estimate of how much gas is necessary to allow the\ntransaction to complete. The transaction will not be added to the\nblockchain. Note that the estimate may be significantly more than the\namount of gas actually used by the transaction, for a variety of reasons\nincluding EVM mechanics and node performance.", - "returns": "the amount of gas used.\n", + "text": "Transaction call object:\n* `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from.\n* `to`: `DATA`, 20 bytes - The address the transaction is sent to.\n* `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction.\n* `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei.\n* `value`: `QUANTITY` (optional) - Integer of the value in wei.\n* `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters.\n", + "returns": "The amount of gas used.\n", "tags": [ { "tag": "example", - "text": "\n```javascript\nconst accounts = await provider.request({ method: \"eth_accounts\", params: [] });\nconst gasEstimate = await provider.request({ method: \"eth_estimateGas\", params: [{ from: accounts[0], to: accounts[1] }, \"latest\" ] });\nconsole.log(gasEstimate);\n```\n" + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst gasEstimate = await provider.request({ method: \"eth_estimateGas\", params: [{ from, to }, \"latest\" ] });\nconsole.log(gasEstimate);\n```\n" } ] }, "parameters": [ { - "id": 111, + "id": 105, "name": "transaction", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "The transaction call object as seen in source." + }, "type": { - "type": "reference", - "name": "RpcTransaction" + "type": "intrinsic", + "name": "any" } }, { - "id": 112, + "id": 106, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "Integer block number, or the string \"latest\", \"earliest\"\n or \"pending\".\n" + }, "type": { "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", @@ -1906,7 +1960,7 @@ ] }, { - "id": 173, + "id": 167, "name": "eth_gasPrice", "kind": 2048, "kindString": "Method", @@ -1927,7 +1981,7 @@ ], "signatures": [ { - "id": 174, + "id": 168, "name": "eth_gasPrice", "kind": 4096, "kindString": "Call signature", @@ -1936,7 +1990,13 @@ }, "comment": { "shortText": "Returns the current price per gas in wei.", - "returns": "integer of the current gas price in wei.\n" + "returns": "Integer of the current gas price in wei.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst gasPrice = await provider.request({ method: \"eth_gasPrice\", params: [] });\nconsole.log(gasPrice);\n```\n" + } + ] }, "type": { "type": "reference", @@ -1959,7 +2019,7 @@ ] }, { - "id": 181, + "id": 175, "name": "eth_getBalance", "kind": 2048, "kindString": "Method", @@ -1981,7 +2041,7 @@ ], "signatures": [ { - "id": 182, + "id": 176, "name": "eth_getBalance", "kind": 4096, "kindString": "Call signature", @@ -1989,11 +2049,18 @@ "isExported": true }, "comment": { - "shortText": "Returns the balance of the account of given address." + "shortText": "Returns the balance of the account of given address.", + "returns": "Integer of the account balance in wei.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst accounts = await provider.request({ method: \"eth_accounts\", params: [] });\nconst balance = await provider.request({ method: \"eth_getBalance\", params: [accounts[0], \"latest\"] });\nconsole.log(balance);\n```\n" + } + ] }, "parameters": [ { - "id": 183, + "id": 177, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -2001,15 +2068,15 @@ "isExported": true }, "comment": { - "text": "20 Bytes - address to check for balance." + "text": "Address to check for balance." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 184, + "id": 178, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -2017,7 +2084,7 @@ "isExported": true }, "comment": { - "text": "integer block number, or the string \"latest\", \"earliest\"\n or \"pending\", see the default block parameter\n" + "text": "Integer block number, or the string \"latest\", \"earliest\"\n or \"pending\".\n" }, "type": { "type": "union", @@ -2028,7 +2095,7 @@ }, { "type": "reference", - "name": "Buffer" + "name": "QUANTITY" }, { "type": "reference", @@ -2060,7 +2127,7 @@ ] }, { - "id": 123, + "id": 117, "name": "eth_getBlockByHash", "kind": 2048, "kindString": "Method", @@ -2082,7 +2149,7 @@ ], "signatures": [ { - "id": 124, + "id": 118, "name": "eth_getBlockByHash", "kind": 4096, "kindString": "Call signature", @@ -2091,33 +2158,33 @@ }, "comment": { "shortText": "Returns information about a block by block hash.", - "returns": "Block\n" + "returns": "The block, `null` if the block doesn't exist.\n\n* `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending.\n* `parentHash`: `DATA`, 32 Bytes - Hash of the parent block.\n* `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block.\n* `miner`: `DATA`, 20 Bytes - Address of the miner.\n* `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block.\n* `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block.\n* `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block.\n* `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending.\n* `difficulty`: `QUANTITY` - Integer of the difficulty of this block.\n* `number`: `QUANTITY` - The block number. `null` when pending.\n* `gasLimit`: `QUANTITY` - The maximum gas allowed in the block.\n* `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block.\n* `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated.\n* `extraData`: `DATA` - Extra data for the block.\n* `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block.\n* `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending.\n* `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block.\n* `size`: `QUANTITY` - Integer the size of the block in bytes.\n* `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.\n* `uncles`: `Array` - Array of uncle hashes.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Simple.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n//\n// contract Simple {\n// uint256 public value;\n// constructor() payable {\n// value = 5;\n// }\n// }\nconst simpleSol = \"0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033\";\nconst [from] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, gas: \"0x5b8d80\", data: simpleSol }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconst txReceipt = await provider.request({ method: \"eth_getTransactionReceipt\", params: [txHash] });\nconst block = await provider.request({ method: \"eth_getBlockByHash\", params: [txReceipt.blockHash, true] });\nconsole.log(block);\n```\n" + } + ] }, "parameters": [ { - "id": 125, + "id": 119, "name": "hash", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "Hash of a block." + }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } }, { - "id": 126, + "id": 120, "name": "transactions", "kind": 32768, "kindString": "Parameter", @@ -2125,7 +2192,7 @@ "isExported": true }, "comment": { - "text": "Boolean - If true it returns the full transaction objects, if false only the hashes of the\ntransactions." + "text": "If `true` it returns the full transaction objects, if `false` only the hashes of the\ntransactions." }, "type": { "type": "intrinsic", @@ -2155,7 +2222,7 @@ ] }, { - "id": 119, + "id": 113, "name": "eth_getBlockByNumber", "kind": 2048, "kindString": "Method", @@ -2177,7 +2244,7 @@ ], "signatures": [ { - "id": 120, + "id": 114, "name": "eth_getBlockByNumber", "kind": 4096, "kindString": "Call signature", @@ -2186,11 +2253,17 @@ }, "comment": { "shortText": "Returns information about a block by block number.", - "returns": "the block, `null` if the block doesn't exist.\n" + "returns": "The block, `null` if the block doesn't exist.\n\n* `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending.\n* `parentHash`: `DATA`, 32 Bytes - Hash of the parent block.\n* `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block.\n* `miner`: `DATA`, 20 Bytes - Address of the miner.\n* `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block.\n* `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block.\n* `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block.\n* `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending.\n* `difficulty`: `QUANTITY` - Integer of the difficulty of this block.\n* `number`: `QUANTITY` - The block number. `null` when pending.\n* `gasLimit`: `QUANTITY` - The maximum gas allowed in the block.\n* `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block.\n* `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated.\n* `extraData`: `DATA` - Extra data for the block.\n* `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block.\n* `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending.\n* `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block.\n* `size`: `QUANTITY` - Integer the size of the block in bytes.\n* `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.\n* `uncles`: `Array` - Array of uncle hashes.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst block = await provider.request({ method: \"eth_getBlockByNumber\", params: [\"0x0\", false] });\nconsole.log(block);\n```\n" + } + ] }, "parameters": [ { - "id": 121, + "id": 115, "name": "number", "kind": 32768, "kindString": "Parameter", @@ -2198,14 +2271,14 @@ "isExported": true }, "comment": { - "text": "QUANTITY|TAG - integer of a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the\ndefault block parameter." + "text": "Integer of a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the\ndefault block parameter." }, "type": { "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", @@ -2215,7 +2288,7 @@ } }, { - "id": 122, + "id": 116, "name": "transactions", "kind": 32768, "kindString": "Parameter", @@ -2223,7 +2296,7 @@ "isExported": true }, "comment": { - "text": "Boolean - If true it returns the full transaction objects, if false only the hashes of the\ntransactions." + "text": "If `true` it returns the full transaction objects, if `false` only the hashes of the\ntransactions." }, "type": { "type": "intrinsic", @@ -2253,7 +2326,7 @@ ] }, { - "id": 130, + "id": 124, "name": "eth_getBlockTransactionCountByHash", "kind": 2048, "kindString": "Method", @@ -2274,7 +2347,7 @@ ], "signatures": [ { - "id": 131, + "id": 125, "name": "eth_getBlockTransactionCountByHash", "kind": 4096, "kindString": "Call signature", @@ -2282,11 +2355,18 @@ "isExported": true }, "comment": { - "shortText": "Returns the number of transactions in a block from a block matching the given block hash." + "shortText": "Returns the number of transactions in a block from a block matching the given block hash.", + "returns": "Number of transactions in the block.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Simple.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n//\n// contract Simple {\n// uint256 public value;\n// constructor() payable {\n// value = 5;\n// }\n// }\nconst simpleSol = \"0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033\";\nconst [from] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, gas: \"0x5b8d80\", data: simpleSol }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconst txReceipt = await provider.request({ method: \"eth_getTransactionReceipt\", params: [txHash] });\nconst txCount = await provider.request({ method: \"eth_getBlockTransactionCountByHash\", params: [txReceipt.blockHash] });\nconsole.log(txCount);\n```\n" + } + ] }, "parameters": [ { - "id": 132, + "id": 126, "name": "hash", "kind": 32768, "kindString": "Parameter", @@ -2294,20 +2374,11 @@ "isExported": true }, "comment": { - "text": "DATA, 32 Bytes - hash of a block.\n" + "text": "Hash of a block." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } } ], @@ -2332,7 +2403,7 @@ ] }, { - "id": 127, + "id": 121, "name": "eth_getBlockTransactionCountByNumber", "kind": 2048, "kindString": "Method", @@ -2353,7 +2424,7 @@ ], "signatures": [ { - "id": 128, + "id": 122, "name": "eth_getBlockTransactionCountByNumber", "kind": 4096, "kindString": "Call signature", @@ -2361,11 +2432,18 @@ "isExported": true }, "comment": { - "shortText": "Returns the number of transactions in a block from a block matching the given block number." + "shortText": "Returns the number of transactions in a block from a block matching the given block number.", + "returns": "Integer of the number of transactions in the block.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst txCount = await provider.request({ method: \"eth_getBlockTransactionCountByNumber\", params: [\"0x0\"] });\nconsole.log(txCount);\n```\n" + } + ] }, "parameters": [ { - "id": 129, + "id": 123, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -2376,8 +2454,8 @@ "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", @@ -2408,7 +2486,7 @@ ] }, { - "id": 185, + "id": 179, "name": "eth_getCode", "kind": 2048, "kindString": "Method", @@ -2430,7 +2508,7 @@ ], "signatures": [ { - "id": 186, + "id": 180, "name": "eth_getCode", "kind": 4096, "kindString": "Call signature", @@ -2439,11 +2517,17 @@ }, "comment": { "shortText": "Returns code at a given address.", - "returns": "the code from the given address.\n" + "returns": "The code from the given address.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Simple.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n//\n// contract Simple {\n// uint256 public value;\n// constructor() payable {\n// value = 5;\n// }\n// }\nconst simpleSol = \"0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033\";\nconst [from] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, gas: \"0x5b8d80\", data: simpleSol }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconst txReceipt = await provider.request({ method: \"eth_getTransactionReceipt\", params: [txHash] });\nconst code = await provider.request({ method: \"eth_getCode\", params: [txReceipt.contractAddress, \"latest\"] });\nconsole.log(code);\n```\n" + } + ] }, "parameters": [ { - "id": 187, + "id": 181, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -2451,7 +2535,7 @@ "isExported": true }, "comment": { - "text": "20 Bytes - address" + "text": "Address." }, "type": { "type": "intrinsic", @@ -2459,7 +2543,7 @@ } }, { - "id": 188, + "id": 182, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -2467,14 +2551,14 @@ "isExported": true }, "comment": { - "text": "integer block number, or the string \"latest\", \"earliest\" or \"pending\", see the default block\nparameter" + "text": "Integer block number, or the string \"latest\", \"earliest\" or \"pending\"." }, "type": { "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", @@ -2506,7 +2590,7 @@ ] }, { - "id": 133, + "id": 127, "name": "eth_getCompilers", "kind": 2048, "kindString": "Method", @@ -2527,13 +2611,23 @@ ], "signatures": [ { - "id": 134, + "id": 128, "name": "eth_getCompilers", "kind": 4096, "kindString": "Call signature", "flags": { "isExported": true }, + "comment": { + "shortText": "Returns a list of available compilers.", + "returns": "List of available compilers.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst compilers = await provider.send(\"eth_getCompilers\");\nconsole.log(compilers);\n```\n" + } + ] + }, "type": { "type": "reference", "typeArguments": [ @@ -2558,7 +2652,7 @@ ] }, { - "id": 268, + "id": 265, "name": "eth_getFilterChanges", "kind": 2048, "kindString": "Method", @@ -2579,7 +2673,7 @@ ], "signatures": [ { - "id": 269, + "id": 266, "name": "eth_getFilterChanges", "kind": 4096, "kindString": "Call signature", @@ -2588,11 +2682,17 @@ }, "comment": { "shortText": "Polling method for a filter, which returns an array of logs, block hashes,\nor transaction hashes, depending on the filter type, which occurred since\nlast poll.", - "returns": "an array of logs, block hashes, or transaction hashes, depending\non the filter type, which occurred since last poll.\n" + "returns": "An array of logs, block hashes, or transaction hashes, depending\non the filter type, which occurred since last poll.\n\nFor filters created with `eth_newBlockFilter` the return are block hashes (`DATA`, 32 Bytes).\n\nFor filters created with `eth_newPendingTransactionFilter` the return are transaction hashes (`DATA`, 32 Bytes).\n\nFor filters created with `eth_newFilter` the return are log objects with the following parameters:\n* `removed`: `TAG` - `true` when the log was removed, `false` if its a valid log.\n* `logIndex`: `QUANTITY` - Integer of the log index position in the block. `null` when pending.\n* `transactionIndex`: `QUANTITY` - Integer of the transactions index position. `null` when pending.\n* `transactionHash`: `DATA`, 32 Bytes - Hash of the transaction where the log was. `null` when pending.\n* `blockHash`: `DATA`, 32 Bytes - Hash of the block where the log was. `null` when pending.\n* `blockNumber`: `QUANTITY` - The block number where the log was in. `null` when pending.\n* `address`: `DATA`, 20 Bytes - The address from which the log originated.\n* `data`: `DATA` - Contains one or more 32 Bytes non-indexed arguments of the log.\n* `topics`: `Array of DATA` - Array of 0 to 4 32 Bytes `DATA` of indexed log arguments.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Logs.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n// contract Logs {\n// event Event(uint256 indexed first, uint256 indexed second);\n// constructor() {\n// emit Event(1, 2);\n// }\n//\n// function logNTimes(uint8 n) public {\n// for (uint8 i = 0; i < n; i++) {\n// emit Event(i, i);\n// }\n// }\n// }\n\nconst logsContract = \"0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033\";\nconst [from] = await provider.send(\"eth_accounts\");\nconst filterId = await provider.send(\"eth_newFilter\");\n\nconst subscriptionId = await provider.send(\"eth_subscribe\", [\"newHeads\"]);\nawait provider.send(\"eth_sendTransaction\", [{ from, data: logsContract, gas: \"0x5b8d80\" }] );\nawait provider.once(\"message\");\n\nconst changes = await provider.request({ method: \"eth_getFilterChanges\", params: [filterId] });\nconsole.log(changes);\n\nawait provider.send(\"eth_unsubscribe\", [subscriptionId]);\n```\n" + } + ] }, "parameters": [ { - "id": 270, + "id": 267, "name": "filterId", "kind": 32768, "kindString": "Parameter", @@ -2600,11 +2700,11 @@ "isExported": true }, "comment": { - "text": "the filter id." + "text": "The filter id." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -2632,7 +2732,7 @@ ] }, { - "id": 274, + "id": 271, "name": "eth_getFilterLogs", "kind": 2048, "kindString": "Method", @@ -2653,7 +2753,7 @@ ], "signatures": [ { - "id": 275, + "id": 272, "name": "eth_getFilterLogs", "kind": 4096, "kindString": "Call signature", @@ -2662,20 +2762,29 @@ }, "comment": { "shortText": "Returns an array of all logs matching filter with given id.", - "returns": "Array of log objects, or an empty array.\n" + "returns": "Array of log objects, or an empty array.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Logs.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n// contract Logs {\n// event Event(uint256 indexed first, uint256 indexed second);\n// constructor() {\n// emit Event(1, 2);\n// }\n//\n// function logNTimes(uint8 n) public {\n// for (uint8 i = 0; i < n; i++) {\n// emit Event(i, i);\n// }\n// }\n// }\n\nconst logsContract = \"0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033\";\nconst [from] = await provider.send(\"eth_accounts\");\nconst filterId = await provider.send(\"eth_newFilter\");\n\nawait provider.send(\"eth_subscribe\", [\"newHeads\"]);\nawait provider.send(\"eth_sendTransaction\", [{ from, data: logsContract, gas: \"0x5b8d80\" }] );\nawait provider.once(\"message\");\n\nconst logs = await provider.request({ method: \"eth_getFilterLogs\", params: [filterId] });\nconsole.log(logs);\n```\n" + } + ] }, "parameters": [ { - "id": 276, + "id": 273, "name": "filterId", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "The filter id." + }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -2687,7 +2796,7 @@ "elementType": { "type": "reflection", "declaration": { - "id": 277, + "id": 274, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -2696,7 +2805,7 @@ }, "children": [ { - "id": 278, + "id": 275, "name": "address", "kind": 32, "kindString": "Variable", @@ -2716,7 +2825,7 @@ } }, { - "id": 279, + "id": 276, "name": "blockHash", "kind": 32, "kindString": "Variable", @@ -2736,7 +2845,7 @@ } }, { - "id": 280, + "id": 277, "name": "blockNumber", "kind": 32, "kindString": "Variable", @@ -2756,7 +2865,7 @@ } }, { - "id": 281, + "id": 278, "name": "data", "kind": 32, "kindString": "Variable", @@ -2788,7 +2897,7 @@ } }, { - "id": 282, + "id": 279, "name": "logIndex", "kind": 32, "kindString": "Variable", @@ -2808,7 +2917,7 @@ } }, { - "id": 283, + "id": 280, "name": "removed", "kind": 32, "kindString": "Variable", @@ -2828,7 +2937,7 @@ } }, { - "id": 284, + "id": 281, "name": "topics", "kind": 32, "kindString": "Variable", @@ -2860,7 +2969,7 @@ } }, { - "id": 285, + "id": 282, "name": "transactionHash", "kind": 32, "kindString": "Variable", @@ -2880,7 +2989,7 @@ } }, { - "id": 286, + "id": 283, "name": "transactionIndex", "kind": 32, "kindString": "Variable", @@ -2905,15 +3014,15 @@ "title": "Variables", "kind": 32, "children": [ + 275, + 276, + 277, 278, 279, 280, 281, 282, - 283, - 284, - 285, - 286 + 283 ] } ] @@ -2934,7 +3043,7 @@ ] }, { - "id": 287, + "id": 284, "name": "eth_getLogs", "kind": 2048, "kindString": "Method", @@ -2955,7 +3064,7 @@ ], "signatures": [ { - "id": 288, + "id": 285, "name": "eth_getLogs", "kind": 4096, "kindString": "Call signature", @@ -2964,11 +3073,18 @@ }, "comment": { "shortText": "Returns an array of all logs matching a given filter object.", - "returns": "Array of log objects, or an empty array.\n" + "text": "Filter options:\n* `fromBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string \"latest\", \"earliest\"\nor \"pending\".\n* `toBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string \"latest\", \"earliest\"\nor \"pending\".\n* `address`: `DATA | Array` (optional) - Contract address or a list of addresses from which the logs should originate.\n* `topics`: `Array of DATA` (optional) - Array of 32 Bytes `DATA` topcis. Topics are order-dependent. Each topic can also\nbe an array of `DATA` with \"or\" options.\n* `blockHash`: `DATA`, 32 Bytes (optional) - Hash of the block to restrict logs from. If `blockHash` is present,\nthen neither `fromBlock` or `toBlock` are allowed.\n", + "returns": "Array of log objects, or an empty array.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Logs.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n// contract Logs {\n// event Event(uint256 indexed first, uint256 indexed second);\n// constructor() {\n// emit Event(1, 2);\n// }\n//\n// function logNTimes(uint8 n) public {\n// for (uint8 i = 0; i < n; i++) {\n// emit Event(i, i);\n// }\n// }\n// }\n\nconst logsContract = \"0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033\";\nconst [from] = await provider.send(\"eth_accounts\");\n\nawait provider.send(\"eth_subscribe\", [\"newHeads\"]);\nconst txHash = await provider.send(\"eth_sendTransaction\", [{ from, data: logsContract, gas: \"0x5b8d80\" }] );\nawait provider.once(\"message\");\n\nconst { contractAddress } = await provider.send(\"eth_getTransactionReceipt\", [txHash] );\n\nconst logs = await provider.request({ method: \"eth_getLogs\", params: [{ address: contractAddress }] });\nconsole.log(logs);\n```\n" + } + ] }, "parameters": [ { - "id": 289, + "id": 286, "name": "filter", "kind": 32768, "kindString": "Parameter", @@ -2976,7 +3092,7 @@ "isExported": true }, "comment": { - "text": "The filter options" + "text": "The filter options as seen in source." }, "type": { "type": "reference", @@ -2992,7 +3108,7 @@ "elementType": { "type": "reflection", "declaration": { - "id": 290, + "id": 287, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -3001,7 +3117,7 @@ }, "children": [ { - "id": 291, + "id": 288, "name": "address", "kind": 32, "kindString": "Variable", @@ -3021,7 +3137,7 @@ } }, { - "id": 292, + "id": 289, "name": "blockHash", "kind": 32, "kindString": "Variable", @@ -3041,7 +3157,7 @@ } }, { - "id": 293, + "id": 290, "name": "blockNumber", "kind": 32, "kindString": "Variable", @@ -3061,7 +3177,7 @@ } }, { - "id": 294, + "id": 291, "name": "data", "kind": 32, "kindString": "Variable", @@ -3093,7 +3209,7 @@ } }, { - "id": 295, + "id": 292, "name": "logIndex", "kind": 32, "kindString": "Variable", @@ -3113,7 +3229,7 @@ } }, { - "id": 296, + "id": 293, "name": "removed", "kind": 32, "kindString": "Variable", @@ -3133,7 +3249,7 @@ } }, { - "id": 297, + "id": 294, "name": "topics", "kind": 32, "kindString": "Variable", @@ -3165,7 +3281,7 @@ } }, { - "id": 298, + "id": 295, "name": "transactionHash", "kind": 32, "kindString": "Variable", @@ -3185,7 +3301,7 @@ } }, { - "id": 299, + "id": 296, "name": "transactionIndex", "kind": 32, "kindString": "Variable", @@ -3210,15 +3326,15 @@ "title": "Variables", "kind": 32, "children": [ + 288, + 289, + 290, 291, 292, 293, 294, 295, - 296, - 297, - 298, - 299 + 296 ] } ] @@ -3239,7 +3355,7 @@ ] }, { - "id": 189, + "id": 183, "name": "eth_getStorageAt", "kind": 2048, "kindString": "Method", @@ -3261,7 +3377,7 @@ ], "signatures": [ { - "id": 190, + "id": 184, "name": "eth_getStorageAt", "kind": 4096, "kindString": "Call signature", @@ -3269,37 +3385,50 @@ "isExported": true }, "comment": { - "shortText": "Returns the value from a storage position at a given address." + "shortText": "Returns the value from a storage position at a given address.", + "returns": "The value in storage at the requested position.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// Simple.sol\n// // SPDX-License-Identifier: MIT\n// pragma solidity ^0.7.4;\n//\n// contract Simple {\n// uint256 public value;\n// constructor() payable {\n// value = 5;\n// }\n// }\nconst simpleSol = \"0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033\";\nconst [from] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, gas: \"0x5b8d80\", data: simpleSol }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconst txReceipt = await provider.request({ method: \"eth_getTransactionReceipt\", params: [txHash] });\nconst storageValue = await provider.request({ method: \"eth_getStorageAt\", params: [txReceipt.contractAddress, \"0x0\", \"latest\"] });\nconsole.log(storageValue);\n```\n" + } + ] }, "parameters": [ { - "id": 191, + "id": 185, "name": "address", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "Address of the storage." + }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 192, + "id": 186, "name": "position", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "Integer of the position in the storage." + }, "type": { "type": "intrinsic", "name": "string" } }, { - "id": 193, + "id": 187, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -3307,14 +3436,14 @@ "isExported": true }, "comment": { - "text": "integer block number, or the string \"latest\", \"earliest\"\n or \"pending\", see the default block parameter\n" + "text": "Integer block number, or the string \"latest\", \"earliest\"\n or \"pending\"." }, "type": { "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", @@ -3346,7 +3475,7 @@ ] }, { - "id": 135, + "id": 129, "name": "eth_getTransactionByBlockHashAndIndex", "kind": 2048, "kindString": "Method", @@ -3367,7 +3496,7 @@ ], "signatures": [ { - "id": 136, + "id": 130, "name": "eth_getTransactionByBlockHashAndIndex", "kind": 4096, "kindString": "Call signature", @@ -3375,11 +3504,18 @@ "isExported": true }, "comment": { - "shortText": "Returns information about a transaction by block hash and transaction index position." + "shortText": "Returns information about a transaction by block hash and transaction index position.", + "returns": "The transaction object or `null` if no transaction was found.\n\n* `hash`: `DATA`, 32 Bytes - The transaction hash.\n* `nonce`: `QUANTITY` - The number of transactions made by the sender prior to this one.\n* `blockHash`: `DATA`, 32 Bytes - The hash of the block the transaction is in. `null` when pending.\n* `blockNumber`: `QUANTITY` - The number of the block the transaction is in. `null` when pending.\n* `transactionIndex`: `QUANTITY` - The index position of the transaction in the block.\n* `from`: `DATA`, 20 Bytes - The address the transaction is sent from.\n* `to`: `DATA`, 20 Bytes - The address the transaction is sent to.\n* `value`: `QUANTITY` - The value transferred in wei.\n* `gas`: `QUANTITY` - The gas provided by the sender.\n* `gasPrice`: `QUANTITY` - The price of gas in wei.\n* `input`: `DATA` - The data sent along with the transaction.\n* `v`: `QUANTITY` - ECDSA recovery id.\n* `r`: `DATA`, 32 Bytes - ECDSA signature r.\n* `s`: `DATA`, 32 Bytes - ECDSA signature s.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconst { blockHash, transactionIndex } = await provider.request({ method: \"eth_getTransactionReceipt\", params: [txHash] });\n\nconst tx = await provider.request({ method: \"eth_getTransactionByBlockHashAndIndex\", params: [ blockHash, transactionIndex ] });\nconsole.log(tx);\n```\n" + } + ] }, "parameters": [ { - "id": 137, + "id": 131, "name": "hash", "kind": 32768, "kindString": "Parameter", @@ -3387,24 +3523,15 @@ "isExported": true }, "comment": { - "text": "DATA, 32 Bytes - hash of a block." + "text": "Hash of a block." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } }, { - "id": 138, + "id": 132, "name": "index", "kind": 32768, "kindString": "Parameter", @@ -3412,11 +3539,11 @@ "isExported": true }, "comment": { - "text": "QUANTITY - integer of the transaction index position.\n" + "text": "Integer of the transaction index position." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -3441,7 +3568,7 @@ ] }, { - "id": 139, + "id": 133, "name": "eth_getTransactionByBlockNumberAndIndex", "kind": 2048, "kindString": "Method", @@ -3462,7 +3589,7 @@ ], "signatures": [ { - "id": 140, + "id": 134, "name": "eth_getTransactionByBlockNumberAndIndex", "kind": 4096, "kindString": "Call signature", @@ -3470,11 +3597,18 @@ "isExported": true }, "comment": { - "shortText": "Returns information about a transaction by block number and transaction index position." + "shortText": "Returns information about a transaction by block number and transaction index position.", + "returns": "The transaction object or `null` if no transaction was found.\n\n* `hash`: `DATA`, 32 Bytes - The transaction hash.\n* `nonce`: `QUANTITY` - The number of transactions made by the sender prior to this one.\n* `blockHash`: `DATA`, 32 Bytes - The hash of the block the transaction is in. `null` when pending.\n* `blockNumber`: `QUANTITY` - The number of the block the transaction is in. `null` when pending.\n* `transactionIndex`: `QUANTITY` - The index position of the transaction in the block.\n* `from`: `DATA`, 20 Bytes - The address the transaction is sent from.\n* `to`: `DATA`, 20 Bytes - The address the transaction is sent to.\n* `value`: `QUANTITY` - The value transferred in wei.\n* `gas`: `QUANTITY` - The gas provided by the sender.\n* `gasPrice`: `QUANTITY` - The price of gas in wei.\n* `input`: `DATA` - The data sent along with the transaction.\n* `v`: `QUANTITY` - ECDSA recovery id.\n* `r`: `DATA`, 32 Bytes - ECDSA signature r.\n* `s`: `DATA`, 32 Bytes - ECDSA signature s.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconst { transactionIndex } = await provider.request({ method: \"eth_getTransactionReceipt\", params: [txHash] });\n\nconst tx = await provider.request({ method: \"eth_getTransactionByBlockNumberAndIndex\", params: [ \"latest\", transactionIndex ] });\nconsole.log(tx);\n```\n" + } + ] }, "parameters": [ { - "id": 141, + "id": 135, "name": "number", "kind": 32768, "kindString": "Parameter", @@ -3482,14 +3616,14 @@ "isExported": true }, "comment": { - "text": "QUANTITY|TAG - a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the default\nblock parameter." + "text": "A block number, or the string \"earliest\", \"latest\" or \"pending\"." }, "type": { "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", @@ -3499,7 +3633,7 @@ } }, { - "id": 142, + "id": 136, "name": "index", "kind": 32768, "kindString": "Parameter", @@ -3507,11 +3641,11 @@ "isExported": true }, "comment": { - "text": "QUANTITY - integer of the transaction index position.\n" + "text": "Integer of the transaction index position." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -3536,7 +3670,7 @@ ] }, { - "id": 194, + "id": 188, "name": "eth_getTransactionByHash", "kind": 2048, "kindString": "Method", @@ -3557,7 +3691,7 @@ ], "signatures": [ { - "id": 195, + "id": 189, "name": "eth_getTransactionByHash", "kind": 4096, "kindString": "Call signature", @@ -3565,11 +3699,18 @@ "isExported": true }, "comment": { - "shortText": "Returns the information about a transaction requested by transaction hash." + "shortText": "Returns the information about a transaction requested by transaction hash.", + "returns": "The transaction object or `null` if no transaction was found.\n\n* `hash`: `DATA`, 32 Bytes - The transaction hash.\n* `nonce`: `QUANTITY` - The number of transactions made by the sender prior to this one.\n* `blockHash`: `DATA`, 32 Bytes - The hash of the block the transaction is in. `null` when pending.\n* `blockNumber`: `QUANTITY` - The number of the block the transaction is in. `null` when pending.\n* `transactionIndex`: `QUANTITY` - The index position of the transaction in the block.\n* `from`: `DATA`, 20 Bytes - The address the transaction is sent from.\n* `to`: `DATA`, 20 Bytes - The address the transaction is sent to.\n* `value`: `QUANTITY` - The value transferred in wei.\n* `gas`: `QUANTITY` - The gas provided by the sender.\n* `gasPrice`: `QUANTITY` - The price of gas in wei.\n* `input`: `DATA` - The data sent along with the transaction.\n* `v`: `QUANTITY` - ECDSA recovery id.\n* `r`: `DATA`, 32 Bytes - ECDSA signature r.\n* `s`: `DATA`, 32 Bytes - ECDSA signature s.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\nconst tx = await provider.request({ method: \"eth_getTransactionByHash\", params: [ txHash ] });\nconsole.log(tx);\n```\n" + } + ] }, "parameters": [ { - "id": 196, + "id": 190, "name": "transactionHash", "kind": 32768, "kindString": "Parameter", @@ -3577,11 +3718,11 @@ "isExported": true }, "comment": { - "text": "32 Bytes - hash of a transaction\n" + "text": "Hash of a transaction." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -3591,7 +3732,7 @@ { "type": "reflection", "declaration": { - "id": 197, + "id": 191, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -3600,7 +3741,7 @@ }, "children": [ { - "id": 200, + "id": 194, "name": "blockHash", "kind": 32, "kindString": "Variable", @@ -3620,7 +3761,7 @@ } }, { - "id": 201, + "id": 195, "name": "blockNumber", "kind": 32, "kindString": "Variable", @@ -3640,7 +3781,7 @@ } }, { - "id": 203, + "id": 197, "name": "from", "kind": 32, "kindString": "Variable", @@ -3660,7 +3801,7 @@ } }, { - "id": 206, + "id": 200, "name": "gas", "kind": 32, "kindString": "Variable", @@ -3680,7 +3821,7 @@ } }, { - "id": 207, + "id": 201, "name": "gasPrice", "kind": 32, "kindString": "Variable", @@ -3700,7 +3841,7 @@ } }, { - "id": 198, + "id": 192, "name": "hash", "kind": 32, "kindString": "Variable", @@ -3720,7 +3861,7 @@ } }, { - "id": 208, + "id": 202, "name": "input", "kind": 32, "kindString": "Variable", @@ -3740,7 +3881,7 @@ } }, { - "id": 199, + "id": 193, "name": "nonce", "kind": 32, "kindString": "Variable", @@ -3760,7 +3901,7 @@ } }, { - "id": 210, + "id": 204, "name": "r", "kind": 32, "kindString": "Variable", @@ -3780,7 +3921,7 @@ } }, { - "id": 211, + "id": 205, "name": "s", "kind": 32, "kindString": "Variable", @@ -3800,7 +3941,7 @@ } }, { - "id": 204, + "id": 198, "name": "to", "kind": 32, "kindString": "Variable", @@ -3820,7 +3961,7 @@ } }, { - "id": 202, + "id": 196, "name": "transactionIndex", "kind": 32, "kindString": "Variable", @@ -3840,7 +3981,7 @@ } }, { - "id": 209, + "id": 203, "name": "v", "kind": 32, "kindString": "Variable", @@ -3860,7 +4001,7 @@ } }, { - "id": 205, + "id": 199, "name": "value", "kind": 32, "kindString": "Variable", @@ -3885,20 +4026,20 @@ "title": "Variables", "kind": 32, "children": [ + 194, + 195, + 197, 200, 201, - 203, - 206, - 207, - 198, - 208, - 199, - 210, - 211, - 204, + 192, 202, - 209, - 205 + 193, + 204, + 205, + 198, + 196, + 203, + 199 ] } ] @@ -3918,7 +4059,7 @@ ] }, { - "id": 300, + "id": 297, "name": "eth_getTransactionCount", "kind": 2048, "kindString": "Method", @@ -3940,7 +4081,7 @@ ], "signatures": [ { - "id": 301, + "id": 298, "name": "eth_getTransactionCount", "kind": 4096, "kindString": "Call signature", @@ -3949,11 +4090,17 @@ }, "comment": { "shortText": "Returns the number of transactions sent from an address.", - "returns": "integer of the number of transactions sent from this address.\n" + "returns": "Number of transactions sent from this address.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nawait provider.request({ method: \"eth_sendTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\nconst txCount = await provider.request({ method: \"eth_getTransactionCount\", params: [ from, \"latest\" ] });\nconsole.log(txCount);\n```\n" + } + ] }, "parameters": [ { - "id": 302, + "id": 299, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -3964,12 +4111,12 @@ "text": "address" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 303, + "id": 300, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -3977,7 +4124,7 @@ "isExported": true }, "comment": { - "text": "integer block number, or the string \"latest\", \"earliest\"\nor \"pending\", see the default block parameter" + "text": "Integer block number, or the string \"latest\", \"earliest\"\nor \"pending\"." }, "type": { "type": "union", @@ -4016,7 +4163,7 @@ ] }, { - "id": 212, + "id": 206, "name": "eth_getTransactionReceipt", "kind": 2048, "kindString": "Method", @@ -4037,7 +4184,7 @@ ], "signatures": [ { - "id": 213, + "id": 207, "name": "eth_getTransactionReceipt", "kind": 4096, "kindString": "Call signature", @@ -4046,12 +4193,18 @@ }, "comment": { "shortText": "Returns the receipt of a transaction by transaction hash.", - "text": "Note That the receipt is not available for pending transactions.\n", - "returns": "Returns the receipt of a transaction by transaction hash.\n" + "text": "Note: The receipt is not available for pending transactions.\n", + "returns": "Returns the receipt of a transaction by transaction hash.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\nconst txReceipt = await provider.request({ method: \"eth_getTransactionReceipt\", params: [ txHash ] });\nconsole.log(txReceipt);\n```\n" + } + ] }, "parameters": [ { - "id": 214, + "id": 208, "name": "transactionHash", "kind": 32768, "kindString": "Parameter", @@ -4059,11 +4212,11 @@ "isExported": true }, "comment": { - "text": "32 Bytes - hash of a transaction" + "text": "Hash of a transaction." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -4073,7 +4226,7 @@ { "type": "reflection", "declaration": { - "id": 215, + "id": 209, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -4082,7 +4235,7 @@ }, "children": [ { - "id": 219, + "id": 213, "name": "blockHash", "kind": 32, "kindString": "Variable", @@ -4102,7 +4255,7 @@ } }, { - "id": 218, + "id": 212, "name": "blockNumber", "kind": 32, "kindString": "Variable", @@ -4122,7 +4275,7 @@ } }, { - "id": 224, + "id": 218, "name": "contractAddress", "kind": 32, "kindString": "Variable", @@ -4142,7 +4295,7 @@ } }, { - "id": 222, + "id": 216, "name": "cumulativeGasUsed", "kind": 32, "kindString": "Variable", @@ -4162,7 +4315,7 @@ } }, { - "id": 220, + "id": 214, "name": "from", "kind": 32, "kindString": "Variable", @@ -4182,7 +4335,7 @@ } }, { - "id": 223, + "id": 217, "name": "gasUsed", "kind": 32, "kindString": "Variable", @@ -4202,7 +4355,7 @@ } }, { - "id": 225, + "id": 219, "name": "logs", "kind": 32, "kindString": "Variable", @@ -4221,7 +4374,7 @@ "elementType": { "type": "reflection", "declaration": { - "id": 226, + "id": 220, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -4230,7 +4383,7 @@ }, "children": [ { - "id": 227, + "id": 221, "name": "address", "kind": 32, "kindString": "Variable", @@ -4250,7 +4403,7 @@ } }, { - "id": 228, + "id": 222, "name": "blockHash", "kind": 32, "kindString": "Variable", @@ -4270,7 +4423,7 @@ } }, { - "id": 229, + "id": 223, "name": "blockNumber", "kind": 32, "kindString": "Variable", @@ -4290,7 +4443,7 @@ } }, { - "id": 230, + "id": 224, "name": "data", "kind": 32, "kindString": "Variable", @@ -4322,7 +4475,7 @@ } }, { - "id": 231, + "id": 225, "name": "logIndex", "kind": 32, "kindString": "Variable", @@ -4342,7 +4495,7 @@ } }, { - "id": 232, + "id": 226, "name": "removed", "kind": 32, "kindString": "Variable", @@ -4362,7 +4515,7 @@ } }, { - "id": 233, + "id": 227, "name": "topics", "kind": 32, "kindString": "Variable", @@ -4394,7 +4547,7 @@ } }, { - "id": 234, + "id": 228, "name": "transactionHash", "kind": 32, "kindString": "Variable", @@ -4414,7 +4567,7 @@ } }, { - "id": 235, + "id": 229, "name": "transactionIndex", "kind": 32, "kindString": "Variable", @@ -4439,15 +4592,15 @@ "title": "Variables", "kind": 32, "children": [ + 221, + 222, + 223, + 224, + 225, + 226, 227, 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235 + 229 ] } ], @@ -4463,7 +4616,7 @@ } }, { - "id": 236, + "id": 230, "name": "logsBloom", "kind": 32, "kindString": "Variable", @@ -4483,7 +4636,7 @@ } }, { - "id": 237, + "id": 231, "name": "status", "kind": 32, "kindString": "Variable", @@ -4503,7 +4656,7 @@ } }, { - "id": 221, + "id": 215, "name": "to", "kind": 32, "kindString": "Variable", @@ -4523,7 +4676,7 @@ } }, { - "id": 216, + "id": 210, "name": "transactionHash", "kind": 32, "kindString": "Variable", @@ -4543,7 +4696,7 @@ } }, { - "id": 217, + "id": 211, "name": "transactionIndex", "kind": 32, "kindString": "Variable", @@ -4568,18 +4721,18 @@ "title": "Variables", "kind": 32, "children": [ - 219, + 213, + 212, 218, - 224, - 222, - 220, - 223, - 225, - 236, - 237, - 221, 216, - 217 + 214, + 217, + 219, + 230, + 231, + 215, + 210, + 211 ] } ] @@ -4599,7 +4752,7 @@ ] }, { - "id": 149, + "id": 143, "name": "eth_getUncleByBlockHashAndIndex", "kind": 2048, "kindString": "Method", @@ -4620,7 +4773,7 @@ ], "signatures": [ { - "id": 150, + "id": 144, "name": "eth_getUncleByBlockHashAndIndex", "kind": 4096, "kindString": "Call signature", @@ -4628,11 +4781,18 @@ "isExported": true }, "comment": { - "shortText": "Returns information about a uncle of a block by hash and uncle index position." + "shortText": "Returns information about a uncle of a block by hash and uncle index position.", + "returns": "A block object or `null` when no block is found.\n\n* `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending.\n* `parentHash`: `DATA`, 32 Bytes - Hash of the parent block.\n* `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block.\n* `miner`: `DATA`, 20 Bytes - Address of the miner.\n* `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block.\n* `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block.\n* `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block.\n* `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending.\n* `difficulty`: `QUANTITY` - Integer of the difficulty of this block.\n* `number`: `QUANTITY` - The block number. `null` when pending.\n* `gasLimit`: `QUANTITY` - The maximum gas allowed in the block.\n* `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block.\n* `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated.\n* `extraData`: `DATA` - Extra data for the block.\n* `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block.\n* `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending.\n* `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block.\n* `size`: `QUANTITY` - Integer the size of the block in bytes.\n* `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.\n* `uncles`: `Array` - Array of uncle hashes.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst blockHash = await provider.send(\"eth_getBlockByNumber\", [\"latest\"] );\nconst block = await provider.send(\"eth_getUncleByBlockHashAndIndex\", [blockHash, \"0x0\"] );\nconsole.log(block);\n```\n" + } + ] }, "parameters": [ { - "id": 151, + "id": 145, "name": "hash", "kind": 32768, "kindString": "Parameter", @@ -4640,7 +4800,7 @@ "isExported": true }, "comment": { - "text": "hash of a block" + "text": "Hash of a block." }, "type": { "type": "intrinsic", @@ -4648,7 +4808,7 @@ } }, { - "id": 152, + "id": 146, "name": "index", "kind": 32768, "kindString": "Parameter", @@ -4656,7 +4816,7 @@ "isExported": true }, "comment": { - "text": "the uncle's index position.\n" + "text": "The uncle's index position." }, "type": { "type": "intrinsic", @@ -4685,7 +4845,7 @@ ] }, { - "id": 153, + "id": 147, "name": "eth_getUncleByBlockNumberAndIndex", "kind": 2048, "kindString": "Method", @@ -4706,7 +4866,7 @@ ], "signatures": [ { - "id": 154, + "id": 148, "name": "eth_getUncleByBlockNumberAndIndex", "kind": 4096, "kindString": "Call signature", @@ -4714,11 +4874,18 @@ "isExported": true }, "comment": { - "shortText": "Returns information about a uncle of a block by hash and uncle index position." + "shortText": "Returns information about a uncle of a block by hash and uncle index position.", + "returns": "A block object or `null` when no block is found.\n\n* `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending.\n* `parentHash`: `DATA`, 32 Bytes - Hash of the parent block.\n* `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block.\n* `miner`: `DATA`, 20 Bytes - Address of the miner.\n* `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block.\n* `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block.\n* `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block.\n* `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending.\n* `difficulty`: `QUANTITY` - Integer of the difficulty of this block.\n* `number`: `QUANTITY` - The block number. `null` when pending.\n* `gasLimit`: `QUANTITY` - The maximum gas allowed in the block.\n* `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block.\n* `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated.\n* `extraData`: `DATA` - Extra data for the block.\n* `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block.\n* `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending.\n* `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block.\n* `size`: `QUANTITY` - Integer the size of the block in bytes.\n* `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.\n* `uncles`: `Array` - Array of uncle hashes.\n", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst block = await provider.send(\"eth_getUncleByBlockNumberAndIndex\", [\"latest\", \"0x0\"] );\nconsole.log(block);\n```\n" + } + ] }, "parameters": [ { - "id": 155, + "id": 149, "name": "blockNumber", "kind": 32768, "kindString": "Parameter", @@ -4726,7 +4893,7 @@ "isExported": true }, "comment": { - "text": "a block number, or the string \"earliest\", \"latest\" or \"pending\", as in the default block\nparameter." + "text": "A block number, or the string \"earliest\", \"latest\" or \"pending\"." }, "type": { "type": "union", @@ -4743,7 +4910,7 @@ } }, { - "id": 156, + "id": 150, "name": "uncleIndex", "kind": 32768, "kindString": "Parameter", @@ -4751,7 +4918,7 @@ "isExported": true }, "comment": { - "text": "the uncle's index position.\n" + "text": "The uncle's index position." }, "type": { "type": "intrinsic", @@ -4780,7 +4947,7 @@ ] }, { - "id": 143, + "id": 137, "name": "eth_getUncleCountByBlockHash", "kind": 2048, "kindString": "Method", @@ -4801,7 +4968,7 @@ ], "signatures": [ { - "id": 144, + "id": 138, "name": "eth_getUncleCountByBlockHash", "kind": 4096, "kindString": "Call signature", @@ -4809,11 +4976,18 @@ "isExported": true }, "comment": { - "shortText": "Returns the number of uncles in a block from a block matching the given block hash." + "shortText": "Returns the number of uncles in a block from a block matching the given block hash.", + "returns": "The number of uncles in a block.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst blockHash = await provider.send(\"eth_getBlockByNumber\", [\"latest\"] );\nconst uncleCount = await provider.send(\"eth_getUncleCountByBlockHash\", [blockHash] );\nconsole.log(uncleCount);\n```\n" + } + ] }, "parameters": [ { - "id": 145, + "id": 139, "name": "hash", "kind": 32768, "kindString": "Parameter", @@ -4821,20 +4995,11 @@ "isExported": true }, "comment": { - "text": "DATA, 32 Bytes - hash of a block.\n" + "text": "Hash of a block." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } } ], @@ -4859,7 +5024,7 @@ ] }, { - "id": 146, + "id": 140, "name": "eth_getUncleCountByBlockNumber", "kind": 2048, "kindString": "Method", @@ -4880,7 +5045,7 @@ ], "signatures": [ { - "id": 147, + "id": 141, "name": "eth_getUncleCountByBlockNumber", "kind": 4096, "kindString": "Call signature", @@ -4888,11 +5053,18 @@ "isExported": true }, "comment": { - "shortText": "Returns the number of uncles in a block from a block matching the given block hash." + "shortText": "Returns the number of uncles in a block from a block matching the given block hash.", + "returns": "The number of uncles in a block.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst uncleCount = await provider.send(\"eth_getUncleCountByBlockNumber\", [\"latest\"] );\nconsole.log(uncleCount);\n```\n" + } + ] }, "parameters": [ { - "id": 148, + "id": 142, "name": "number", "kind": 32768, "kindString": "Parameter", @@ -4903,12 +5075,12 @@ "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", - "name": "Buffer" + "name": "Tag" } ] } @@ -4935,7 +5107,7 @@ ] }, { - "id": 157, + "id": 151, "name": "eth_getWork", "kind": 2048, "kindString": "Method", @@ -4956,7 +5128,7 @@ ], "signatures": [ { - "id": 158, + "id": 152, "name": "eth_getWork", "kind": 4096, "kindString": "Call signature", @@ -4964,12 +5136,18 @@ "isExported": true }, "comment": { - "shortText": "Returns: An Array with the following elements\n1: DATA, 32 Bytes - current block header pow-hash\n2: DATA, 32 Bytes - the seed hash used for the DAG.\n3: DATA, 32 Bytes - the boundary condition (\"target\"), 2^256 / difficulty.", - "returns": "the hash of the current block, the seedHash, and the boundary condition to be met (\"target\").\n" + "shortText": "Returns: An Array with the following elements\n1: `DATA`, 32 Bytes - current block header pow-hash\n2: `DATA`, 32 Bytes - the seed hash used for the DAG.\n3: `DATA`, 32 Bytes - the boundary condition (\"target\"), 2^256 / difficulty.", + "returns": "The hash of the current block, the seedHash, and the boundary condition to be met (\"target\").", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"eth_getWork\", [\"0x0\"] ));\n ```\n" + } + ] }, "parameters": [ { - "id": 159, + "id": 153, "name": "filterId", "kind": 32768, "kindString": "Parameter", @@ -5024,7 +5202,7 @@ ] }, { - "id": 171, + "id": 165, "name": "eth_hashrate", "kind": 2048, "kindString": "Method", @@ -5045,7 +5223,7 @@ ], "signatures": [ { - "id": 172, + "id": 166, "name": "eth_hashrate", "kind": 4096, "kindString": "Call signature", @@ -5054,7 +5232,13 @@ }, "comment": { "shortText": "Returns the number of hashes per second that the node is mining with.", - "returns": "number of hashes per second.\n" + "returns": "Number of hashes per second.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst hashrate = await provider.request({ method: \"eth_hashrate\", params: [] });\nconsole.log(hashrate);\n```\n" + } + ] }, "type": { "type": "reference", @@ -5077,7 +5261,7 @@ ] }, { - "id": 169, + "id": 163, "name": "eth_mining", "kind": 2048, "kindString": "Method", @@ -5098,7 +5282,7 @@ ], "signatures": [ { - "id": 170, + "id": 164, "name": "eth_mining", "kind": 4096, "kindString": "Call signature", @@ -5107,7 +5291,13 @@ }, "comment": { "shortText": "Returns `true` if client is actively mining new blocks.", - "returns": "returns `true` if the client is mining, otherwise `false`.\n" + "returns": "returns `true` if the client is mining, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst isMining = await provider.request({ method: \"eth_mining\", params: [] });\nconsole.log(isMining);\n```\n" + } + ] }, "type": { "type": "reference", @@ -5130,7 +5320,7 @@ ] }, { - "id": 261, + "id": 258, "name": "eth_newBlockFilter", "kind": 2048, "kindString": "Method", @@ -5151,7 +5341,7 @@ ], "signatures": [ { - "id": 262, + "id": 259, "name": "eth_newBlockFilter", "kind": 4096, "kindString": "Call signature", @@ -5160,7 +5350,13 @@ }, "comment": { "shortText": "Creates a filter in the node, to notify when a new block arrives. To check\nif the state has changed, call `eth_getFilterChanges`.", - "returns": "A filter id.\n" + "returns": "A filter id.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst filterId = await provider.request({ method: \"eth_newBlockFilter\", params: [] });\nconsole.log(filterId);\n```\n" + } + ] }, "type": { "type": "reference", @@ -5183,7 +5379,7 @@ ] }, { - "id": 265, + "id": 262, "name": "eth_newFilter", "kind": 2048, "kindString": "Method", @@ -5205,7 +5401,7 @@ ], "signatures": [ { - "id": 266, + "id": 263, "name": "eth_newFilter", "kind": 4096, "kindString": "Call signature", @@ -5214,11 +5410,18 @@ }, "comment": { "shortText": "Creates a filter object, based on filter options, to notify when the state\nchanges (logs). To check if the state has changed, call\n`eth_getFilterChanges`.", - "text": "If the from `fromBlock` or `toBlock` option are equal to \"latest\" the\nfilter continually append logs for whatever block is seen as latest at the\ntime the block was mined, not just for the block that was \"latest\" when the\nfilter was created.\n\n### A note on specifying topic filters:\nTopics are order-dependent. A transaction with a log with topics [A, B]\nwill be matched by the following topic filters:\n * `[]` “anything”\n * `[A]` “A in first position (and anything after)”\n * `[null, B]` “anything in first position AND B in second position (and\nanything after)”\n * `[A, B]` “A in first position AND B in second position (and anything\nafter)”\n * `[[A, B], [A, B]]` “(A OR B) in first position AND (A OR B) in second\nposition (and anything after)”\n" + "text": "If the from `fromBlock` or `toBlock` option are equal to \"latest\" the\nfilter continually append logs for whatever block is seen as latest at the\ntime the block was mined, not just for the block that was \"latest\" when the\nfilter was created.\n\n### A note on specifying topic filters:\nTopics are order-dependent. A transaction with a log with topics [A, B]\nwill be matched by the following topic filters:\n * `[]` “anything”\n * `[A]` “A in first position (and anything after)”\n * `[null, B]` “anything in first position AND B in second position (and\nanything after)”\n * `[A, B]` “A in first position AND B in second position (and anything\nafter)”\n * `[[A, B], [A, B]]` “(A OR B) in first position AND (A OR B) in second\nposition (and anything after)”\n\nFilter options:\n* `fromBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string \"latest\", \"earliest\"\nor \"pending\".\n* `toBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string \"latest\", \"earliest\"\nor \"pending\".\n* `address`: `DATA | Array` (optional) - Contract address or a list of addresses from which the logs should originate.\n* `topics`: `Array of DATA` (optional) - Array of 32 Bytes `DATA` topcis. Topics are order-dependent. Each topic can also\nbe an array of `DATA` with \"or\" options.\n", + "returns": "A filter id.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst filterId = await provider.request({ method: \"eth_newFilter\", params: [] });\nconsole.log(filterId);\n```\n" + } + ] }, "parameters": [ { - "id": 267, + "id": 264, "name": "filter", "kind": 32768, "kindString": "Parameter", @@ -5227,7 +5430,7 @@ "isOptional": true }, "comment": { - "text": "The filter options\n" + "text": "The filter options as seen in source.\n" }, "type": { "type": "reference", @@ -5256,7 +5459,7 @@ ] }, { - "id": 263, + "id": 260, "name": "eth_newPendingTransactionFilter", "kind": 2048, "kindString": "Method", @@ -5277,7 +5480,7 @@ ], "signatures": [ { - "id": 264, + "id": 261, "name": "eth_newPendingTransactionFilter", "kind": 4096, "kindString": "Call signature", @@ -5286,7 +5489,13 @@ }, "comment": { "shortText": "Creates a filter in the node, to notify when new pending transactions\narrive. To check if the state has changed, call `eth_getFilterChanges`.", - "returns": "A filter id.\n" + "returns": "A filter id.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst filterId = await provider.request({ method: \"eth_newPendingTransactionFilter\", params: [] });\nconsole.log(filterId);\n```\n" + } + ] }, "type": { "type": "reference", @@ -5309,7 +5518,7 @@ ] }, { - "id": 113, + "id": 107, "name": "eth_protocolVersion", "kind": 2048, "kindString": "Method", @@ -5330,7 +5539,7 @@ ], "signatures": [ { - "id": 114, + "id": 108, "name": "eth_protocolVersion", "kind": 4096, "kindString": "Call signature", @@ -5339,7 +5548,13 @@ }, "comment": { "shortText": "Returns the current ethereum protocol version.", - "returns": "The current ethereum protocol version.\n" + "returns": "The current ethereum protocol version.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst version = await provider.request({ method: \"eth_protocolVersion\", params: [] });\nconsole.log(version);\n```\n" + } + ] }, "type": { "type": "reference", @@ -5362,7 +5577,7 @@ ] }, { - "id": 241, + "id": 238, "name": "eth_sendRawTransaction", "kind": 2048, "kindString": "Method", @@ -5383,7 +5598,7 @@ ], "signatures": [ { - "id": 242, + "id": 239, "name": "eth_sendRawTransaction", "kind": 4096, "kindString": "Call signature", @@ -5392,18 +5607,26 @@ }, "comment": { "shortText": "Creates new message call transaction or a contract creation for signed transactions.", - "returns": "The transaction hash\n" + "returns": "The transaction hash.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst signedTx = await provider.request({ method: \"eth_signTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nconst txHash = await provider.send(\"eth_sendRawTransaction\", [signedTx] );\nconsole.log(txHash);\n```\n" + } + ] }, "parameters": [ { - "id": 243, + "id": 240, "name": "transaction", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, - "comment": {}, + "comment": { + "text": "The signed transaction data." + }, "type": { "type": "intrinsic", "name": "string" @@ -5431,7 +5654,7 @@ ] }, { - "id": 238, + "id": 232, "name": "eth_sendTransaction", "kind": 2048, "kindString": "Method", @@ -5452,7 +5675,7 @@ ], "signatures": [ { - "id": 239, + "id": 233, "name": "eth_sendTransaction", "kind": 4096, "kindString": "Call signature", @@ -5461,18 +5684,27 @@ }, "comment": { "shortText": "Creates new message call transaction or a contract creation, if the data field contains code.", - "returns": "The transaction hash\n" + "text": "Transaction call object:\n* `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from.\n* `to`: `DATA`, 20 bytes - The address the transaction is sent to.\n* `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction.\n* `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei.\n* `value`: `QUANTITY` (optional) - Integer of the value in wei.\n* `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters.\n", + "returns": "The transaction hash.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst txHash = await provider.request({ method: \"eth_sendTransaction\", params: [{ from, to, gas: \"0x5b8d80\" }] });\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\nconsole.log(txHash);\n```\n" + } + ] }, "parameters": [ { - "id": 240, + "id": 234, "name": "transaction", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, - "comment": {}, + "comment": { + "text": "The transaction call object as seen in source." + }, "type": { "type": "reference", "name": "RpcTransaction" @@ -5500,7 +5732,7 @@ ] }, { - "id": 244, + "id": 241, "name": "eth_sign", "kind": 2048, "kindString": "Method", @@ -5521,7 +5753,7 @@ ], "signatures": [ { - "id": 245, + "id": 242, "name": "eth_sign", "kind": 4096, "kindString": "Call signature", @@ -5531,51 +5763,45 @@ "comment": { "shortText": "The sign method calculates an Ethereum specific signature with:\n`sign(keccak256(\"\\x19Ethereum Signed Message:\\n\" + message.length + message)))`.", "text": "By adding a prefix to the message makes the calculated signature\nrecognizable as an Ethereum specific signature. This prevents misuse where a malicious DApp can sign arbitrary data\n (e.g. transaction) and use the signature to impersonate the victim.\n\nNote the address to sign with must be unlocked.\n", - "returns": "Signature\n" + "returns": "Signature - a hex encoded 129 byte array\nstarting with `0x`. It encodes the `r`, `s`, and `v` parameters from\nappendix F of the [yellow paper](https://ethereum.github.io/yellowpaper/paper.pdf)\n in big-endian format. Bytes 0...64 contain the `r` parameter, bytes\n64...128 the `s` parameter, and the last byte the `v` parameter. Note\nthat the `v` parameter includes the chain id as specified in [EIP-155](https://eips.ethereum.org/EIPS/eip-155).", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [account] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst msg = \"0x307866666666666666666666\";\nconst signature = await provider.request({ method: \"eth_sign\", params: [account, msg] });\nconsole.log(signature);\n```\n" + } + ] }, "parameters": [ { - "id": 246, + "id": 243, "name": "address", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "Address to sign with." + }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } }, { - "id": 247, + "id": 244, "name": "message", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "Message to sign." + }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } } ], @@ -5600,7 +5826,85 @@ ] }, { - "id": 248, + "id": 235, + "name": "eth_signTransaction", + "kind": 2048, + "kindString": "Method", + "flags": { + "isExported": true + }, + "decorators": [ + { + "name": "assertArgLength", + "type": { + "type": "reference", + "name": "assertArgLength" + }, + "arguments": { + "min": "1" + } + } + ], + "signatures": [ + { + "id": 236, + "name": "eth_signTransaction", + "kind": 4096, + "kindString": "Call signature", + "flags": { + "isExported": true + }, + "comment": { + "shortText": "Signs a transaction that can be submitted to the network at a later time using `eth_sendRawTransaction`.", + "text": "Transaction call object:\n* `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from.\n* `to`: `DATA`, 20 bytes - The address the transaction is sent to.\n* `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction.\n* `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei.\n* `value`: `QUANTITY` (optional) - Integer of the value in wei.\n* `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters.\n", + "returns": "The raw, signed transaction.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [from, to] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst signedTx = await provider.request({ method: \"eth_signTransaction\", params: [{ from, to }] });\nconsole.log(signedTx)\n```\n" + } + ] + }, + "parameters": [ + { + "id": 237, + "name": "transaction", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isExported": true + }, + "comment": { + "text": "The transaction call object as seen in source." + }, + "type": { + "type": "reference", + "name": "RpcTransaction" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "string" + } + ], + "name": "Promise" + } + } + ], + "sources": [ + { + "fileName": "chains/ethereum/ethereum/src/api.ts", + "line": 1665, + "character": 27 + } + ] + }, + { + "id": 245, "name": "eth_signTypedData", "kind": 2048, "kindString": "Method", @@ -5621,7 +5925,7 @@ ], "signatures": [ { - "id": 249, + "id": 246, "name": "eth_signTypedData", "kind": 4096, "kindString": "Call signature", @@ -5633,13 +5937,17 @@ "tags": [ { "tag": "eip", - "text": "[712](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md)\n" + "text": "[712](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md)" + }, + { + "tag": "example", + "text": "\n```javascript\nconst [account] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst typedData = {\n types: {\n EIP712Domain: [\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n ],\n Person: [\n { name: 'name', type: 'string' },\n { name: 'wallet', type: 'address' }\n ],\n Mail: [\n { name: 'from', type: 'Person' },\n { name: 'to', type: 'Person' },\n { name: 'contents', type: 'string' }\n ],\n },\n primaryType: 'Mail',\n domain: {\n name: 'Ether Mail',\n version: '1',\n chainId: 1,\n verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n },\n message: {\n from: {\n name: 'Cow',\n wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n },\n to: {\n name: 'Bob',\n wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n },\n contents: 'Hello, Bob!',\n },\n};\nconst signature = await provider.request({ method: \"eth_signTypedData\", params: [account, typedData] });\nconsole.log(signature);\n```\n" } ] }, "parameters": [ { - "id": 250, + "id": 247, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -5650,21 +5958,12 @@ "text": "Address of the account that will sign the messages." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Buffer" - } - ] + "type": "reference", + "name": "DATA" } }, { - "id": 251, + "id": 248, "name": "typedData", "kind": 32768, "kindString": "Parameter", @@ -5702,7 +6001,7 @@ ] }, { - "id": 165, + "id": 159, "name": "eth_submitHashrate", "kind": 2048, "kindString": "Method", @@ -5723,7 +6022,7 @@ ], "signatures": [ { - "id": 166, + "id": 160, "name": "eth_submitHashrate", "kind": 4096, "kindString": "Call signature", @@ -5732,11 +6031,17 @@ }, "comment": { "shortText": "Used for submitting mining hashrate.", - "returns": "`true` if submitting went through successfully and `false` otherwise.\n" + "returns": "`true` if submitting went through succesfully and `false` otherwise.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst hashRate = \"0x0000000000000000000000000000000000000000000000000000000000000001\";\nconst clientId = \"0xb2222a74119abd18dbcb7d1f661c6578b7bbeb4984c50e66ed538347f606b971\";\nconst result = await provider.request({ method: \"eth_submitHashrate\", params: [hashRate, clientId] });\nconsole.log(result);\n```\n" + } + ] }, "parameters": [ { - "id": 167, + "id": 161, "name": "hashRate", "kind": 32768, "kindString": "Parameter", @@ -5744,15 +6049,15 @@ "isExported": true }, "comment": { - "text": "a hexadecimal string representation (32 bytes) of the hash rate" + "text": "A hexadecimal string representation (32 bytes) of the hash rate." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 168, + "id": 162, "name": "clientID", "kind": 32768, "kindString": "Parameter", @@ -5763,8 +6068,8 @@ "text": "a random hexadecimal(32 bytes) ID identifying the client" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -5789,7 +6094,7 @@ ] }, { - "id": 160, + "id": 154, "name": "eth_submitWork", "kind": 2048, "kindString": "Method", @@ -5810,7 +6115,7 @@ ], "signatures": [ { - "id": 161, + "id": 155, "name": "eth_submitWork", "kind": 4096, "kindString": "Call signature", @@ -5818,12 +6123,18 @@ "isExported": true }, "comment": { - "shortText": "Used for submitting a proof-of-work solution", - "returns": "`true` if the provided solution is valid, otherwise `false`.\n" + "shortText": "Used for submitting a proof-of-work solution.", + "returns": "`true` if the provided solution is valid, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst nonce = \"0xe0df4bd14ab39a71\";\nconst powHash = \"0x0000000000000000000000000000000000000000000000000000000000000001\";\nconst digest = \"0xb2222a74119abd18dbcb7d1f661c6578b7bbeb4984c50e66ed538347f606b971\";\nconst result = await provider.request({ method: \"eth_submitWork\", params: [nonce, powHash, digest] });\nconsole.log(result);\n```\n" + } + ] }, "parameters": [ { - "id": 162, + "id": 156, "name": "nonce", "kind": 32768, "kindString": "Parameter", @@ -5839,7 +6150,7 @@ } }, { - "id": 163, + "id": 157, "name": "powHash", "kind": 32768, "kindString": "Parameter", @@ -5855,7 +6166,7 @@ } }, { - "id": 164, + "id": 158, "name": "digest", "kind": 32768, "kindString": "Parameter", @@ -5892,7 +6203,7 @@ ] }, { - "id": 252, + "id": 249, "name": "eth_subscribe", "kind": 2048, "kindString": "Method", @@ -5914,7 +6225,7 @@ ], "signatures": [ { - "id": 253, + "id": 250, "name": "eth_subscribe", "kind": 4096, "kindString": "Call signature", @@ -5923,18 +6234,26 @@ }, "comment": { "shortText": "Starts a subscription to a particular event. For every event that matches\nthe subscription a JSON-RPC notification with event details and\nsubscription ID will be sent to a client.", - "returns": "A subscription id.\n" + "returns": "A subscription id.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst subscriptionId = await provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconsole.log(subscriptionId);\n```\n" + } + ] }, "parameters": [ { - "id": 254, + "id": 251, "name": "subscriptionName", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, - "comment": {}, + "comment": { + "text": "Name for the subscription." + }, "type": { "type": "reference", "name": "SubscriptionName" @@ -5953,7 +6272,7 @@ } }, { - "id": 255, + "id": 252, "name": "eth_subscribe", "kind": 4096, "kindString": "Call signature", @@ -5966,7 +6285,7 @@ }, "parameters": [ { - "id": 256, + "id": 253, "name": "subscriptionName", "kind": 32768, "kindString": "Parameter", @@ -5990,7 +6309,7 @@ } }, { - "id": 257, + "id": 254, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -6037,7 +6356,7 @@ ] }, { - "id": 115, + "id": 109, "name": "eth_syncing", "kind": 2048, "kindString": "Method", @@ -6058,7 +6377,7 @@ ], "signatures": [ { - "id": 116, + "id": 110, "name": "eth_syncing", "kind": 4096, "kindString": "Call signature", @@ -6090,7 +6409,7 @@ ] }, { - "id": 271, + "id": 268, "name": "eth_uninstallFilter", "kind": 2048, "kindString": "Method", @@ -6111,7 +6430,7 @@ ], "signatures": [ { - "id": 272, + "id": 269, "name": "eth_uninstallFilter", "kind": 4096, "kindString": "Call signature", @@ -6120,11 +6439,17 @@ }, "comment": { "shortText": "Uninstalls a filter with given id. Should always be called when watch is\nno longer needed.", - "returns": "`true` if the filter was successfully uninstalled, otherwise\n`false`.\n" + "returns": "`true` if the filter was successfully uninstalled, otherwise\n`false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst filterId = await provider.request({ method: \"eth_newFilter\", params: [] });\nconst result = await provider.request({ method: \"eth_uninstallFilter\", params: [filterId] });\nconsole.log(result);\n```\n" + } + ] }, "parameters": [ { - "id": 273, + "id": 270, "name": "filterId", "kind": 32768, "kindString": "Parameter", @@ -6132,11 +6457,11 @@ "isExported": true }, "comment": { - "text": "the filter id." + "text": "The filter id." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -6161,7 +6486,7 @@ ] }, { - "id": 258, + "id": 255, "name": "eth_unsubscribe", "kind": 2048, "kindString": "Method", @@ -6182,22 +6507,35 @@ ], "signatures": [ { - "id": 259, + "id": 256, "name": "eth_unsubscribe", "kind": 4096, "kindString": "Call signature", "flags": { "isExported": true }, + "comment": { + "shortText": "Cancel a subscription to a particular event. Returns a boolean indicating\nif the subscription was successfully cancelled.", + "returns": "`true` if subscription was cancelled successfully, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst subscriptionId = await provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst result = await provider.request({ method: \"eth_unsubscribe\", params: [subscriptionId] });\nconsole.log(result);\n```\n" + } + ] + }, "parameters": [ { - "id": 260, + "id": 257, "name": "subscriptionId", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "The ID of the subscription to unsubscribe to." + }, "type": { "type": "reference", "name": "SubscriptionId" @@ -6225,7 +6563,7 @@ ] }, { - "id": 66, + "id": 60, "name": "evm_increaseTime", "kind": 2048, "kindString": "Method", @@ -6246,7 +6584,7 @@ ], "signatures": [ { - "id": 67, + "id": 61, "name": "evm_increaseTime", "kind": 4096, "kindString": "Call signature", @@ -6255,11 +6593,17 @@ }, "comment": { "shortText": "Jump forward in time by the given amount of time, in seconds.", - "returns": "Returns the total time adjustment, in seconds.\n" + "returns": "Returns the total time adjustment, in seconds.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst seconds = 10;\nconst timeAdjustment = await provider.send(\"evm_increaseTime\", [seconds] );\nconsole.log(timeAdjustment);\n```\n" + } + ] }, "parameters": [ { - "id": 68, + "id": 62, "name": "seconds", "kind": 32768, "kindString": "Parameter", @@ -6267,20 +6611,11 @@ "isExported": true }, "comment": { - "text": "Must be greater than or equal to `0`" + "text": "Number of seconds to jump forward in time by. Must be greater than or equal to `0`." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "number" - }, - { - "type": "intrinsic", - "name": "string" - } - ] + "type": "reference", + "name": "QUANTITY" } } ], @@ -6305,7 +6640,7 @@ ] }, { - "id": 81, + "id": 75, "name": "evm_lockUnknownAccount", "kind": 2048, "kindString": "Method", @@ -6314,7 +6649,7 @@ }, "signatures": [ { - "id": 82, + "id": 76, "name": "evm_lockUnknownAccount", "kind": 4096, "kindString": "Call signature", @@ -6324,11 +6659,17 @@ "comment": { "shortText": "Locks any unknown account.", "text": "Note: accounts known to the `personal` namespace and accounts returned by\n`eth_accounts` cannot be locked using this method.\n", - "returns": "`true` if the account was locked successfully, `false` if the\naccount was already locked. Throws an error if the account could not be\nlocked.\n" + "returns": "`true` if the account was locked successfully, `false` if the\naccount was already locked. Throws an error if the account could not be\nlocked.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst address = \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\";\nconst result = await provider.send(\"evm_lockUnknownAccount\", [address] );\nconsole.log(result);\n```\n" + } + ] }, "parameters": [ { - "id": 83, + "id": 77, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -6336,11 +6677,11 @@ "isExported": true }, "comment": { - "text": "address the address of the account to lock" + "text": "The address of the account to lock." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -6401,11 +6742,7 @@ "tags": [ { "tag": "example", - "text": "\n```javascript\nawait provider.send(\"evm_mine\", Date.now());\n```\n" - }, - { - "tag": "example", - "text": "\n```javascript\nconsole.log(\"start\", await provider.send(\"eth_blockNumber\"));\nawait provider.send(\"evm_mine\", [{blocks: 5}]); // mines 5 blocks\nconsole.log(\"end\", await provider.send(\"eth_blockNumber\"));\n```\n" + "text": "\n```javascript\nconsole.log(\"start\", await provider.send(\"eth_blockNumber\"));\nawait provider.send(\"evm_mine\", [{blocks: 5}] ); // mines 5 blocks\nconsole.log(\"end\", await provider.send(\"eth_blockNumber\"));\n```\n" } ] }, @@ -6419,7 +6756,7 @@ "isExported": true }, "comment": { - "text": "the timestamp the block should be mined with.\nEXPERIMENTAL: Optionally, specify an `options` object with `timestamp`\nand/or `blocks` fields. If `blocks` is given, it will mine exactly `blocks`\n number of blocks, regardless of any other blocks mined or reverted during it's\noperation. This behavior is subject to change!\n" + "text": "The timestamp the block should be mined with.\nEXPERIEMENTAL: Optionally, specify an `options` object with `timestamp`\nand/or `blocks` fields. If `blocks` is given, it will mine exactly `blocks`\n number of blocks, regardless of any other blocks mined or reverted during it's\noperation. This behavior is subject to change!\n" }, "type": { "type": "intrinsic", @@ -6561,7 +6898,7 @@ ] }, { - "id": 72, + "id": 66, "name": "evm_revert", "kind": 2048, "kindString": "Method", @@ -6582,7 +6919,7 @@ ], "signatures": [ { - "id": 73, + "id": 67, "name": "evm_revert", "kind": 4096, "kindString": "Call signature", @@ -6591,21 +6928,17 @@ }, "comment": { "shortText": "Revert the state of the blockchain to a previous snapshot. Takes a single\nparameter, which is the snapshot id to revert to. This deletes the given\nsnapshot, as well as any snapshots taken after (Ex: reverting to id 0x1\nwill delete snapshots with ids 0x1, 0x2, etc... If no snapshot id is\npassed it will revert to the latest snapshot.", - "returns": "`true` if a snapshot was reverted, otherwise `false`\n", + "returns": "`true` if a snapshot was reverted, otherwise `false`.\n", "tags": [ { "tag": "example", - "text": "\n```javascript\nconst snapshotId = await provider.send(\"evm_snapshot\");\nconst isReverted = await provider.send(\"evm_revert\", [snapshotId]);\n```\n" - }, - { - "tag": "example", - "text": "\n```javascript\nconst provider = ganache.provider();\nconst [from, to] = await provider.send(\"eth_accounts\");\nconst startingBalance = BigInt(await provider.send(\"eth_getBalance\", [from]));\n\n// take a snapshot\nconst snapshotId = await provider.send(\"evm_snapshot\");\n\n// send value to another account (over-simplified example)\nawait provider.send(\"eth_subscribe\", [\"newHeads\"]);\nawait provider.send(\"eth_sendTransaction\", [{from, to, value: \"0xffff\"}]);\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\n// ensure balance has updated\nconst newBalance = await provider.send(\"eth_getBalance\", [from]);\nassert(BigInt(newBalance) < startingBalance);\n\n// revert the snapshot\nconst isReverted = await provider.send(\"evm_revert\", [snapshotId]);\nassert(isReverted);\n\nconst endingBalance = await provider.send(\"eth_getBalance\", [from]);\nassert.strictEqual(BigInt(endingBalance), startingBalance);\n```\n" + "text": "\n```javascript\nconst [from, to] = await provider.send(\"eth_accounts\");\nconst startingBalance = BigInt(await provider.send(\"eth_getBalance\", [from] ));\n\n// take a snapshot\nconst snapshotId = await provider.send(\"evm_snapshot\");\n\n// send value to another account (over-simplified example)\nawait provider.send(\"eth_subscribe\", [\"newHeads\"] );\nawait provider.send(\"eth_sendTransaction\", [{from, to, value: \"0xffff\"}] );\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\n// ensure balance has updated\nconst newBalance = await provider.send(\"eth_getBalance\", [from] );\nassert(BigInt(newBalance) < startingBalance);\n\n// revert the snapshot\nconst isReverted = await provider.send(\"evm_revert\", [snapshotId] );\nassert(isReverted);\nconsole.log({isReverted: isReverted});\n\n// ensure balance has reverted\nconst endingBalance = await provider.send(\"eth_getBalance\", [from] );\nconst isBalanceReverted = assert.strictEqual(BigInt(endingBalance), startingBalance);\nconsole.log({isBalanceReverted: isBalanceReverted});\n```\n" } ] }, "parameters": [ { - "id": 74, + "id": 68, "name": "snapshotId", "kind": 32768, "kindString": "Parameter", @@ -6613,20 +6946,11 @@ "isExported": true }, "comment": { - "text": "the snapshot id to revert" + "text": "The snapshot id to revert." }, "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "intrinsic", - "name": "number" - } - ] + "type": "reference", + "name": "QUANTITY" } } ], @@ -6651,7 +6975,7 @@ ] }, { - "id": 62, + "id": 56, "name": "evm_setAccountNonce", "kind": 2048, "kindString": "Method", @@ -6672,7 +6996,7 @@ ], "signatures": [ { - "id": 63, + "id": 57, "name": "evm_setAccountNonce", "kind": 4096, "kindString": "Call signature", @@ -6722,8 +7046,8 @@ "type": "reference", "typeArguments": [ { - "type": "intrinsic", - "name": "boolean" + "tag": "example", + "text": "\n```javascript\nconst nonce = \"0x3e8\";\nconst [address] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst result = await provider.send(\"evm_setAccountNonce\", [address, nonce] );\nconsole.log(result);\n```\n" } ], "name": "Promise" @@ -6777,68 +7101,29 @@ "flags": { "isExported": true }, + "comment": { + "text": "The account address to update." + }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { "id": 59, - "name": "position", + "name": "nonce", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, - "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "bigint" - }, - { - "type": "intrinsic", - "name": "number" - } - ] - } - }, - { - "id": 60, - "name": "storage", - "kind": 32768, - "kindString": "Parameter", - "flags": { - "isExported": true + "comment": { + "text": "The nonce value to be set." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } - }, - { - "id": 61, - "name": "blockNumber", - "kind": 32768, - "kindString": "Parameter", - "flags": { - "isExported": true - }, - "type": { - "type": "union", - "types": [ - { - "type": "intrinsic", - "name": "string" - }, - { - "type": "reference", - "name": "Tag" - } - ] - }, - "defaultValue": "Tag.LATEST" } ], "type": { @@ -6846,7 +7131,7 @@ "typeArguments": [ { "type": "intrinsic", - "name": "void" + "name": "boolean" } ], "name": "Promise" @@ -6862,7 +7147,7 @@ ] }, { - "id": 69, + "id": 63, "name": "evm_setTime", "kind": 2048, "kindString": "Method", @@ -6884,7 +7169,7 @@ ], "signatures": [ { - "id": 70, + "id": 64, "name": "evm_setTime", "kind": 4096, "kindString": "Call signature", @@ -6894,31 +7179,36 @@ "comment": { "shortText": "Sets the internal clock time to the given timestamp.", "text": "Warning: This will allow you to move *backwards* in time, which may cause\nnew blocks to appear to be mined before old blocks. This is will result in\nan invalid state.\n", - "returns": "The amount of *seconds* between the given timestamp and now.\n" + "returns": "The amount of *seconds* between the given timestamp and now.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst currentDate = Date.now();\nsetTimeout(async () => {\n const time = await provider.send(\"evm_setTime\", [currentDate] );\n console.log(time); // should be about two seconds ago\n}, 1000);\n```\n" + } + ] }, "parameters": [ { - "id": 71, + "id": 65, "name": "time", "kind": 32768, "kindString": "Parameter", "flags": { "isExported": true }, + "comment": { + "text": "JavaScript timestamp (millisecond precision)." + }, "type": { "type": "union", "types": [ { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" }, { "type": "reference", "name": "Date" - }, - { - "type": "intrinsic", - "name": "number" } ] } @@ -6945,7 +7235,7 @@ ] }, { - "id": 75, + "id": 69, "name": "evm_snapshot", "kind": 2048, "kindString": "Method", @@ -6954,7 +7244,7 @@ }, "signatures": [ { - "id": 76, + "id": 70, "name": "evm_snapshot", "kind": 4096, "kindString": "Call signature", @@ -6963,15 +7253,11 @@ }, "comment": { "shortText": "Snapshot the state of the blockchain at the current block. Takes no\nparameters. Returns the id of the snapshot that was created. A snapshot can\nonly be reverted once. After a successful `evm_revert`, the same snapshot\nid cannot be used again. Consider creating a new snapshot after each\n`evm_revert` if you need to revert to the same point multiple times.", - "returns": "The hex-encoded identifier for this snapshot\n", + "returns": "The hex-encoded identifier for this snapshot.\n", "tags": [ { "tag": "example", - "text": "\n```javascript\nconst snapshotId = await provider.send(\"evm_snapshot\");\n```\n" - }, - { - "tag": "example", - "text": "\n```javascript\nconst provider = ganache.provider();\nconst [from, to] = await provider.send(\"eth_accounts\");\nconst startingBalance = BigInt(await provider.send(\"eth_getBalance\", [from]));\n\n// take a snapshot\nconst snapshotId = await provider.send(\"evm_snapshot\");\n\n// send value to another account (over-simplified example)\nawait provider.send(\"eth_subscribe\", [\"newHeads\"]);\nawait provider.send(\"eth_sendTransaction\", [{from, to, value: \"0xffff\"}]);\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\n// ensure balance has updated\nconst newBalance = await provider.send(\"eth_getBalance\", [from]);\nassert(BigInt(newBalance) < startingBalance);\n\n// revert the snapshot\nconst isReverted = await provider.send(\"evm_revert\", [snapshotId]);\nassert(isReverted);\n\nconst endingBalance = await provider.send(\"eth_getBalance\", [from]);\nassert.strictEqual(BigInt(endingBalance), startingBalance);\n```\n" + "text": "\n```javascript\nconst provider = ganache.provider();\nconst [from, to] = await provider.send(\"eth_accounts\");\nconst startingBalance = BigInt(await provider.send(\"eth_getBalance\", [from] ));\n\n// take a snapshot\nconst snapshotId = await provider.send(\"evm_snapshot\");\n\n// send value to another account (over-simplified example)\nawait provider.send(\"eth_subscribe\", [\"newHeads\"] );\nawait provider.send(\"eth_sendTransaction\", [{from, to, value: \"0xffff\"}] );\nawait provider.once(\"message\"); // Note: `await provider.once` is non-standard\n\n// ensure balance has updated\nconst newBalance = await provider.send(\"eth_getBalance\", [from] );\nassert(BigInt(newBalance) < startingBalance);\n\n// revert the snapshot\nconst isReverted = await provider.send(\"evm_revert\", [snapshotId] );\nassert(isReverted);\n\n// ensure balance has reverted\nconst endingBalance = await provider.send(\"eth_getBalance\", [from] );\nconst isBalanceReverted = assert.strictEqual(BigInt(endingBalance), startingBalance);\nconsole.log({isBalanceReverted: isBalanceReverted});\n```\n" } ] }, @@ -6996,7 +7282,7 @@ ] }, { - "id": 77, + "id": 71, "name": "evm_unlockUnknownAccount", "kind": 2048, "kindString": "Method", @@ -7005,7 +7291,7 @@ }, "signatures": [ { - "id": 78, + "id": 72, "name": "evm_unlockUnknownAccount", "kind": 4096, "kindString": "Call signature", @@ -7014,11 +7300,18 @@ }, "comment": { "shortText": "Unlocks any unknown account.", - "returns": "`true` if the account was unlocked successfully, `false` if the\naccount was already unlocked. Throws an error if the account could not be\nunlocked.\n" + "text": "Note: accounts known to the `personal` namespace and accounts returned by\n`eth_accounts` cannot be unlocked using this method.\n", + "returns": "`true` if the account was unlocked successfully, `false` if the\naccount was already unlocked. Throws an error if the account could not be\nunlocked.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst address = \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\";\nconst result = await provider.send(\"evm_unlockUnknownAccount\", [address] );\nconsole.log(result);\n```\n" + } + ] }, "parameters": [ { - "id": 79, + "id": 73, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -7026,15 +7319,15 @@ "isExported": true }, "comment": { - "text": "address the address of the account to unlock" + "text": "The address of the account to unlock." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { - "id": 80, + "id": 74, "name": "duration", "kind": 32768, "kindString": "Parameter", @@ -7042,7 +7335,7 @@ "isExported": true }, "comment": { - "text": "(default: disabled) Duration in seconds how long the account\nshould remain unlocked for. Set to 0 to disable automatic locking." + "text": "(Default: disabled) Duration in seconds how long the account\nshould remain unlocked for. Set to 0 to disable automatic locking." }, "type": { "type": "intrinsic", @@ -7072,7 +7365,7 @@ ] }, { - "id": 92, + "id": 86, "name": "miner_setEtherbase", "kind": 2048, "kindString": "Method", @@ -7093,7 +7386,7 @@ ], "signatures": [ { - "id": 93, + "id": 87, "name": "miner_setEtherbase", "kind": 4096, "kindString": "Call signature", @@ -7101,11 +7394,18 @@ "isExported": true }, "comment": { - "shortText": "Sets the etherbase, where mining rewards will go." + "shortText": "Sets the etherbase, where mining rewards will go.", + "returns": "`true`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [account] = await provider.request({ method: \"eth_accounts\", params: [] });\nconsole.log(await provider.send(\"miner_setEtherbase\", [account] ));\n```\n" + } + ] }, "parameters": [ { - "id": 94, + "id": 88, "name": "address", "kind": 32768, "kindString": "Parameter", @@ -7116,8 +7416,8 @@ "text": "address\n" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -7142,7 +7442,7 @@ ] }, { - "id": 95, + "id": 89, "name": "miner_setExtra", "kind": 2048, "kindString": "Method", @@ -7163,7 +7463,7 @@ ], "signatures": [ { - "id": 96, + "id": 90, "name": "miner_setExtra", "kind": 4096, "kindString": "Call signature", @@ -7171,11 +7471,18 @@ "isExported": true }, "comment": { - "shortText": "Set the extraData block header field a miner can include." + "shortText": "Set the extraData block header field a miner can include.", + "returns": "If successfully set returns `true`, otherwise returns an error.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"miner_setExtra\", [\"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { - "id": 97, + "id": 91, "name": "extra", "kind": 32768, "kindString": "Parameter", @@ -7186,8 +7493,8 @@ "text": "extra\n" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -7212,7 +7519,7 @@ ] }, { - "id": 89, + "id": 83, "name": "miner_setGasPrice", "kind": 2048, "kindString": "Method", @@ -7233,17 +7540,26 @@ ], "signatures": [ { - "id": 90, + "id": 84, "name": "miner_setGasPrice", "kind": 4096, "kindString": "Call signature", "flags": { "isExported": true }, - "comment": {}, + "comment": { + "shortText": "Sets the minimal accepted gas price when mining transactions.\nAny transactions that are below this limit are excluded from the mining\nprocess.", + "returns": "`true`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"miner_setGasPrice\", [300000] ));\n```\n" + } + ] + }, "parameters": [ { - "id": 91, + "id": 85, "name": "number", "kind": 32768, "kindString": "Parameter", @@ -7251,11 +7567,11 @@ "isExported": true }, "comment": { - "text": "Sets the minimal accepted gas price when mining transactions.\nAny transactions that are below this limit are excluded from the mining\nprocess.\n" + "text": "Minimal accepted gas price." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -7280,7 +7596,7 @@ ] }, { - "id": 84, + "id": 78, "name": "miner_start", "kind": 2048, "kindString": "Method", @@ -7302,7 +7618,7 @@ ], "signatures": [ { - "id": 85, + "id": 79, "name": "miner_start", "kind": 4096, "kindString": "Call signature", @@ -7312,11 +7628,17 @@ "comment": { "shortText": "Resume the CPU mining process with the given number of threads.", "text": "Note: `threads` is ignored.", - "returns": "true\n" + "returns": "`true`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nawait provider.send(\"miner_stop\");\n// check that eth_mining returns false\nconsole.log(await provider.send(\"eth_mining\"));\nawait provider.send(\"miner_start\");\n// check that eth_mining returns true\nconsole.log(await provider.send(\"eth_mining\"));\n```\n" + } + ] }, "parameters": [ { - "id": 86, + "id": 80, "name": "threads", "kind": 32768, "kindString": "Parameter", @@ -7354,7 +7676,7 @@ ] }, { - "id": 87, + "id": 81, "name": "miner_stop", "kind": 2048, "kindString": "Method", @@ -7375,7 +7697,7 @@ ], "signatures": [ { - "id": 88, + "id": 82, "name": "miner_stop", "kind": 4096, "kindString": "Call signature", @@ -7383,7 +7705,14 @@ "isExported": true }, "comment": { - "shortText": "Stop the CPU mining operation." + "shortText": "Stop the CPU mining operation.", + "returns": "`true`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// check that eth_mining returns true\nconsole.log(await provider.send(\"eth_mining\"));\nawait provider.send(\"miner_stop\");\n// check that eth_mining returns false\nconsole.log(await provider.send(\"eth_mining\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -7406,7 +7735,7 @@ ] }, { - "id": 105, + "id": 99, "name": "net_listening", "kind": 2048, "kindString": "Method", @@ -7427,7 +7756,7 @@ ], "signatures": [ { - "id": 106, + "id": 100, "name": "net_listening", "kind": 4096, "kindString": "Call signature", @@ -7436,7 +7765,13 @@ }, "comment": { "shortText": "Returns `true` if client is actively listening for network connections.", - "returns": "`true` when listening, otherwise `false`.\n" + "returns": "`true` when listening, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"net_listening\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -7459,7 +7794,7 @@ ] }, { - "id": 107, + "id": 101, "name": "net_peerCount", "kind": 2048, "kindString": "Method", @@ -7480,7 +7815,7 @@ ], "signatures": [ { - "id": 108, + "id": 102, "name": "net_peerCount", "kind": 4096, "kindString": "Call signature", @@ -7489,7 +7824,13 @@ }, "comment": { "shortText": "Returns number of peers currently connected to the client.", - "returns": "integer of the number of connected peers.\n" + "returns": "Number of connected peers.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"net_peerCount\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -7512,7 +7853,7 @@ ] }, { - "id": 103, + "id": 97, "name": "net_version", "kind": 2048, "kindString": "Method", @@ -7533,7 +7874,7 @@ ], "signatures": [ { - "id": 104, + "id": 98, "name": "net_version", "kind": 4096, "kindString": "Call signature", @@ -7542,7 +7883,13 @@ }, "comment": { "shortText": "Returns the current network id.", - "returns": "The current network id. This value should NOT be JSON-RPC\nQuantity/Data encoded.\n" + "returns": "The current network id. This value should NOT be JSON-RPC\nQuantity/Data encoded.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"net_version\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -7610,8 +7957,8 @@ "text": "rawKey" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { @@ -7682,7 +8029,13 @@ }, "comment": { "shortText": "Returns all the Ethereum account addresses of all keys that have been\nadded.", - "returns": "the Ethereum account addresses of all keys that have been added.\n" + "returns": "The Ethereum account addresses of all keys that have been added.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"personal_listAccounts\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -7699,6 +8052,83 @@ } } ], + "sources": [ + { + "fileName": "chains/ethereum/ethereum/src/api.ts", + "line": 2562, + "character": 29 + } + ] + }, + { + "id": 325, + "name": "personal_lockAccount", + "kind": 2048, + "kindString": "Method", + "flags": { + "isExported": true + }, + "decorators": [ + { + "name": "assertArgLength", + "type": { + "type": "reference", + "name": "assertArgLength" + }, + "arguments": { + "min": "1" + } + } + ], + "signatures": [ + { + "id": 326, + "name": "personal_lockAccount", + "kind": 4096, + "kindString": "Call signature", + "flags": { + "isExported": true + }, + "comment": { + "shortText": "Locks the account. The account can no longer be used to send transactions.", + "returns": "Returns `true` if the account was locked, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [account] = await provider.send(\"personal_listAccounts\");\nconst isLocked = await provider.send(\"personal_lockAccount\", [account] );\nconsole.log(isLocked);\n```\n" + } + ] + }, + "parameters": [ + { + "id": 327, + "name": "address", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isExported": true + }, + "comment": { + "text": "The account address to be locked." + }, + "type": { + "type": "reference", + "name": "DATA" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "intrinsic", + "name": "boolean" + } + ], + "name": "Promise" + } + } + ], "sources": [ { "fileName": "chains/ethereum/ethereum/src/api.ts", @@ -7737,7 +8167,14 @@ "isExported": true }, "comment": { - "shortText": "Locks the account. The account can no longer be used to send transactions." + "shortText": "Generates a new account with private key. Returns the address of the new\naccount.", + "returns": "The new account's address.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst passphrase = \"passphrase\";\nconst address = await provider.send(\"personal_newAccount\", [passphrase] );\nconsole.log(address);\n```\n" + } + ] }, "parameters": [ { @@ -7749,7 +8186,7 @@ "isExported": true }, "comment": { - "text": "\n" + "text": "The passphrase to encrypt the private key with." }, "type": { "type": "intrinsic", @@ -7761,8 +8198,8 @@ "type": "reference", "typeArguments": [ { - "type": "intrinsic", - "name": "boolean" + "type": "reference", + "name": "Address" } ], "name": "Promise" @@ -7793,7 +8230,7 @@ "name": "assertArgLength" }, "arguments": { - "min": "1" + "min": "2" } } ], @@ -7807,8 +8244,15 @@ "isExported": true }, "comment": { - "shortText": "Generates a new account with private key. Returns the address of the new\naccount.", - "returns": "The new account's address\n" + "shortText": "Validate the given passphrase and submit transaction.", + "text": "The transaction is the same argument as for `eth_sendTransaction` and\ncontains the from address. If the passphrase can be used to decrypt the\nprivate key belonging to `tx.from` the transaction is verified, signed and\nsend onto the network. The account is not unlocked globally in the node\nand cannot be used in other RPC calls.\n\nTransaction call object:\n* `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from.\n* `to`: `DATA`, 20 bytes - The address the transaction is sent to.\n* `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction.\n* `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei.\n* `value`: `QUANTITY` (optional) - Integer of the value in wei.\n* `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters.\n", + "returns": "The transaction hash or if unsuccessful an error.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst passphrase = \"passphrase\";\nconst newAccount = await provider.send(\"personal_newAccount\", [passphrase] );\nconst [to] = await provider.send(\"personal_listAccounts\");\n\n// use account and passphrase to send the transaction\nconst txHash = await provider.send(\"personal_sendTransaction\", [{ from: newAccount, to, gasLimit: \"0x5b8d80\" }, passphrase] );\nconsole.log(txHash);\n```\n" + } + ] }, "parameters": [ { @@ -7833,7 +8277,7 @@ "typeArguments": [ { "type": "reference", - "name": "Address" + "name": "Data" } ], "name": "Promise" @@ -7878,8 +8322,15 @@ "isExported": true }, "comment": { - "shortText": "Validate the given passphrase and submit transaction.", - "text": "The transaction is the same argument as for eth_sendTransaction and\ncontains the from address. If the passphrase can be used to decrypt the\nprivate key belonging to tx.from the transaction is verified, signed and\nsend onto the network. The account is not unlocked globally in the node\nand cannot be used in other RPC calls.\n" + "shortText": "Validates the given passphrase and signs a transaction that can be\nsubmitted to the network at a later time using `eth_sendRawTransaction`.", + "text": "The transaction is the same argument as for `eth_signTransaction` and\ncontains the from address. If the passphrase can be used to decrypt the\nprivate key belogging to `tx.from` the transaction is verified and signed.\nThe account is not unlocked globally in the node and cannot be used in other RPC calls.\n\nTransaction call object:\n* `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from.\n* `to`: `DATA`, 20 bytes - The address the transaction is sent to.\n* `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction.\n* `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei.\n* `value`: `QUANTITY` (optional) - Integer of the value in wei.\n* `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters.\n", + "returns": "The raw, signed transaction.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst [to] = await provider.request({ method: \"eth_accounts\", params: [] });\nconst passphrase = \"passphrase\";\nconst from = await provider.send(\"personal_newAccount\", [passphrase] );\nawait provider.request({ method: \"eth_subscribe\", params: [\"newHeads\"] });\nconst signedTx = await provider.request({ method: \"personal_signTransaction\", params: [{ from, to }, passphrase] });\nconsole.log(signedTx)\n```\n" + } + ] }, "parameters": [ { @@ -7890,9 +8341,12 @@ "flags": { "isExported": true }, + "comment": { + "text": "The transaction call object as seen in source." + }, "type": { - "type": "intrinsic", - "name": "any" + "type": "reference", + "name": "RpcTransaction" } }, { @@ -7916,8 +8370,8 @@ "type": "reference", "typeArguments": [ { - "type": "reference", - "name": "Data" + "type": "intrinsic", + "name": "string" } ], "name": "Promise" @@ -7964,8 +8418,14 @@ }, "comment": { "shortText": "Unlocks the account for use.", - "text": "The unencrypted key will be held in memory until the unlock duration\nexpires. The unlock duration defaults to 300 seconds. An explicit duration\nof zero seconds unlocks the key until geth exits.\n\nThe account can be used with eth_sign and eth_sendTransaction while it is\nunlocked.", - "returns": "true if it worked. Throws an error if it did not.\n" + "text": "The unencrypted key will be held in memory until the unlock duration\nexpires. The unlock duration defaults to 300 seconds. An explicit duration\nof zero seconds unlocks the key until geth exits.\n\nThe account can be used with `eth_sign` and `eth_sendTransaction` while it is\nunlocked.", + "returns": "`true` if it worked. Throws an error or returns `false` if it did not.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\n// generate an account\nconst passphrase = \"passphrase\";\nconst newAccount = await provider.send(\"personal_newAccount\", [passphrase] );\nconst isUnlocked = await provider.send(\"personal_unlockAccount\", [newAccount, passphrase] );\nconsole.log(isUnlocked);\n```\n" + } + ] }, "parameters": [ { @@ -7977,11 +8437,11 @@ "isExported": true }, "comment": { - "text": "20 Bytes - The address of the account to unlock." + "text": "The address of the account to unlock." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { @@ -8009,7 +8469,7 @@ "isExported": true }, "comment": { - "text": "(default: 300) Duration in seconds how long the account\nshould remain unlocked for. Set to 0 to disable automatic locking." + "text": "(Default: 300) Duration in seconds how long the account\nshould remain unlocked for. Set to 0 to disable automatic locking." }, "type": { "type": "intrinsic", @@ -8067,6 +8527,16 @@ "flags": { "isExported": true }, + "comment": { + "shortText": "Returns object of RPC modules.", + "returns": "RPC modules.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"rpc_modules\"));\n```\n" + } + ] + }, "type": { "type": "reference", "typeArguments": [ @@ -8267,8 +8737,14 @@ "isExported": true }, "comment": { - "shortText": "Adds a whisper identity to the group", - "returns": "true if the identity was successfully added to the group, otherwise false.\n" + "shortText": "Adds a whisper identity to the group.", + "returns": "`true` if the identity was successfully added to the group, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_addToGroup\", [\"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -8283,8 +8759,8 @@ "text": "The identity address to add to a group." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -8339,7 +8815,13 @@ }, "comment": { "shortText": "Polling method for whisper filters. Returns new messages since the last call of this method.", - "returns": "More Info: https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_getfilterchanges\n" + "returns": "More Info: https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_getfilterchanges", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_getFilterChanges\", [\"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -8354,8 +8836,8 @@ "text": "The filter id. Ex: \"0x7\"" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -8413,7 +8895,13 @@ }, "comment": { "shortText": "Get all messages matching a filter. Unlike shh_getFilterChanges this returns all messages.", - "returns": "See: shh_getFilterChanges\n" + "returns": "See: `shh_getFilterChanges`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_getMessages\", [\"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -8428,8 +8916,8 @@ "text": "The filter id. Ex: \"0x7\"" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -8484,7 +8972,13 @@ }, "comment": { "shortText": "Checks if the client hold the private keys for a given identity.", - "returns": "returns true if the client holds the privatekey for that identity, otherwise false.\n" + "returns": "Returns `true` if the client holds the private key for that identity, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_hasIdentity\", [\"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -8499,8 +8993,8 @@ "text": "The identity address to check." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -8555,7 +9049,13 @@ }, "comment": { "shortText": "Creates filter to notify, when client receives whisper message matching the filter options.", - "returns": "returns true if the identity was successfully added to the group, otherwise false.\n" + "returns": "Returns `true` if the identity was successfully added to the group, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_newFilter\", [\"0x0\", []] ));\n```\n" + } + ] }, "parameters": [ { @@ -8567,11 +9067,11 @@ "isExported": true }, "comment": { - "text": "-\n^(optional) Identity of the receiver. When present it will try to decrypt any incoming message\n if the client holds the private key to this identity." + "text": "(optional) Identity of the receiver. When present it will try to decrypt any incoming message\n if the client holds the private key to this identity." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } }, { @@ -8583,13 +9083,13 @@ "isExported": true }, "comment": { - "text": "Array of DATA topics which the incoming message's topics should match." + "text": "Array of topics which the incoming message's topics should match." }, "type": { "type": "array", "elementType": { - "type": "intrinsic", - "name": "any" + "type": "reference", + "name": "DATA" } } } @@ -8645,7 +9145,7 @@ }, "comment": { "shortText": "Creates a new group.", - "returns": "the address of the new group.\n" + "returns": "The address of the new group.\n" }, "type": { "type": "reference", @@ -8698,7 +9198,13 @@ }, "comment": { "shortText": "Creates new whisper identity in the client.", - "returns": "result - the address of the new identity.\n" + "returns": "The address of the new identity.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_newIdentity\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -8751,7 +9257,13 @@ }, "comment": { "shortText": "Creates a whisper message and injects it into the network for distribution.", - "returns": "returns true if the message was sent, otherwise false.\n" + "returns": "Returns `true` if the message was sent, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_post\", [{}] ));\n```\n" + } + ] }, "parameters": [ { @@ -8819,8 +9331,14 @@ "isExported": true }, "comment": { - "shortText": "Uninstalls a filter with given id. Should always be called when watch is no longer needed.\nAdditionally Filters timeout when they aren't requested with shh_getFilterChanges for a period of time.", - "returns": "true if the filter was successfully uninstalled, otherwise false.\n" + "shortText": "Uninstalls a filter with given id. Should always be called when watch is no longer needed.\nAdditionally filters timeout when they aren't requested with `shh_getFilterChanges` for a period of time.", + "returns": "`true` if the filter was successfully uninstalled, otherwise `false`.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_uninstallFilter\", [\"0x0\"] ));\n```\n" + } + ] }, "parameters": [ { @@ -8835,8 +9353,8 @@ "text": "The filter id. Ex: \"0x7\"" }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "QUANTITY" } } ], @@ -8891,7 +9409,13 @@ }, "comment": { "shortText": "Returns the current whisper protocol version.", - "returns": "The current whisper protocol version\n" + "returns": "The current whisper protocol version.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"shh_version\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -8914,7 +9438,7 @@ ] }, { - "id": 98, + "id": 92, "name": "web3_clientVersion", "kind": 2048, "kindString": "Method", @@ -8935,7 +9459,7 @@ ], "signatures": [ { - "id": 99, + "id": 93, "name": "web3_clientVersion", "kind": 4096, "kindString": "Call signature", @@ -8944,7 +9468,13 @@ }, "comment": { "shortText": "Returns the current client version.", - "returns": "The current client version.\n" + "returns": "The current client version.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconsole.log(await provider.send(\"web3_clientVersion\"));\n```\n" + } + ] }, "type": { "type": "reference", @@ -8967,7 +9497,7 @@ ] }, { - "id": 100, + "id": 94, "name": "web3_sha3", "kind": 2048, "kindString": "Method", @@ -8988,7 +9518,7 @@ ], "signatures": [ { - "id": 101, + "id": 95, "name": "web3_sha3", "kind": 4096, "kindString": "Call signature", @@ -8997,11 +9527,17 @@ }, "comment": { "shortText": "Returns Keccak-256 (not the standardized SHA3-256) of the given data.", - "returns": "The SHA3 result of the given string.\n" + "returns": "The SHA3 result of the given string.", + "tags": [ + { + "tag": "example", + "text": "\n```javascript\nconst data = \"hello trufflers\";\nconst sha3 = await provider.send(\"web3_sha3\", [data] );\nconsole.log(sha3);\n```\n" + } + ] }, "parameters": [ { - "id": 102, + "id": 96, "name": "data", "kind": 32768, "kindString": "Parameter", @@ -9012,8 +9548,8 @@ "text": "the data to convert into a SHA3 hash." }, "type": { - "type": "intrinsic", - "name": "string" + "type": "reference", + "name": "DATA" } } ], @@ -9068,63 +9604,62 @@ 31, 35, 26, - 326, - 308, + 309, + 305, + 169, + 171, + 301, + 173, + 111, + 103, + 167, 175, - 177, - 304, - 179, 117, - 109, - 173, - 181, - 123, - 119, - 130, + 113, + 124, + 121, + 179, 127, - 185, + 265, + 271, + 284, + 183, + 129, 133, - 268, - 274, - 287, - 189, - 135, - 139, - 194, - 300, - 212, - 149, - 153, + 188, + 297, + 206, 143, - 146, - 157, - 171, - 169, - 261, - 265, - 263, - 113, - 241, - 238, - 244, - 248, + 147, + 137, + 140, + 151, 165, - 160, - 252, - 115, - 271, + 163, 258, - 66, - 81, + 262, + 260, + 107, + 238, + 232, + 241, + 235, + 245, + 159, + 154, + 249, + 109, + 268, + 255, + 60, + 75, 48, - 72, - 62, + 66, 56, + 63, 69, - 75, - 77, - 92, - 95, + 71, + 86, 89, 84, 87, diff --git a/docs/typedoc/assets/js/search.json b/docs/typedoc/assets/js/search.json index 99881c95bb..22220b8ca7 100644 --- a/docs/typedoc/assets/js/search.json +++ b/docs/typedoc/assets/js/search.json @@ -1 +1 @@ -{"kinds":{"1":"Module","32":"Variable","64":"Function","128":"Class","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"\"api\"","url":"modules/_api_.html","classes":"tsd-kind-module"},{"id":1,"kind":128,"name":"EthereumApi","url":"classes/_api_.ethereumapi.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"api\""},{"id":2,"kind":1024,"name":"#getId","url":"classes/_api_.ethereumapi.html#_getid","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":3,"kind":1024,"name":"#filters","url":"classes/_api_.ethereumapi.html#_filters","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":4,"kind":1024,"name":"#subscriptions","url":"classes/_api_.ethereumapi.html#_subscriptions","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":5,"kind":1024,"name":"#options","url":"classes/_api_.ethereumapi.html#_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":6,"kind":1024,"name":"#blockchain","url":"classes/_api_.ethereumapi.html#_blockchain","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":7,"kind":1024,"name":"#wallet","url":"classes/_api_.ethereumapi.html#_wallet","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":8,"kind":512,"name":"constructor","url":"classes/_api_.ethereumapi.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":9,"kind":2048,"name":"db_putString","url":"classes/_api_.ethereumapi.html#db_putstring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":10,"kind":2048,"name":"db_getString","url":"classes/_api_.ethereumapi.html#db_getstring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":11,"kind":2048,"name":"db_putHex","url":"classes/_api_.ethereumapi.html#db_puthex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":12,"kind":2048,"name":"db_getHex","url":"classes/_api_.ethereumapi.html#db_gethex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":13,"kind":2048,"name":"bzz_hive","url":"classes/_api_.ethereumapi.html#bzz_hive","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":14,"kind":2048,"name":"bzz_info","url":"classes/_api_.ethereumapi.html#bzz_info","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":15,"kind":2048,"name":"evm_mine","url":"classes/_api_.ethereumapi.html#evm_mine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":16,"kind":2048,"name":"evm_setStorageAt","url":"classes/_api_.ethereumapi.html#evm_setstorageat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":17,"kind":2048,"name":"evm_setAccountNonce","url":"classes/_api_.ethereumapi.html#evm_setaccountnonce","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":18,"kind":2048,"name":"evm_increaseTime","url":"classes/_api_.ethereumapi.html#evm_increasetime","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":19,"kind":2048,"name":"evm_setTime","url":"classes/_api_.ethereumapi.html#evm_settime","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":20,"kind":2048,"name":"evm_revert","url":"classes/_api_.ethereumapi.html#evm_revert","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":21,"kind":2048,"name":"evm_snapshot","url":"classes/_api_.ethereumapi.html#evm_snapshot","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":22,"kind":2048,"name":"evm_unlockUnknownAccount","url":"classes/_api_.ethereumapi.html#evm_unlockunknownaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":23,"kind":2048,"name":"evm_lockUnknownAccount","url":"classes/_api_.ethereumapi.html#evm_lockunknownaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":24,"kind":2048,"name":"miner_start","url":"classes/_api_.ethereumapi.html#miner_start","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":25,"kind":2048,"name":"miner_stop","url":"classes/_api_.ethereumapi.html#miner_stop","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":26,"kind":2048,"name":"miner_setGasPrice","url":"classes/_api_.ethereumapi.html#miner_setgasprice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":27,"kind":2048,"name":"miner_setEtherbase","url":"classes/_api_.ethereumapi.html#miner_setetherbase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":28,"kind":2048,"name":"miner_setExtra","url":"classes/_api_.ethereumapi.html#miner_setextra","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":29,"kind":2048,"name":"web3_clientVersion","url":"classes/_api_.ethereumapi.html#web3_clientversion","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":30,"kind":2048,"name":"web3_sha3","url":"classes/_api_.ethereumapi.html#web3_sha3","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":31,"kind":2048,"name":"net_version","url":"classes/_api_.ethereumapi.html#net_version","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":32,"kind":2048,"name":"net_listening","url":"classes/_api_.ethereumapi.html#net_listening","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":33,"kind":2048,"name":"net_peerCount","url":"classes/_api_.ethereumapi.html#net_peercount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":34,"kind":2048,"name":"eth_estimateGas","url":"classes/_api_.ethereumapi.html#eth_estimategas","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":35,"kind":2048,"name":"eth_protocolVersion","url":"classes/_api_.ethereumapi.html#eth_protocolversion","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":36,"kind":2048,"name":"eth_syncing","url":"classes/_api_.ethereumapi.html#eth_syncing","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":37,"kind":2048,"name":"eth_coinbase","url":"classes/_api_.ethereumapi.html#eth_coinbase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":38,"kind":2048,"name":"eth_getBlockByNumber","url":"classes/_api_.ethereumapi.html#eth_getblockbynumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":39,"kind":2048,"name":"eth_getBlockByHash","url":"classes/_api_.ethereumapi.html#eth_getblockbyhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":40,"kind":2048,"name":"eth_getBlockTransactionCountByNumber","url":"classes/_api_.ethereumapi.html#eth_getblocktransactioncountbynumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":41,"kind":2048,"name":"eth_getBlockTransactionCountByHash","url":"classes/_api_.ethereumapi.html#eth_getblocktransactioncountbyhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":42,"kind":2048,"name":"eth_getCompilers","url":"classes/_api_.ethereumapi.html#eth_getcompilers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":43,"kind":2048,"name":"eth_getTransactionByBlockHashAndIndex","url":"classes/_api_.ethereumapi.html#eth_gettransactionbyblockhashandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":44,"kind":2048,"name":"eth_getTransactionByBlockNumberAndIndex","url":"classes/_api_.ethereumapi.html#eth_gettransactionbyblocknumberandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":45,"kind":2048,"name":"eth_getUncleCountByBlockHash","url":"classes/_api_.ethereumapi.html#eth_getunclecountbyblockhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":46,"kind":2048,"name":"eth_getUncleCountByBlockNumber","url":"classes/_api_.ethereumapi.html#eth_getunclecountbyblocknumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":47,"kind":2048,"name":"eth_getUncleByBlockHashAndIndex","url":"classes/_api_.ethereumapi.html#eth_getunclebyblockhashandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":48,"kind":2048,"name":"eth_getUncleByBlockNumberAndIndex","url":"classes/_api_.ethereumapi.html#eth_getunclebyblocknumberandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":49,"kind":2048,"name":"eth_getWork","url":"classes/_api_.ethereumapi.html#eth_getwork","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":50,"kind":2048,"name":"eth_submitWork","url":"classes/_api_.ethereumapi.html#eth_submitwork","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":51,"kind":2048,"name":"eth_submitHashrate","url":"classes/_api_.ethereumapi.html#eth_submithashrate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":52,"kind":2048,"name":"eth_mining","url":"classes/_api_.ethereumapi.html#eth_mining","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":53,"kind":2048,"name":"eth_hashrate","url":"classes/_api_.ethereumapi.html#eth_hashrate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":54,"kind":2048,"name":"eth_gasPrice","url":"classes/_api_.ethereumapi.html#eth_gasprice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":55,"kind":2048,"name":"eth_accounts","url":"classes/_api_.ethereumapi.html#eth_accounts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":56,"kind":2048,"name":"eth_blockNumber","url":"classes/_api_.ethereumapi.html#eth_blocknumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":57,"kind":2048,"name":"eth_chainId","url":"classes/_api_.ethereumapi.html#eth_chainid","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":58,"kind":2048,"name":"eth_getBalance","url":"classes/_api_.ethereumapi.html#eth_getbalance","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":59,"kind":2048,"name":"eth_getCode","url":"classes/_api_.ethereumapi.html#eth_getcode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":60,"kind":2048,"name":"eth_getStorageAt","url":"classes/_api_.ethereumapi.html#eth_getstorageat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":61,"kind":2048,"name":"eth_getTransactionByHash","url":"classes/_api_.ethereumapi.html#eth_gettransactionbyhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":62,"kind":2048,"name":"eth_getTransactionReceipt","url":"classes/_api_.ethereumapi.html#eth_gettransactionreceipt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":63,"kind":2048,"name":"eth_sendTransaction","url":"classes/_api_.ethereumapi.html#eth_sendtransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":64,"kind":2048,"name":"eth_sendRawTransaction","url":"classes/_api_.ethereumapi.html#eth_sendrawtransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":65,"kind":2048,"name":"eth_sign","url":"classes/_api_.ethereumapi.html#eth_sign","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":66,"kind":2048,"name":"eth_signTypedData","url":"classes/_api_.ethereumapi.html#eth_signtypeddata","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":67,"kind":2048,"name":"eth_subscribe","url":"classes/_api_.ethereumapi.html#eth_subscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":68,"kind":2048,"name":"eth_unsubscribe","url":"classes/_api_.ethereumapi.html#eth_unsubscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":69,"kind":2048,"name":"eth_newBlockFilter","url":"classes/_api_.ethereumapi.html#eth_newblockfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":70,"kind":2048,"name":"eth_newPendingTransactionFilter","url":"classes/_api_.ethereumapi.html#eth_newpendingtransactionfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":71,"kind":2048,"name":"eth_newFilter","url":"classes/_api_.ethereumapi.html#eth_newfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":72,"kind":2048,"name":"eth_getFilterChanges","url":"classes/_api_.ethereumapi.html#eth_getfilterchanges","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":73,"kind":2048,"name":"eth_uninstallFilter","url":"classes/_api_.ethereumapi.html#eth_uninstallfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":74,"kind":2048,"name":"eth_getFilterLogs","url":"classes/_api_.ethereumapi.html#eth_getfilterlogs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":75,"kind":2048,"name":"eth_getLogs","url":"classes/_api_.ethereumapi.html#eth_getlogs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":76,"kind":2048,"name":"eth_getTransactionCount","url":"classes/_api_.ethereumapi.html#eth_gettransactioncount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":77,"kind":2048,"name":"eth_call","url":"classes/_api_.ethereumapi.html#eth_call","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":78,"kind":2048,"name":"debug_traceTransaction","url":"classes/_api_.ethereumapi.html#debug_tracetransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":79,"kind":2048,"name":"debug_storageRangeAt","url":"classes/_api_.ethereumapi.html#debug_storagerangeat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":80,"kind":2048,"name":"personal_listAccounts","url":"classes/_api_.ethereumapi.html#personal_listaccounts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":81,"kind":2048,"name":"personal_newAccount","url":"classes/_api_.ethereumapi.html#personal_newaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":82,"kind":2048,"name":"personal_importRawKey","url":"classes/_api_.ethereumapi.html#personal_importrawkey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":83,"kind":2048,"name":"personal_lockAccount","url":"classes/_api_.ethereumapi.html#personal_lockaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":84,"kind":2048,"name":"personal_unlockAccount","url":"classes/_api_.ethereumapi.html#personal_unlockaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":85,"kind":2048,"name":"personal_sendTransaction","url":"classes/_api_.ethereumapi.html#personal_sendtransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":86,"kind":2048,"name":"rpc_modules","url":"classes/_api_.ethereumapi.html#rpc_modules","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":87,"kind":2048,"name":"shh_newIdentity","url":"classes/_api_.ethereumapi.html#shh_newidentity","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":88,"kind":2048,"name":"shh_hasIdentity","url":"classes/_api_.ethereumapi.html#shh_hasidentity","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":89,"kind":2048,"name":"shh_newGroup","url":"classes/_api_.ethereumapi.html#shh_newgroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":90,"kind":2048,"name":"shh_addToGroup","url":"classes/_api_.ethereumapi.html#shh_addtogroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":91,"kind":2048,"name":"shh_newFilter","url":"classes/_api_.ethereumapi.html#shh_newfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":92,"kind":2048,"name":"shh_uninstallFilter","url":"classes/_api_.ethereumapi.html#shh_uninstallfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":93,"kind":2048,"name":"shh_getFilterChanges","url":"classes/_api_.ethereumapi.html#shh_getfilterchanges","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":94,"kind":2048,"name":"shh_getMessages","url":"classes/_api_.ethereumapi.html#shh_getmessages","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":95,"kind":2048,"name":"shh_post","url":"classes/_api_.ethereumapi.html#shh_post","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":96,"kind":2048,"name":"shh_version","url":"classes/_api_.ethereumapi.html#shh_version","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":97,"kind":32,"name":"version","url":"modules/_api_.html#version","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":98,"kind":32,"name":"CLIENT_VERSION","url":"modules/_api_.html#client_version","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":99,"kind":32,"name":"PROTOCOL_VERSION","url":"modules/_api_.html#protocol_version","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":100,"kind":32,"name":"RPC_MODULES","url":"modules/_api_.html#rpc_modules","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":101,"kind":65536,"name":"__type","url":"modules/_api_.html#rpc_modules.__type","classes":"tsd-kind-type-literal tsd-parent-kind-variable tsd-is-not-exported","parent":"\"api\".RPC_MODULES"},{"id":102,"kind":32,"name":"eth","url":"modules/_api_.html#rpc_modules.__type.eth","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":103,"kind":32,"name":"net","url":"modules/_api_.html#rpc_modules.__type.net","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":104,"kind":32,"name":"rpc","url":"modules/_api_.html#rpc_modules.__type.rpc","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":105,"kind":32,"name":"web3","url":"modules/_api_.html#rpc_modules.__type.web3","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":106,"kind":32,"name":"evm","url":"modules/_api_.html#rpc_modules.__type.evm","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":107,"kind":32,"name":"personal","url":"modules/_api_.html#rpc_modules.__type.personal","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":108,"kind":4194304,"name":"TypedData","url":"modules/_api_.html#typeddata","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":109,"kind":64,"name":"assertExceptionalTransactions","url":"modules/_api_.html#assertexceptionaltransactions","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,25.695]],["parent/0",[]],["name/1",[1,43.041]],["parent/1",[0,2.56]],["name/2",[2,43.041]],["parent/2",[3,0.15]],["name/3",[4,43.041]],["parent/3",[3,0.15]],["name/4",[5,43.041]],["parent/4",[3,0.15]],["name/5",[6,43.041]],["parent/5",[3,0.15]],["name/6",[7,43.041]],["parent/6",[3,0.15]],["name/7",[8,43.041]],["parent/7",[3,0.15]],["name/8",[9,43.041]],["parent/8",[3,0.15]],["name/9",[10,43.041]],["parent/9",[3,0.15]],["name/10",[11,43.041]],["parent/10",[3,0.15]],["name/11",[12,43.041]],["parent/11",[3,0.15]],["name/12",[13,43.041]],["parent/12",[3,0.15]],["name/13",[14,43.041]],["parent/13",[3,0.15]],["name/14",[15,43.041]],["parent/14",[3,0.15]],["name/15",[16,43.041]],["parent/15",[3,0.15]],["name/16",[17,43.041]],["parent/16",[3,0.15]],["name/17",[18,43.041]],["parent/17",[3,0.15]],["name/18",[19,43.041]],["parent/18",[3,0.15]],["name/19",[20,43.041]],["parent/19",[3,0.15]],["name/20",[21,43.041]],["parent/20",[3,0.15]],["name/21",[22,43.041]],["parent/21",[3,0.15]],["name/22",[23,43.041]],["parent/22",[3,0.15]],["name/23",[24,43.041]],["parent/23",[3,0.15]],["name/24",[25,43.041]],["parent/24",[3,0.15]],["name/25",[26,43.041]],["parent/25",[3,0.15]],["name/26",[27,43.041]],["parent/26",[3,0.15]],["name/27",[28,43.041]],["parent/27",[3,0.15]],["name/28",[29,43.041]],["parent/28",[3,0.15]],["name/29",[30,43.041]],["parent/29",[3,0.15]],["name/30",[31,43.041]],["parent/30",[3,0.15]],["name/31",[32,43.041]],["parent/31",[3,0.15]],["name/32",[33,43.041]],["parent/32",[3,0.15]],["name/33",[34,43.041]],["parent/33",[3,0.15]],["name/34",[35,43.041]],["parent/34",[3,0.15]],["name/35",[36,43.041]],["parent/35",[3,0.15]],["name/36",[37,43.041]],["parent/36",[3,0.15]],["name/37",[38,43.041]],["parent/37",[3,0.15]],["name/38",[39,43.041]],["parent/38",[3,0.15]],["name/39",[40,43.041]],["parent/39",[3,0.15]],["name/40",[41,43.041]],["parent/40",[3,0.15]],["name/41",[42,43.041]],["parent/41",[3,0.15]],["name/42",[43,43.041]],["parent/42",[3,0.15]],["name/43",[44,43.041]],["parent/43",[3,0.15]],["name/44",[45,43.041]],["parent/44",[3,0.15]],["name/45",[46,43.041]],["parent/45",[3,0.15]],["name/46",[47,43.041]],["parent/46",[3,0.15]],["name/47",[48,43.041]],["parent/47",[3,0.15]],["name/48",[49,43.041]],["parent/48",[3,0.15]],["name/49",[50,43.041]],["parent/49",[3,0.15]],["name/50",[51,43.041]],["parent/50",[3,0.15]],["name/51",[52,43.041]],["parent/51",[3,0.15]],["name/52",[53,43.041]],["parent/52",[3,0.15]],["name/53",[54,43.041]],["parent/53",[3,0.15]],["name/54",[55,43.041]],["parent/54",[3,0.15]],["name/55",[56,43.041]],["parent/55",[3,0.15]],["name/56",[57,43.041]],["parent/56",[3,0.15]],["name/57",[58,43.041]],["parent/57",[3,0.15]],["name/58",[59,43.041]],["parent/58",[3,0.15]],["name/59",[60,43.041]],["parent/59",[3,0.15]],["name/60",[61,43.041]],["parent/60",[3,0.15]],["name/61",[62,43.041]],["parent/61",[3,0.15]],["name/62",[63,43.041]],["parent/62",[3,0.15]],["name/63",[64,43.041]],["parent/63",[3,0.15]],["name/64",[65,43.041]],["parent/64",[3,0.15]],["name/65",[66,43.041]],["parent/65",[3,0.15]],["name/66",[67,43.041]],["parent/66",[3,0.15]],["name/67",[68,43.041]],["parent/67",[3,0.15]],["name/68",[69,43.041]],["parent/68",[3,0.15]],["name/69",[70,43.041]],["parent/69",[3,0.15]],["name/70",[71,43.041]],["parent/70",[3,0.15]],["name/71",[72,43.041]],["parent/71",[3,0.15]],["name/72",[73,43.041]],["parent/72",[3,0.15]],["name/73",[74,43.041]],["parent/73",[3,0.15]],["name/74",[75,43.041]],["parent/74",[3,0.15]],["name/75",[76,43.041]],["parent/75",[3,0.15]],["name/76",[77,43.041]],["parent/76",[3,0.15]],["name/77",[78,43.041]],["parent/77",[3,0.15]],["name/78",[79,43.041]],["parent/78",[3,0.15]],["name/79",[80,43.041]],["parent/79",[3,0.15]],["name/80",[81,43.041]],["parent/80",[3,0.15]],["name/81",[82,43.041]],["parent/81",[3,0.15]],["name/82",[83,43.041]],["parent/82",[3,0.15]],["name/83",[84,43.041]],["parent/83",[3,0.15]],["name/84",[85,43.041]],["parent/84",[3,0.15]],["name/85",[86,43.041]],["parent/85",[3,0.15]],["name/86",[87,37.932]],["parent/86",[3,0.15]],["name/87",[88,43.041]],["parent/87",[3,0.15]],["name/88",[89,43.041]],["parent/88",[3,0.15]],["name/89",[90,43.041]],["parent/89",[3,0.15]],["name/90",[91,43.041]],["parent/90",[3,0.15]],["name/91",[92,43.041]],["parent/91",[3,0.15]],["name/92",[93,43.041]],["parent/92",[3,0.15]],["name/93",[94,43.041]],["parent/93",[3,0.15]],["name/94",[95,43.041]],["parent/94",[3,0.15]],["name/95",[96,43.041]],["parent/95",[3,0.15]],["name/96",[97,43.041]],["parent/96",[3,0.15]],["name/97",[98,43.041]],["parent/97",[0,2.56]],["name/98",[99,43.041]],["parent/98",[0,2.56]],["name/99",[100,43.041]],["parent/99",[0,2.56]],["name/100",[87,37.932]],["parent/100",[0,2.56]],["name/101",[101,43.041]],["parent/101",[102,4.288]],["name/102",[103,43.041]],["parent/102",[104,2.827]],["name/103",[105,43.041]],["parent/103",[104,2.827]],["name/104",[106,43.041]],["parent/104",[104,2.827]],["name/105",[107,43.041]],["parent/105",[104,2.827]],["name/106",[108,43.041]],["parent/106",[104,2.827]],["name/107",[109,43.041]],["parent/107",[104,2.827]],["name/108",[110,43.041]],["parent/108",[0,2.56]],["name/109",[111,43.041]],["parent/109",[0,2.56]]],"invertedIndex":[["__type",{"_index":101,"name":{"101":{}},"parent":{}}],["api",{"_index":0,"name":{"0":{}},"parent":{"1":{},"97":{},"98":{},"99":{},"100":{},"108":{},"109":{}}}],["api\".ethereumapi",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{}}}],["api\".rpc_modules",{"_index":102,"name":{},"parent":{"101":{}}}],["api\".rpc_modules.__type",{"_index":104,"name":{},"parent":{"102":{},"103":{},"104":{},"105":{},"106":{},"107":{}}}],["assertexceptionaltransactions",{"_index":111,"name":{"109":{}},"parent":{}}],["blockchain",{"_index":7,"name":{"6":{}},"parent":{}}],["bzz_hive",{"_index":14,"name":{"13":{}},"parent":{}}],["bzz_info",{"_index":15,"name":{"14":{}},"parent":{}}],["client_version",{"_index":99,"name":{"98":{}},"parent":{}}],["constructor",{"_index":9,"name":{"8":{}},"parent":{}}],["db_gethex",{"_index":13,"name":{"12":{}},"parent":{}}],["db_getstring",{"_index":11,"name":{"10":{}},"parent":{}}],["db_puthex",{"_index":12,"name":{"11":{}},"parent":{}}],["db_putstring",{"_index":10,"name":{"9":{}},"parent":{}}],["debug_storagerangeat",{"_index":80,"name":{"79":{}},"parent":{}}],["debug_tracetransaction",{"_index":79,"name":{"78":{}},"parent":{}}],["eth",{"_index":103,"name":{"102":{}},"parent":{}}],["eth_accounts",{"_index":56,"name":{"55":{}},"parent":{}}],["eth_blocknumber",{"_index":57,"name":{"56":{}},"parent":{}}],["eth_call",{"_index":78,"name":{"77":{}},"parent":{}}],["eth_chainid",{"_index":58,"name":{"57":{}},"parent":{}}],["eth_coinbase",{"_index":38,"name":{"37":{}},"parent":{}}],["eth_estimategas",{"_index":35,"name":{"34":{}},"parent":{}}],["eth_gasprice",{"_index":55,"name":{"54":{}},"parent":{}}],["eth_getbalance",{"_index":59,"name":{"58":{}},"parent":{}}],["eth_getblockbyhash",{"_index":40,"name":{"39":{}},"parent":{}}],["eth_getblockbynumber",{"_index":39,"name":{"38":{}},"parent":{}}],["eth_getblocktransactioncountbyhash",{"_index":42,"name":{"41":{}},"parent":{}}],["eth_getblocktransactioncountbynumber",{"_index":41,"name":{"40":{}},"parent":{}}],["eth_getcode",{"_index":60,"name":{"59":{}},"parent":{}}],["eth_getcompilers",{"_index":43,"name":{"42":{}},"parent":{}}],["eth_getfilterchanges",{"_index":73,"name":{"72":{}},"parent":{}}],["eth_getfilterlogs",{"_index":75,"name":{"74":{}},"parent":{}}],["eth_getlogs",{"_index":76,"name":{"75":{}},"parent":{}}],["eth_getstorageat",{"_index":61,"name":{"60":{}},"parent":{}}],["eth_gettransactionbyblockhashandindex",{"_index":44,"name":{"43":{}},"parent":{}}],["eth_gettransactionbyblocknumberandindex",{"_index":45,"name":{"44":{}},"parent":{}}],["eth_gettransactionbyhash",{"_index":62,"name":{"61":{}},"parent":{}}],["eth_gettransactioncount",{"_index":77,"name":{"76":{}},"parent":{}}],["eth_gettransactionreceipt",{"_index":63,"name":{"62":{}},"parent":{}}],["eth_getunclebyblockhashandindex",{"_index":48,"name":{"47":{}},"parent":{}}],["eth_getunclebyblocknumberandindex",{"_index":49,"name":{"48":{}},"parent":{}}],["eth_getunclecountbyblockhash",{"_index":46,"name":{"45":{}},"parent":{}}],["eth_getunclecountbyblocknumber",{"_index":47,"name":{"46":{}},"parent":{}}],["eth_getwork",{"_index":50,"name":{"49":{}},"parent":{}}],["eth_hashrate",{"_index":54,"name":{"53":{}},"parent":{}}],["eth_mining",{"_index":53,"name":{"52":{}},"parent":{}}],["eth_newblockfilter",{"_index":70,"name":{"69":{}},"parent":{}}],["eth_newfilter",{"_index":72,"name":{"71":{}},"parent":{}}],["eth_newpendingtransactionfilter",{"_index":71,"name":{"70":{}},"parent":{}}],["eth_protocolversion",{"_index":36,"name":{"35":{}},"parent":{}}],["eth_sendrawtransaction",{"_index":65,"name":{"64":{}},"parent":{}}],["eth_sendtransaction",{"_index":64,"name":{"63":{}},"parent":{}}],["eth_sign",{"_index":66,"name":{"65":{}},"parent":{}}],["eth_signtypeddata",{"_index":67,"name":{"66":{}},"parent":{}}],["eth_submithashrate",{"_index":52,"name":{"51":{}},"parent":{}}],["eth_submitwork",{"_index":51,"name":{"50":{}},"parent":{}}],["eth_subscribe",{"_index":68,"name":{"67":{}},"parent":{}}],["eth_syncing",{"_index":37,"name":{"36":{}},"parent":{}}],["eth_uninstallfilter",{"_index":74,"name":{"73":{}},"parent":{}}],["eth_unsubscribe",{"_index":69,"name":{"68":{}},"parent":{}}],["ethereumapi",{"_index":1,"name":{"1":{}},"parent":{}}],["evm",{"_index":108,"name":{"106":{}},"parent":{}}],["evm_increasetime",{"_index":19,"name":{"18":{}},"parent":{}}],["evm_lockunknownaccount",{"_index":24,"name":{"23":{}},"parent":{}}],["evm_mine",{"_index":16,"name":{"15":{}},"parent":{}}],["evm_revert",{"_index":21,"name":{"20":{}},"parent":{}}],["evm_setaccountnonce",{"_index":18,"name":{"17":{}},"parent":{}}],["evm_setstorageat",{"_index":17,"name":{"16":{}},"parent":{}}],["evm_settime",{"_index":20,"name":{"19":{}},"parent":{}}],["evm_snapshot",{"_index":22,"name":{"21":{}},"parent":{}}],["evm_unlockunknownaccount",{"_index":23,"name":{"22":{}},"parent":{}}],["filters",{"_index":4,"name":{"3":{}},"parent":{}}],["getid",{"_index":2,"name":{"2":{}},"parent":{}}],["miner_setetherbase",{"_index":28,"name":{"27":{}},"parent":{}}],["miner_setextra",{"_index":29,"name":{"28":{}},"parent":{}}],["miner_setgasprice",{"_index":27,"name":{"26":{}},"parent":{}}],["miner_start",{"_index":25,"name":{"24":{}},"parent":{}}],["miner_stop",{"_index":26,"name":{"25":{}},"parent":{}}],["net",{"_index":105,"name":{"103":{}},"parent":{}}],["net_listening",{"_index":33,"name":{"32":{}},"parent":{}}],["net_peercount",{"_index":34,"name":{"33":{}},"parent":{}}],["net_version",{"_index":32,"name":{"31":{}},"parent":{}}],["options",{"_index":6,"name":{"5":{}},"parent":{}}],["personal",{"_index":109,"name":{"107":{}},"parent":{}}],["personal_importrawkey",{"_index":83,"name":{"82":{}},"parent":{}}],["personal_listaccounts",{"_index":81,"name":{"80":{}},"parent":{}}],["personal_lockaccount",{"_index":84,"name":{"83":{}},"parent":{}}],["personal_newaccount",{"_index":82,"name":{"81":{}},"parent":{}}],["personal_sendtransaction",{"_index":86,"name":{"85":{}},"parent":{}}],["personal_unlockaccount",{"_index":85,"name":{"84":{}},"parent":{}}],["protocol_version",{"_index":100,"name":{"99":{}},"parent":{}}],["rpc",{"_index":106,"name":{"104":{}},"parent":{}}],["rpc_modules",{"_index":87,"name":{"86":{},"100":{}},"parent":{}}],["shh_addtogroup",{"_index":91,"name":{"90":{}},"parent":{}}],["shh_getfilterchanges",{"_index":94,"name":{"93":{}},"parent":{}}],["shh_getmessages",{"_index":95,"name":{"94":{}},"parent":{}}],["shh_hasidentity",{"_index":89,"name":{"88":{}},"parent":{}}],["shh_newfilter",{"_index":92,"name":{"91":{}},"parent":{}}],["shh_newgroup",{"_index":90,"name":{"89":{}},"parent":{}}],["shh_newidentity",{"_index":88,"name":{"87":{}},"parent":{}}],["shh_post",{"_index":96,"name":{"95":{}},"parent":{}}],["shh_uninstallfilter",{"_index":93,"name":{"92":{}},"parent":{}}],["shh_version",{"_index":97,"name":{"96":{}},"parent":{}}],["subscriptions",{"_index":5,"name":{"4":{}},"parent":{}}],["typeddata",{"_index":110,"name":{"108":{}},"parent":{}}],["version",{"_index":98,"name":{"97":{}},"parent":{}}],["wallet",{"_index":8,"name":{"7":{}},"parent":{}}],["web3",{"_index":107,"name":{"105":{}},"parent":{}}],["web3_clientversion",{"_index":30,"name":{"29":{}},"parent":{}}],["web3_sha3",{"_index":31,"name":{"30":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file +{"kinds":{"1":"Module","32":"Variable","64":"Function","128":"Class","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"\"api\"","url":"modules/_api_.html","classes":"tsd-kind-module"},{"id":1,"kind":128,"name":"EthereumApi","url":"classes/_api_.ethereumapi.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"api\""},{"id":2,"kind":1024,"name":"#getId","url":"classes/_api_.ethereumapi.html#_getid","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":3,"kind":1024,"name":"#filters","url":"classes/_api_.ethereumapi.html#_filters","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":4,"kind":1024,"name":"#subscriptions","url":"classes/_api_.ethereumapi.html#_subscriptions","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":5,"kind":1024,"name":"#options","url":"classes/_api_.ethereumapi.html#_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":6,"kind":1024,"name":"#blockchain","url":"classes/_api_.ethereumapi.html#_blockchain","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":7,"kind":1024,"name":"#wallet","url":"classes/_api_.ethereumapi.html#_wallet","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"api\".EthereumApi"},{"id":8,"kind":512,"name":"constructor","url":"classes/_api_.ethereumapi.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":9,"kind":2048,"name":"db_putString","url":"classes/_api_.ethereumapi.html#db_putstring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":10,"kind":2048,"name":"db_getString","url":"classes/_api_.ethereumapi.html#db_getstring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":11,"kind":2048,"name":"db_putHex","url":"classes/_api_.ethereumapi.html#db_puthex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":12,"kind":2048,"name":"db_getHex","url":"classes/_api_.ethereumapi.html#db_gethex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":13,"kind":2048,"name":"bzz_hive","url":"classes/_api_.ethereumapi.html#bzz_hive","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":14,"kind":2048,"name":"bzz_info","url":"classes/_api_.ethereumapi.html#bzz_info","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":15,"kind":2048,"name":"evm_mine","url":"classes/_api_.ethereumapi.html#evm_mine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":16,"kind":2048,"name":"evm_setStorageAt","url":"classes/_api_.ethereumapi.html#evm_setstorageat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":17,"kind":2048,"name":"evm_setAccountNonce","url":"classes/_api_.ethereumapi.html#evm_setaccountnonce","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":18,"kind":2048,"name":"evm_increaseTime","url":"classes/_api_.ethereumapi.html#evm_increasetime","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":19,"kind":2048,"name":"evm_setTime","url":"classes/_api_.ethereumapi.html#evm_settime","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":20,"kind":2048,"name":"evm_revert","url":"classes/_api_.ethereumapi.html#evm_revert","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":21,"kind":2048,"name":"evm_snapshot","url":"classes/_api_.ethereumapi.html#evm_snapshot","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":22,"kind":2048,"name":"evm_unlockUnknownAccount","url":"classes/_api_.ethereumapi.html#evm_unlockunknownaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":23,"kind":2048,"name":"evm_lockUnknownAccount","url":"classes/_api_.ethereumapi.html#evm_lockunknownaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":24,"kind":2048,"name":"miner_start","url":"classes/_api_.ethereumapi.html#miner_start","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":25,"kind":2048,"name":"miner_stop","url":"classes/_api_.ethereumapi.html#miner_stop","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":26,"kind":2048,"name":"miner_setGasPrice","url":"classes/_api_.ethereumapi.html#miner_setgasprice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":27,"kind":2048,"name":"miner_setEtherbase","url":"classes/_api_.ethereumapi.html#miner_setetherbase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":28,"kind":2048,"name":"miner_setExtra","url":"classes/_api_.ethereumapi.html#miner_setextra","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":29,"kind":2048,"name":"web3_clientVersion","url":"classes/_api_.ethereumapi.html#web3_clientversion","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":30,"kind":2048,"name":"web3_sha3","url":"classes/_api_.ethereumapi.html#web3_sha3","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":31,"kind":2048,"name":"net_version","url":"classes/_api_.ethereumapi.html#net_version","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":32,"kind":2048,"name":"net_listening","url":"classes/_api_.ethereumapi.html#net_listening","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":33,"kind":2048,"name":"net_peerCount","url":"classes/_api_.ethereumapi.html#net_peercount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":34,"kind":2048,"name":"eth_estimateGas","url":"classes/_api_.ethereumapi.html#eth_estimategas","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":35,"kind":2048,"name":"eth_protocolVersion","url":"classes/_api_.ethereumapi.html#eth_protocolversion","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":36,"kind":2048,"name":"eth_syncing","url":"classes/_api_.ethereumapi.html#eth_syncing","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":37,"kind":2048,"name":"eth_coinbase","url":"classes/_api_.ethereumapi.html#eth_coinbase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":38,"kind":2048,"name":"eth_getBlockByNumber","url":"classes/_api_.ethereumapi.html#eth_getblockbynumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":39,"kind":2048,"name":"eth_getBlockByHash","url":"classes/_api_.ethereumapi.html#eth_getblockbyhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":40,"kind":2048,"name":"eth_getBlockTransactionCountByNumber","url":"classes/_api_.ethereumapi.html#eth_getblocktransactioncountbynumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":41,"kind":2048,"name":"eth_getBlockTransactionCountByHash","url":"classes/_api_.ethereumapi.html#eth_getblocktransactioncountbyhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":42,"kind":2048,"name":"eth_getCompilers","url":"classes/_api_.ethereumapi.html#eth_getcompilers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":43,"kind":2048,"name":"eth_getTransactionByBlockHashAndIndex","url":"classes/_api_.ethereumapi.html#eth_gettransactionbyblockhashandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":44,"kind":2048,"name":"eth_getTransactionByBlockNumberAndIndex","url":"classes/_api_.ethereumapi.html#eth_gettransactionbyblocknumberandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":45,"kind":2048,"name":"eth_getUncleCountByBlockHash","url":"classes/_api_.ethereumapi.html#eth_getunclecountbyblockhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":46,"kind":2048,"name":"eth_getUncleCountByBlockNumber","url":"classes/_api_.ethereumapi.html#eth_getunclecountbyblocknumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":47,"kind":2048,"name":"eth_getUncleByBlockHashAndIndex","url":"classes/_api_.ethereumapi.html#eth_getunclebyblockhashandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":48,"kind":2048,"name":"eth_getUncleByBlockNumberAndIndex","url":"classes/_api_.ethereumapi.html#eth_getunclebyblocknumberandindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":49,"kind":2048,"name":"eth_getWork","url":"classes/_api_.ethereumapi.html#eth_getwork","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":50,"kind":2048,"name":"eth_submitWork","url":"classes/_api_.ethereumapi.html#eth_submitwork","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":51,"kind":2048,"name":"eth_submitHashrate","url":"classes/_api_.ethereumapi.html#eth_submithashrate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":52,"kind":2048,"name":"eth_mining","url":"classes/_api_.ethereumapi.html#eth_mining","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":53,"kind":2048,"name":"eth_hashrate","url":"classes/_api_.ethereumapi.html#eth_hashrate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":54,"kind":2048,"name":"eth_gasPrice","url":"classes/_api_.ethereumapi.html#eth_gasprice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":55,"kind":2048,"name":"eth_accounts","url":"classes/_api_.ethereumapi.html#eth_accounts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":56,"kind":2048,"name":"eth_blockNumber","url":"classes/_api_.ethereumapi.html#eth_blocknumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":57,"kind":2048,"name":"eth_chainId","url":"classes/_api_.ethereumapi.html#eth_chainid","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":58,"kind":2048,"name":"eth_getBalance","url":"classes/_api_.ethereumapi.html#eth_getbalance","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":59,"kind":2048,"name":"eth_getCode","url":"classes/_api_.ethereumapi.html#eth_getcode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":60,"kind":2048,"name":"eth_getStorageAt","url":"classes/_api_.ethereumapi.html#eth_getstorageat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":61,"kind":2048,"name":"eth_getTransactionByHash","url":"classes/_api_.ethereumapi.html#eth_gettransactionbyhash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":62,"kind":2048,"name":"eth_getTransactionReceipt","url":"classes/_api_.ethereumapi.html#eth_gettransactionreceipt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":63,"kind":2048,"name":"eth_sendTransaction","url":"classes/_api_.ethereumapi.html#eth_sendtransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":64,"kind":2048,"name":"eth_sendRawTransaction","url":"classes/_api_.ethereumapi.html#eth_sendrawtransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":65,"kind":2048,"name":"eth_sign","url":"classes/_api_.ethereumapi.html#eth_sign","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":66,"kind":2048,"name":"eth_signTypedData","url":"classes/_api_.ethereumapi.html#eth_signtypeddata","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":67,"kind":2048,"name":"eth_subscribe","url":"classes/_api_.ethereumapi.html#eth_subscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":68,"kind":2048,"name":"eth_unsubscribe","url":"classes/_api_.ethereumapi.html#eth_unsubscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":69,"kind":2048,"name":"eth_newBlockFilter","url":"classes/_api_.ethereumapi.html#eth_newblockfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":70,"kind":2048,"name":"eth_newPendingTransactionFilter","url":"classes/_api_.ethereumapi.html#eth_newpendingtransactionfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":71,"kind":2048,"name":"eth_newFilter","url":"classes/_api_.ethereumapi.html#eth_newfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":72,"kind":2048,"name":"eth_getFilterChanges","url":"classes/_api_.ethereumapi.html#eth_getfilterchanges","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":73,"kind":2048,"name":"eth_uninstallFilter","url":"classes/_api_.ethereumapi.html#eth_uninstallfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":74,"kind":2048,"name":"eth_getFilterLogs","url":"classes/_api_.ethereumapi.html#eth_getfilterlogs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":75,"kind":2048,"name":"eth_getLogs","url":"classes/_api_.ethereumapi.html#eth_getlogs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":76,"kind":2048,"name":"eth_getTransactionCount","url":"classes/_api_.ethereumapi.html#eth_gettransactioncount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":77,"kind":2048,"name":"eth_call","url":"classes/_api_.ethereumapi.html#eth_call","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":78,"kind":2048,"name":"debug_traceTransaction","url":"classes/_api_.ethereumapi.html#debug_tracetransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":79,"kind":2048,"name":"debug_storageRangeAt","url":"classes/_api_.ethereumapi.html#debug_storagerangeat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":80,"kind":2048,"name":"personal_listAccounts","url":"classes/_api_.ethereumapi.html#personal_listaccounts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":81,"kind":2048,"name":"personal_newAccount","url":"classes/_api_.ethereumapi.html#personal_newaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":82,"kind":2048,"name":"personal_importRawKey","url":"classes/_api_.ethereumapi.html#personal_importrawkey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":83,"kind":2048,"name":"personal_lockAccount","url":"classes/_api_.ethereumapi.html#personal_lockaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":84,"kind":2048,"name":"personal_unlockAccount","url":"classes/_api_.ethereumapi.html#personal_unlockaccount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":85,"kind":2048,"name":"personal_sendTransaction","url":"classes/_api_.ethereumapi.html#personal_sendtransaction","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":86,"kind":2048,"name":"rpc_modules","url":"classes/_api_.ethereumapi.html#rpc_modules","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":87,"kind":2048,"name":"shh_newIdentity","url":"classes/_api_.ethereumapi.html#shh_newidentity","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":88,"kind":2048,"name":"shh_hasIdentity","url":"classes/_api_.ethereumapi.html#shh_hasidentity","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":89,"kind":2048,"name":"shh_newGroup","url":"classes/_api_.ethereumapi.html#shh_newgroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":90,"kind":2048,"name":"shh_addToGroup","url":"classes/_api_.ethereumapi.html#shh_addtogroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":91,"kind":2048,"name":"shh_newFilter","url":"classes/_api_.ethereumapi.html#shh_newfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":92,"kind":2048,"name":"shh_uninstallFilter","url":"classes/_api_.ethereumapi.html#shh_uninstallfilter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":93,"kind":2048,"name":"shh_getFilterChanges","url":"classes/_api_.ethereumapi.html#shh_getfilterchanges","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":94,"kind":2048,"name":"shh_getMessages","url":"classes/_api_.ethereumapi.html#shh_getmessages","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":95,"kind":2048,"name":"shh_post","url":"classes/_api_.ethereumapi.html#shh_post","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":96,"kind":2048,"name":"shh_version","url":"classes/_api_.ethereumapi.html#shh_version","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"api\".EthereumApi"},{"id":97,"kind":32,"name":"version","url":"modules/_api_.html#version","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":98,"kind":32,"name":"CLIENT_VERSION","url":"modules/_api_.html#client_version","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":99,"kind":32,"name":"PROTOCOL_VERSION","url":"modules/_api_.html#protocol_version","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":100,"kind":32,"name":"RPC_MODULES","url":"modules/_api_.html#rpc_modules","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":101,"kind":65536,"name":"__type","url":"modules/_api_.html#rpc_modules.__type","classes":"tsd-kind-type-literal tsd-parent-kind-variable tsd-is-not-exported","parent":"\"api\".RPC_MODULES"},{"id":102,"kind":32,"name":"eth","url":"modules/_api_.html#rpc_modules.__type.eth","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":103,"kind":32,"name":"net","url":"modules/_api_.html#rpc_modules.__type.net","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":104,"kind":32,"name":"rpc","url":"modules/_api_.html#rpc_modules.__type.rpc","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":105,"kind":32,"name":"web3","url":"modules/_api_.html#rpc_modules.__type.web3","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":106,"kind":32,"name":"evm","url":"modules/_api_.html#rpc_modules.__type.evm","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":107,"kind":32,"name":"personal","url":"modules/_api_.html#rpc_modules.__type.personal","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"api\".RPC_MODULES.__type"},{"id":108,"kind":4194304,"name":"TypedData","url":"modules/_api_.html#typeddata","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""},{"id":109,"kind":64,"name":"assertExceptionalTransactions","url":"modules/_api_.html#assertexceptionaltransactions","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"api\""}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,25.695]],["parent/0",[]],["name/1",[1,43.041]],["parent/1",[0,2.56]],["name/2",[2,43.041]],["parent/2",[3,0.15]],["name/3",[4,43.041]],["parent/3",[3,0.15]],["name/4",[5,43.041]],["parent/4",[3,0.15]],["name/5",[6,43.041]],["parent/5",[3,0.15]],["name/6",[7,43.041]],["parent/6",[3,0.15]],["name/7",[8,43.041]],["parent/7",[3,0.15]],["name/8",[9,43.041]],["parent/8",[3,0.15]],["name/9",[10,43.041]],["parent/9",[3,0.15]],["name/10",[11,43.041]],["parent/10",[3,0.15]],["name/11",[12,43.041]],["parent/11",[3,0.15]],["name/12",[13,43.041]],["parent/12",[3,0.15]],["name/13",[14,43.041]],["parent/13",[3,0.15]],["name/14",[15,43.041]],["parent/14",[3,0.15]],["name/15",[16,43.041]],["parent/15",[3,0.15]],["name/16",[17,43.041]],["parent/16",[3,0.15]],["name/17",[18,43.041]],["parent/17",[3,0.15]],["name/18",[19,43.041]],["parent/18",[3,0.15]],["name/19",[20,43.041]],["parent/19",[3,0.15]],["name/20",[21,43.041]],["parent/20",[3,0.15]],["name/21",[22,43.041]],["parent/21",[3,0.15]],["name/22",[23,43.041]],["parent/22",[3,0.15]],["name/23",[24,43.041]],["parent/23",[3,0.15]],["name/24",[25,43.041]],["parent/24",[3,0.15]],["name/25",[26,43.041]],["parent/25",[3,0.15]],["name/26",[27,43.041]],["parent/26",[3,0.15]],["name/27",[28,43.041]],["parent/27",[3,0.15]],["name/28",[29,43.041]],["parent/28",[3,0.15]],["name/29",[30,43.041]],["parent/29",[3,0.15]],["name/30",[31,43.041]],["parent/30",[3,0.15]],["name/31",[32,43.041]],["parent/31",[3,0.15]],["name/32",[33,43.041]],["parent/32",[3,0.15]],["name/33",[34,43.041]],["parent/33",[3,0.15]],["name/34",[35,43.041]],["parent/34",[3,0.15]],["name/35",[36,43.041]],["parent/35",[3,0.15]],["name/36",[37,43.041]],["parent/36",[3,0.15]],["name/37",[38,43.041]],["parent/37",[3,0.15]],["name/38",[39,43.041]],["parent/38",[3,0.15]],["name/39",[40,43.041]],["parent/39",[3,0.15]],["name/40",[41,43.041]],["parent/40",[3,0.15]],["name/41",[42,43.041]],["parent/41",[3,0.15]],["name/42",[43,43.041]],["parent/42",[3,0.15]],["name/43",[44,43.041]],["parent/43",[3,0.15]],["name/44",[45,43.041]],["parent/44",[3,0.15]],["name/45",[46,43.041]],["parent/45",[3,0.15]],["name/46",[47,43.041]],["parent/46",[3,0.15]],["name/47",[48,43.041]],["parent/47",[3,0.15]],["name/48",[49,43.041]],["parent/48",[3,0.15]],["name/49",[50,43.041]],["parent/49",[3,0.15]],["name/50",[51,43.041]],["parent/50",[3,0.15]],["name/51",[52,43.041]],["parent/51",[3,0.15]],["name/52",[53,43.041]],["parent/52",[3,0.15]],["name/53",[54,43.041]],["parent/53",[3,0.15]],["name/54",[55,43.041]],["parent/54",[3,0.15]],["name/55",[56,43.041]],["parent/55",[3,0.15]],["name/56",[57,43.041]],["parent/56",[3,0.15]],["name/57",[58,43.041]],["parent/57",[3,0.15]],["name/58",[59,43.041]],["parent/58",[3,0.15]],["name/59",[60,43.041]],["parent/59",[3,0.15]],["name/60",[61,43.041]],["parent/60",[3,0.15]],["name/61",[62,43.041]],["parent/61",[3,0.15]],["name/62",[63,43.041]],["parent/62",[3,0.15]],["name/63",[64,43.041]],["parent/63",[3,0.15]],["name/64",[65,43.041]],["parent/64",[3,0.15]],["name/65",[66,43.041]],["parent/65",[3,0.15]],["name/66",[67,43.041]],["parent/66",[3,0.15]],["name/67",[68,43.041]],["parent/67",[3,0.15]],["name/68",[69,43.041]],["parent/68",[3,0.15]],["name/69",[70,43.041]],["parent/69",[3,0.15]],["name/70",[71,43.041]],["parent/70",[3,0.15]],["name/71",[72,43.041]],["parent/71",[3,0.15]],["name/72",[73,43.041]],["parent/72",[3,0.15]],["name/73",[74,43.041]],["parent/73",[3,0.15]],["name/74",[75,43.041]],["parent/74",[3,0.15]],["name/75",[76,43.041]],["parent/75",[3,0.15]],["name/76",[77,43.041]],["parent/76",[3,0.15]],["name/77",[78,43.041]],["parent/77",[3,0.15]],["name/78",[79,43.041]],["parent/78",[3,0.15]],["name/79",[80,43.041]],["parent/79",[3,0.15]],["name/80",[81,43.041]],["parent/80",[3,0.15]],["name/81",[82,43.041]],["parent/81",[3,0.15]],["name/82",[83,43.041]],["parent/82",[3,0.15]],["name/83",[84,43.041]],["parent/83",[3,0.15]],["name/84",[85,43.041]],["parent/84",[3,0.15]],["name/85",[86,43.041]],["parent/85",[3,0.15]],["name/86",[87,37.932]],["parent/86",[3,0.15]],["name/87",[88,43.041]],["parent/87",[3,0.15]],["name/88",[89,43.041]],["parent/88",[3,0.15]],["name/89",[90,43.041]],["parent/89",[3,0.15]],["name/90",[91,43.041]],["parent/90",[3,0.15]],["name/91",[92,43.041]],["parent/91",[3,0.15]],["name/92",[93,43.041]],["parent/92",[3,0.15]],["name/93",[94,43.041]],["parent/93",[3,0.15]],["name/94",[95,43.041]],["parent/94",[3,0.15]],["name/95",[96,43.041]],["parent/95",[3,0.15]],["name/96",[97,43.041]],["parent/96",[3,0.15]],["name/97",[98,43.041]],["parent/97",[0,2.56]],["name/98",[99,43.041]],["parent/98",[0,2.56]],["name/99",[100,43.041]],["parent/99",[0,2.56]],["name/100",[87,37.932]],["parent/100",[0,2.56]],["name/101",[101,43.041]],["parent/101",[102,4.288]],["name/102",[103,43.041]],["parent/102",[104,2.827]],["name/103",[105,43.041]],["parent/103",[104,2.827]],["name/104",[106,43.041]],["parent/104",[104,2.827]],["name/105",[107,43.041]],["parent/105",[104,2.827]],["name/106",[108,43.041]],["parent/106",[104,2.827]],["name/107",[109,43.041]],["parent/107",[104,2.827]],["name/108",[110,43.041]],["parent/108",[0,2.56]],["name/109",[111,43.041]],["parent/109",[0,2.56]]],"invertedIndex":[["__type",{"_index":101,"name":{"101":{}},"parent":{}}],["api",{"_index":0,"name":{"0":{}},"parent":{"1":{},"97":{},"98":{},"99":{},"100":{},"108":{},"109":{}}}],["api\".ethereumapi",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{}}}],["api\".rpc_modules",{"_index":102,"name":{},"parent":{"101":{}}}],["api\".rpc_modules.__type",{"_index":104,"name":{},"parent":{"102":{},"103":{},"104":{},"105":{},"106":{},"107":{}}}],["assertexceptionaltransactions",{"_index":111,"name":{"109":{}},"parent":{}}],["blockchain",{"_index":7,"name":{"6":{}},"parent":{}}],["bzz_hive",{"_index":14,"name":{"13":{}},"parent":{}}],["bzz_info",{"_index":15,"name":{"14":{}},"parent":{}}],["client_version",{"_index":99,"name":{"98":{}},"parent":{}}],["constructor",{"_index":9,"name":{"8":{}},"parent":{}}],["db_gethex",{"_index":13,"name":{"12":{}},"parent":{}}],["db_getstring",{"_index":11,"name":{"10":{}},"parent":{}}],["db_puthex",{"_index":12,"name":{"11":{}},"parent":{}}],["db_putstring",{"_index":10,"name":{"9":{}},"parent":{}}],["debug_storagerangeat",{"_index":80,"name":{"79":{}},"parent":{}}],["debug_tracetransaction",{"_index":79,"name":{"78":{}},"parent":{}}],["eth",{"_index":103,"name":{"102":{}},"parent":{}}],["eth_accounts",{"_index":56,"name":{"55":{}},"parent":{}}],["eth_blocknumber",{"_index":57,"name":{"56":{}},"parent":{}}],["eth_call",{"_index":78,"name":{"77":{}},"parent":{}}],["eth_chainid",{"_index":58,"name":{"57":{}},"parent":{}}],["eth_coinbase",{"_index":38,"name":{"37":{}},"parent":{}}],["eth_estimategas",{"_index":35,"name":{"34":{}},"parent":{}}],["eth_gasprice",{"_index":55,"name":{"54":{}},"parent":{}}],["eth_getbalance",{"_index":59,"name":{"58":{}},"parent":{}}],["eth_getblockbyhash",{"_index":40,"name":{"39":{}},"parent":{}}],["eth_getblockbynumber",{"_index":39,"name":{"38":{}},"parent":{}}],["eth_getblocktransactioncountbyhash",{"_index":42,"name":{"41":{}},"parent":{}}],["eth_getblocktransactioncountbynumber",{"_index":41,"name":{"40":{}},"parent":{}}],["eth_getcode",{"_index":60,"name":{"59":{}},"parent":{}}],["eth_getcompilers",{"_index":43,"name":{"42":{}},"parent":{}}],["eth_getfilterchanges",{"_index":73,"name":{"72":{}},"parent":{}}],["eth_getfilterlogs",{"_index":75,"name":{"74":{}},"parent":{}}],["eth_getlogs",{"_index":76,"name":{"75":{}},"parent":{}}],["eth_getstorageat",{"_index":61,"name":{"60":{}},"parent":{}}],["eth_gettransactionbyblockhashandindex",{"_index":44,"name":{"43":{}},"parent":{}}],["eth_gettransactionbyblocknumberandindex",{"_index":45,"name":{"44":{}},"parent":{}}],["eth_gettransactionbyhash",{"_index":62,"name":{"61":{}},"parent":{}}],["eth_gettransactioncount",{"_index":77,"name":{"76":{}},"parent":{}}],["eth_gettransactionreceipt",{"_index":63,"name":{"62":{}},"parent":{}}],["eth_getunclebyblockhashandindex",{"_index":48,"name":{"47":{}},"parent":{}}],["eth_getunclebyblocknumberandindex",{"_index":49,"name":{"48":{}},"parent":{}}],["eth_getunclecountbyblockhash",{"_index":46,"name":{"45":{}},"parent":{}}],["eth_getunclecountbyblocknumber",{"_index":47,"name":{"46":{}},"parent":{}}],["eth_getwork",{"_index":50,"name":{"49":{}},"parent":{}}],["eth_hashrate",{"_index":54,"name":{"53":{}},"parent":{}}],["eth_mining",{"_index":53,"name":{"52":{}},"parent":{}}],["eth_newblockfilter",{"_index":70,"name":{"69":{}},"parent":{}}],["eth_newfilter",{"_index":72,"name":{"71":{}},"parent":{}}],["eth_newpendingtransactionfilter",{"_index":71,"name":{"70":{}},"parent":{}}],["eth_protocolversion",{"_index":36,"name":{"35":{}},"parent":{}}],["eth_sendrawtransaction",{"_index":65,"name":{"64":{}},"parent":{}}],["eth_sendtransaction",{"_index":64,"name":{"63":{}},"parent":{}}],["eth_sign",{"_index":66,"name":{"65":{}},"parent":{}}],["eth_signtypeddata",{"_index":67,"name":{"66":{}},"parent":{}}],["eth_submithashrate",{"_index":52,"name":{"51":{}},"parent":{}}],["eth_submitwork",{"_index":51,"name":{"50":{}},"parent":{}}],["eth_subscribe",{"_index":68,"name":{"67":{}},"parent":{}}],["eth_syncing",{"_index":37,"name":{"36":{}},"parent":{}}],["eth_uninstallfilter",{"_index":74,"name":{"73":{}},"parent":{}}],["eth_unsubscribe",{"_index":69,"name":{"68":{}},"parent":{}}],["ethereumapi",{"_index":1,"name":{"1":{}},"parent":{}}],["evm",{"_index":108,"name":{"106":{}},"parent":{}}],["evm_increasetime",{"_index":19,"name":{"18":{}},"parent":{}}],["evm_lockunknownaccount",{"_index":24,"name":{"23":{}},"parent":{}}],["evm_mine",{"_index":16,"name":{"15":{}},"parent":{}}],["evm_revert",{"_index":21,"name":{"20":{}},"parent":{}}],["evm_setaccountnonce",{"_index":18,"name":{"17":{}},"parent":{}}],["evm_setstorageat",{"_index":17,"name":{"16":{}},"parent":{}}],["evm_settime",{"_index":20,"name":{"19":{}},"parent":{}}],["evm_snapshot",{"_index":22,"name":{"21":{}},"parent":{}}],["evm_unlockunknownaccount",{"_index":23,"name":{"22":{}},"parent":{}}],["filters",{"_index":4,"name":{"3":{}},"parent":{}}],["getid",{"_index":2,"name":{"2":{}},"parent":{}}],["miner_setetherbase",{"_index":28,"name":{"27":{}},"parent":{}}],["miner_setextra",{"_index":29,"name":{"28":{}},"parent":{}}],["miner_setgasprice",{"_index":27,"name":{"26":{}},"parent":{}}],["miner_start",{"_index":25,"name":{"24":{}},"parent":{}}],["miner_stop",{"_index":26,"name":{"25":{}},"parent":{}}],["net",{"_index":105,"name":{"103":{}},"parent":{}}],["net_listening",{"_index":33,"name":{"32":{}},"parent":{}}],["net_peercount",{"_index":34,"name":{"33":{}},"parent":{}}],["net_version",{"_index":32,"name":{"31":{}},"parent":{}}],["options",{"_index":6,"name":{"5":{}},"parent":{}}],["personal",{"_index":109,"name":{"107":{}},"parent":{}}],["personal_importrawkey",{"_index":83,"name":{"82":{}},"parent":{}}],["personal_listaccounts",{"_index":81,"name":{"80":{}},"parent":{}}],["personal_lockaccount",{"_index":84,"name":{"83":{}},"parent":{}}],["personal_newaccount",{"_index":82,"name":{"81":{}},"parent":{}}],["personal_sendtransaction",{"_index":86,"name":{"85":{}},"parent":{}}],["personal_unlockaccount",{"_index":85,"name":{"84":{}},"parent":{}}],["protocol_version",{"_index":100,"name":{"99":{}},"parent":{}}],["rpc",{"_index":106,"name":{"104":{}},"parent":{}}],["rpc_modules",{"_index":87,"name":{"86":{},"100":{}},"parent":{}}],["shh_addtogroup",{"_index":91,"name":{"90":{}},"parent":{}}],["shh_getfilterchanges",{"_index":94,"name":{"93":{}},"parent":{}}],["shh_getmessages",{"_index":95,"name":{"94":{}},"parent":{}}],["shh_hasidentity",{"_index":89,"name":{"88":{}},"parent":{}}],["shh_newfilter",{"_index":92,"name":{"91":{}},"parent":{}}],["shh_newgroup",{"_index":90,"name":{"89":{}},"parent":{}}],["shh_newidentity",{"_index":88,"name":{"87":{}},"parent":{}}],["shh_post",{"_index":96,"name":{"95":{}},"parent":{}}],["shh_uninstallfilter",{"_index":93,"name":{"92":{}},"parent":{}}],["shh_version",{"_index":97,"name":{"96":{}},"parent":{}}],["subscriptions",{"_index":5,"name":{"4":{}},"parent":{}}],["typeddata",{"_index":110,"name":{"108":{}},"parent":{}}],["version",{"_index":98,"name":{"97":{}},"parent":{}}],["wallet",{"_index":8,"name":{"7":{}},"parent":{}}],["web3",{"_index":107,"name":{"105":{}},"parent":{}}],["web3_clientversion",{"_index":30,"name":{"29":{}},"parent":{}}],["web3_sha3",{"_index":31,"name":{"30":{}},"parent":{}}]],"pipeline":[]}} diff --git a/docs/typedoc/classes/_api_.ethereumapi.html b/docs/typedoc/classes/_api_.ethereumapi.html index 78779747ac..dfc1ce3107 100644 --- a/docs/typedoc/classes/_api_.ethereumapi.html +++ b/docs/typedoc/classes/_api_.ethereumapi.html @@ -172,6 +172,7 @@

Methods

  • eth_sendRawTransaction
  • eth_sendTransaction
  • eth_sign
  • +
  • eth_signTransaction
  • eth_signTypedData
  • eth_submitHashrate
  • eth_submitWork
  • @@ -184,7 +185,6 @@

    Methods

  • evm_mine
  • evm_revert
  • evm_setAccountNonce
  • -
  • evm_setStorageAt
  • evm_setTime
  • evm_snapshot
  • evm_unlockUnknownAccount
  • @@ -201,6 +201,7 @@

    Methods

  • personal_lockAccount
  • personal_newAccount
  • personal_sendTransaction
  • +
  • personal_signTransaction
  • personal_unlockAccount
  • rpc_modules
  • shh_addToGroup
  • @@ -337,7 +338,18 @@

    bzz_hive

  • Defined in chains/ethereum/ethereum/src/api.ts:189
  • +
    +
    +

    Returns the kademlia table in a readable table format.

    +
    +
    +
    example
    +
    console.log(await provider.send("bzz_hive"));
    +
    +
    +

    Returns Promise<any[]>

    +

    Returns the kademlia table in a readable table format.

    @@ -354,7 +366,18 @@

    bzz_info

  • Defined in chains/ethereum/ethereum/src/api.ts:194
  • +
    +
    +

    Returns details about the swarm node.

    +
    +
    +
    example
    +
    console.log(await provider.send("bzz_info"));
    +
    +
    +

    Returns Promise<any[]>

    +

    Returns details about the swarm node.

    @@ -373,8 +396,13 @@

    db_getHex

    -

    Returns binary data from the local database

    +

    Returns binary data from the local database.

    +
    +
    example
    +
    console.log(await provider.send("db_getHex", ["testDb", "testKey"] ));
    +
    +

    Parameters

      @@ -411,8 +439,13 @@

      db_getString

      -

      Returns string from the local database

      +

      Returns string from the local database.

      +
      +
      example
      +
      console.log(await provider.send("db_getString", ["testDb", "testKey"] ));
      +
      +

      Parameters

        @@ -438,7 +471,7 @@

        Returns Promise

        db_putHex

          -
        • db_putHex(dbName: string, key: string, data: string): Promise<boolean>
        • +
        • db_putHex(dbName: string, key: string, data: DATA): Promise<boolean>
        • @@ -451,6 +484,11 @@

          db_putHex

          Stores binary data in the local database.

          +
          +
          example
          +
          console.log(await provider.send("db_putHex", ["testDb", "testKey", "0x0"] ));
          +
          +

          Parameters

            @@ -467,14 +505,14 @@
            key: string
          • -
            data: string
            +
            data: DATA

            Data to store.

          Returns Promise<boolean>

          -

          true if the value was stored, otherwise false.

          +

          true if the value was stored, otherwise false.

        @@ -495,6 +533,11 @@

        db_putString

        Stores a string in the local database.

        +
        +
        example
        +
        console.log(await provider.send("db_putString", ["testDb", "testKey", "testValue"] ));
        +
        +

        Parameters

          @@ -518,7 +561,7 @@
          value: string

        Returns Promise<boolean>

        -

        returns true if the value was stored, otherwise false.

        +

        Returns true if the value was stored, otherwise false.

      @@ -540,29 +583,59 @@

      debug_storageRangeAt

      Attempts to replay the transaction as it was executed on the network and return storage data given a starting key and max number of entries to return.

      +
      +
      example
      +
      // Simple.sol
      +// // SPDX-License-Identifier: MIT
      +//  pragma solidity ^0.7.4;
      +//
      +//  contract Simple {
      +//      uint256 public value;
      +//      constructor() payable {
      +//          value = 5;
      +//      }
      +//  }
      +const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033";
      +const [from] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const initialTxHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +
      +const {contractAddress} = await provider.request({ method: "eth_getTransactionReceipt", params: [initialTxHash] });
      +
      +// set value to 19
      +const data = "0x552410770000000000000000000000000000000000000000000000000000000000000019";
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to: contractAddress, data }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +
      +const { blockHash, transactionIndex } = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
      +const storage = await provider.request({ method: "debug_storageRangeAt", params: [blockHash, transactionIndex, contractAddress, "0x01", 1] });
      +console.log(storage);
      +
      +

      Parameters

      • -
        blockHash: string | Buffer
        +
        blockHash: DATA
        -

        DATA, 32 Bytes - hash of a block

        +

        Hash of a block.

      • transactionIndex: number
        -

        QUANTITY - the index of the transaction in the block

        +

        Integer of the transaction index position.

      • -
        contractAddress: string
        +
        contractAddress: DATA
        -

        DATA, 20 Bytes - address of the contract

        +

        Address of the contract.

      • -
        startKey: string | Buffer
        +
        startKey: DATA

        hash of the start key for grabbing storage entries

        @@ -570,7 +643,7 @@
        startKey: stringnumber
        -

        integer of maximum number of storage entries to return

        +

        Integer of maximum number of storage entries to return.

      @@ -585,7 +658,7 @@

      Returns Promise

      debug_traceTransaction

        -
      • debug_traceTransaction(transactionHash: string, options?: TransactionTraceOptions): Promise<object>
      • +
      • debug_traceTransaction(transactionHash: DATA, options?: TransactionTraceOptions): Promise<TraceTransactionResult>
      • @@ -646,8 +719,20 @@
        Optional options:
      -

      Returns Promise<object>

      -

      returns comment

      +

      Returns Promise<TraceTransactionResult>

      +

      Returns the gas, structLogs, and returnValue for the traced transaction.

      +

      The structLogs are an array of logs, which contains the following fields:

      +
        +
      • depth: The execution depth.
      • +
      • error: Information about an error, if one occurred.
      • +
      • gas: The number of gas remaining.
      • +
      • gasCost: The cost of gas in wei.
      • +
      • memory: An array containing the contract's memory data.
      • +
      • op: The current opcode.
      • +
      • pc: The current program counter.
      • +
      • stack: The EVM execution stack.
      • +
      • storage: An object containing the contract's storage data.
      • +

    @@ -668,6 +753,12 @@

    eth_accounts

    Returns a list of addresses owned by client.

    +
    +
    example
    +
    const accounts = await provider.request({ method: "eth_accounts", params: [] });
    +console.log(accounts);
    +
    +

    Returns Promise<string[]>

    Array of 20 Bytes - addresses owned by the client.

    @@ -691,9 +782,15 @@

    eth_blockNumber

    Returns the number of the most recent block.

    +
    +
    example
    +
    const blockNumber = await provider.request({ method: "eth_blockNumber" });
    +console.log(blockNumber);
    +
    +

    Returns Promise<Quantity>

    -

    integer of the current block number the client is on.

    +

    The current block number the client is on.

    @@ -701,7 +798,7 @@

    Returns Promise

    eth_call

      -
    • eth_call(transaction: any, blockNumber?: string | Buffer | Tag): Promise<Data>
    • +
    • eth_call(transaction: any, blockNumber?: QUANTITY | Tag): Promise<Data>
    • @@ -714,6 +811,34 @@

      eth_call

      Executes a new message call immediately without creating a transaction on the block chain.

      +

      Transaction call object:

      +
        +
      • from: DATA, 20 bytes (optional) - The address the transaction is sent from.
      • +
      • to: DATA, 20 bytes - The address the transaction is sent to.
      • +
      • gas: QUANTITY (optional) - Integer of the maximum gas allowance for the transaction.
      • +
      • gasPrice: QUANTITY (optional) - Integer of the price of gas in wei.
      • +
      • value: QUANTITY (optional) - Integer of the value in wei.
      • +
      • data: DATA (optional) - Hash of the method signature and the ABI encoded parameters.
      • +
      +
      +
      example
      +
      // Simple.sol
      +// // SPDX-License-Identifier: MIT
      +//  pragma solidity ^0.7.4;
      +//
      +//  contract Simple {
      +//      uint256 public value;
      +//      constructor() payable {
      +//          value = 5;
      +//      }
      +//  }
      +const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033";
      +const [from] = await provider.request({ method: "eth_accounts", params: [] });
      +const txObj = { from, gas: "0x5b8d80", gasPrice: "0x1dfd14000", value:"0x0", data: simpleSol };
      +const result = await provider.request({ method: "eth_call", params: [txObj, "latest"] });
      +console.log(result);
      +
      +

      Parameters

        @@ -724,14 +849,14 @@
        transaction: any
      • -
        Default value blockNumber: string | Buffer | Tag = Tag.LATEST
        +
        Default value blockNumber: QUANTITY | Tag = Tag.LATEST

        blockNumber

      Returns Promise<Data>

      -

      the return value of executed contract.

      +

      The return value of executed contract.

    @@ -785,9 +910,15 @@

    eth_coinbase

    Returns the client coinbase address.

    +
    +
    example
    +
    const coinbaseAddress = await provider.request({ method: "eth_coinbase" });
    +console.log(coinbaseAddress);
    +
    +

    Returns Promise<Address>

    -

    20 bytes - the current coinbase address.

    +

    The current coinbase address.

    @@ -795,7 +926,7 @@

    Returns Promise

    eth_estimateGas

      -
    • eth_estimateGas(transaction: RpcTransaction, blockNumber?: string | Tag): Promise<Quantity>
    • +
    • eth_estimateGas(transaction: any, blockNumber?: QUANTITY | Tag): Promise<Quantity>
    • @@ -812,10 +943,19 @@

      eth_estimateGas

      amount of gas actually used by the transaction, for a variety of reasons including EVM mechanics and node performance.

      +

      Transaction call object:

      +
        +
      • from: DATA, 20 bytes (optional) - The address the transaction is sent from.
      • +
      • to: DATA, 20 bytes - The address the transaction is sent to.
      • +
      • gas: QUANTITY (optional) - Integer of the maximum gas allowance for the transaction.
      • +
      • gasPrice: QUANTITY (optional) - Integer of the price of gas in wei.
      • +
      • value: QUANTITY (optional) - Integer of the value in wei.
      • +
      • data: DATA (optional) - Hash of the method signature and the ABI encoded parameters.
      • +
      example
      -
      const accounts = await provider.request({ method: "eth_accounts", params: [] });
      -const gasEstimate = await provider.request({ method: "eth_estimateGas", params: [{ from: accounts[0], to: accounts[1] }, "latest" ] });
      +									
      const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
      +const gasEstimate = await provider.request({ method: "eth_estimateGas", params: [{ from, to }, "latest" ] });
       console.log(gasEstimate);
      @@ -823,14 +963,21 @@

      eth_estimateGas

      Parameters

      • -
        transaction: RpcTransaction
        +
        transaction: any
        +
        +

        The transaction call object as seen in source.

        +
      • -
        Default value blockNumber: string | Tag = Tag.LATEST
        +
        Default value blockNumber: QUANTITY | Tag = Tag.LATEST
        +
        +

        Integer block number, or the string "latest", "earliest" + or "pending".

        +

      Returns Promise<Quantity>

      -

      the amount of gas used.

      +

      The amount of gas used.

    @@ -851,9 +998,15 @@

    eth_gasPrice

    Returns the current price per gas in wei.

    +
    +
    example
    +
    const gasPrice = await provider.request({ method: "eth_gasPrice", params: [] });
    +console.log(gasPrice);
    +
    +

    Returns Promise<Quantity>

    -

    integer of the current gas price in wei.

    +

    Integer of the current gas price in wei.

    @@ -874,24 +1027,32 @@

    eth_getBalance

    Returns the balance of the account of given address.

    +
    +
    example
    +
    const accounts = await provider.request({ method: "eth_accounts", params: [] });
    +const balance = await provider.request({ method: "eth_getBalance", params: [accounts[0], "latest"] });
    +console.log(balance);
    +
    +

    Parameters

    • -
      address: string
      +
      address: DATA
      -

      20 Bytes - address to check for balance.

      +

      Address to check for balance.

    • Default value blockNumber: string | Buffer | Tag = Tag.LATEST
      -

      integer block number, or the string "latest", "earliest" - or "pending", see the default block parameter

      +

      Integer block number, or the string "latest", "earliest" + or "pending".

    Returns Promise<Quantity>

    +

    Integer of the account balance in wei.

    @@ -899,7 +1060,7 @@

    Returns Promise

    eth_getBlockByHash

      -
    • eth_getBlockByHash(hash: string | Buffer, transactions?: boolean): Promise<any>
    • +
    • eth_getBlockByHash(hash: DATA, transactions?: boolean): Promise<any>
    • @@ -912,22 +1073,69 @@

      eth_getBlockByHash

      Returns information about a block by block hash.

      +
      +
      example
      +
      // Simple.sol
      +// // SPDX-License-Identifier: MIT
      +//  pragma solidity ^0.7.4;
      +//
      +//  contract Simple {
      +//      uint256 public value;
      +//      constructor() payable {
      +//          value = 5;
      +//      }
      +//  }
      +const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033";
      +const [from] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
      +const block = await provider.request({ method: "eth_getBlockByHash", params: [txReceipt.blockHash, true] });
      +console.log(block);
      +
      +

      Parameters

      • -
        hash: string | Buffer
        +
        hash: DATA
        +
        +

        Hash of a block.

        +
      • Default value transactions: boolean = false
        -

        Boolean - If true it returns the full transaction objects, if false only the hashes of the +

        If true it returns the full transaction objects, if false only the hashes of the transactions.

      Returns Promise<any>

      -

      Block

      +

      The block, null if the block doesn't exist.

      +
        +
      • hash: DATA, 32 Bytes - Hash of the block. null when pending.
      • +
      • parentHash: DATA, 32 Bytes - Hash of the parent block.
      • +
      • sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block.
      • +
      • miner: DATA, 20 Bytes - Address of the miner.
      • +
      • stateRoot: DATA, 32 Bytes - The root of the state trie of the block.
      • +
      • transactionsRoot: DATA, 32 Bytes - The root of the transaction trie of the block.
      • +
      • receiptsRoot: DATA, 32 Bytes - The root of the receipts trie of the block.
      • +
      • logsBloom: DATA, 256 Bytes - The bloom filter for the logs of the block. null when pending.
      • +
      • difficulty: QUANTITY - Integer of the difficulty of this block.
      • +
      • number: QUANTITY - The block number. null when pending.
      • +
      • gasLimit: QUANTITY - The maximum gas allowed in the block.
      • +
      • gasUsed: QUANTITY - Total gas used by all transactions in the block.
      • +
      • timestamp: QUANTITY - The unix timestamp for when the block was collated.
      • +
      • extraData: DATA - Extra data for the block.
      • +
      • mixHash: DATA, 256 Bytes - Hash identifier for the block.
      • +
      • nonce: DATA, 8 Bytes - Hash of the generated proof-of-work. null when pending.
      • +
      • totalDifficulty: QUANTITY - Integer of the total difficulty of the chain until this block.
      • +
      • size: QUANTITY - Integer the size of the block in bytes.
      • +
      • transactions: Array - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.
      • +
      • uncles: Array - Array of uncle hashes.
      • +
    @@ -935,7 +1143,7 @@

    Returns Promise

    eth_getBlockByNumber

      -
    • eth_getBlockByNumber(number: string | Tag, transactions?: boolean): Promise<any>
    • +
    • eth_getBlockByNumber(number: QUANTITY | Tag, transactions?: boolean): Promise<any>
    • @@ -948,26 +1156,54 @@

      eth_getBlockByNumber

      Returns information about a block by block number.

      +
      +
      example
      +
      const block = await provider.request({ method: "eth_getBlockByNumber", params: ["0x0", false] });
      +console.log(block);
      +
      +

      Parameters

      • -
        number: string | Tag
        +
        number: QUANTITY | Tag
        -

        QUANTITY|TAG - integer of a block number, or the string "earliest", "latest" or "pending", as in the +

        Integer of a block number, or the string "earliest", "latest" or "pending", as in the default block parameter.

      • Default value transactions: boolean = false
        -

        Boolean - If true it returns the full transaction objects, if false only the hashes of the +

        If true it returns the full transaction objects, if false only the hashes of the transactions.

      Returns Promise<any>

      -

      the block, null if the block doesn't exist.

      +

      The block, null if the block doesn't exist.

      +
        +
      • hash: DATA, 32 Bytes - Hash of the block. null when pending.
      • +
      • parentHash: DATA, 32 Bytes - Hash of the parent block.
      • +
      • sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block.
      • +
      • miner: DATA, 20 Bytes - Address of the miner.
      • +
      • stateRoot: DATA, 32 Bytes - The root of the state trie of the block.
      • +
      • transactionsRoot: DATA, 32 Bytes - The root of the transaction trie of the block.
      • +
      • receiptsRoot: DATA, 32 Bytes - The root of the receipts trie of the block.
      • +
      • logsBloom: DATA, 256 Bytes - The bloom filter for the logs of the block. null when pending.
      • +
      • difficulty: QUANTITY - Integer of the difficulty of this block.
      • +
      • number: QUANTITY - The block number. null when pending.
      • +
      • gasLimit: QUANTITY - The maximum gas allowed in the block.
      • +
      • gasUsed: QUANTITY - Total gas used by all transactions in the block.
      • +
      • timestamp: QUANTITY - The unix timestamp for when the block was collated.
      • +
      • extraData: DATA - Extra data for the block.
      • +
      • mixHash: DATA, 256 Bytes - Hash identifier for the block.
      • +
      • nonce: DATA, 8 Bytes - Hash of the generated proof-of-work. null when pending.
      • +
      • totalDifficulty: QUANTITY - Integer of the total difficulty of the chain until this block.
      • +
      • size: QUANTITY - Integer the size of the block in bytes.
      • +
      • transactions: Array - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.
      • +
      • uncles: Array - Array of uncle hashes.
      • +
    @@ -975,7 +1211,7 @@

    Returns Promise

    eth_getBlockTransactionCountByHash

      -
    • eth_getBlockTransactionCountByHash(hash: string | Buffer): Promise<Quantity>
    • +
    • eth_getBlockTransactionCountByHash(hash: DATA): Promise<Quantity>
    • @@ -988,17 +1224,40 @@

      eth_getBlockTransactionCountByHash

      Returns the number of transactions in a block from a block matching the given block hash.

      +
      +
      example
      +
      // Simple.sol
      +// // SPDX-License-Identifier: MIT
      +//  pragma solidity ^0.7.4;
      +//
      +//  contract Simple {
      +//      uint256 public value;
      +//      constructor() payable {
      +//          value = 5;
      +//      }
      +//  }
      +const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033";
      +const [from] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
      +const txCount = await provider.request({ method: "eth_getBlockTransactionCountByHash", params: [txReceipt.blockHash] });
      +console.log(txCount);
      +
      +

      Parameters

      • -
        hash: string | Buffer
        +
        hash: DATA
        -

        DATA, 32 Bytes - hash of a block.

        +

        Hash of a block.

      Returns Promise<Quantity>

      +

      Number of transactions in the block.

    @@ -1006,7 +1265,7 @@

    Returns Promise

    eth_getBlockTransactionCountByNumber

      -
    • eth_getBlockTransactionCountByNumber(blockNumber: string | Tag): Promise<Quantity>
    • +
    • eth_getBlockTransactionCountByNumber(blockNumber: QUANTITY | Tag): Promise<Quantity>
    • @@ -1019,14 +1278,21 @@

      eth_getBlockTransactionCountByNumber

      Returns the number of transactions in a block from a block matching the given block number.

      +
      +
      example
      +
      const txCount = await provider.request({ method: "eth_getBlockTransactionCountByNumber", params: ["0x0"] });
      +console.log(txCount);
      +
      +

      Parameters

      • -
        blockNumber: string | Tag
        +
        blockNumber: QUANTITY | Tag

      Returns Promise<Quantity>

      +

      Integer of the number of transactions in the block.

    @@ -1047,25 +1313,46 @@

    eth_getCode

    Returns code at a given address.

    +
    +
    example
    +
    // Simple.sol
    +// // SPDX-License-Identifier: MIT
    +//  pragma solidity ^0.7.4;
    +//
    +//  contract Simple {
    +//      uint256 public value;
    +//      constructor() payable {
    +//          value = 5;
    +//      }
    +//  }
    +const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033";
    +const [from] = await provider.request({ method: "eth_accounts", params: [] });
    +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
    +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] });
    +await provider.once("message"); // Note: `await provider.once` is non-standard
    +const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
    +const code = await provider.request({ method: "eth_getCode", params: [txReceipt.contractAddress, "latest"] });
    +console.log(code);
    +
    +

    Parameters

    • address: string
      -

      20 Bytes - address

      +

      Address.

    • -
      Default value blockNumber: string | Tag = Tag.LATEST
      +
      Default value blockNumber: QUANTITY | Tag = Tag.LATEST
      -

      integer block number, or the string "latest", "earliest" or "pending", see the default block - parameter

      +

      Integer block number, or the string "latest", "earliest" or "pending".

    Returns Promise<Data>

    -

    the code from the given address.

    +

    The code from the given address.

    @@ -1082,7 +1369,19 @@

    eth_getCompilers

  • Defined in chains/ethereum/ethereum/src/api.ts:789
  • +
    +
    +

    Returns a list of available compilers.

    +
    +
    +
    example
    +
    const compilers = await provider.send("eth_getCompilers");
    +console.log(compilers);
    +
    +
    +

    Returns Promise<string[]>

    +

    List of available compilers.

    @@ -1090,7 +1389,7 @@

    Returns Promise

    eth_getFilterChanges

      -
    • eth_getFilterChanges(filterId: string): Promise<Data[]>
    • +
    • eth_getFilterChanges(filterId: QUANTITY): Promise<Data[]>
    • @@ -1105,19 +1404,65 @@

      eth_getFilterChanges

      or transaction hashes, depending on the filter type, which occurred since last poll.

      +
      +
      example
      +
      // Logs.sol
      +// // SPDX-License-Identifier: MIT
      +// pragma solidity ^0.7.4;
      +// contract Logs {
      +//   event Event(uint256 indexed first, uint256 indexed second);
      +//   constructor() {
      +//     emit Event(1, 2);
      +//   }
      +//
      +//   function logNTimes(uint8 n) public {
      +//     for (uint8 i = 0; i < n; i++) {
      +//       emit Event(i, i);
      +//     }
      +//   }
      +// }
      +
      +const logsContract = "0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033";
      +const [from] = await provider.send("eth_accounts");
      +const filterId = await provider.send("eth_newFilter");
      +
      +const subscriptionId = await provider.send("eth_subscribe", ["newHeads"]);
      +await provider.send("eth_sendTransaction", [{ from, data: logsContract, gas: "0x5b8d80" }] );
      +await provider.once("message");
      +
      +const changes = await provider.request({ method: "eth_getFilterChanges", params: [filterId] });
      +console.log(changes);
      +
      +await provider.send("eth_unsubscribe", [subscriptionId]);
      +
      +

      Parameters

      • -
        filterId: string
        +
        filterId: QUANTITY
        -

        the filter id.

        +

        The filter id.

      Returns Promise<Data[]>

      -

      an array of logs, block hashes, or transaction hashes, depending +

      An array of logs, block hashes, or transaction hashes, depending on the filter type, which occurred since last poll.

      +

      For filters created with eth_newBlockFilter the return are block hashes (DATA, 32 Bytes).

      +

      For filters created with eth_newPendingTransactionFilter the return are transaction hashes (DATA, 32 Bytes).

      +

      For filters created with eth_newFilter the return are log objects with the following parameters:

      +
        +
      • removed: TAG - true when the log was removed, false if its a valid log.
      • +
      • logIndex: QUANTITY - Integer of the log index position in the block. null when pending.
      • +
      • transactionIndex: QUANTITY - Integer of the transactions index position. null when pending.
      • +
      • transactionHash: DATA, 32 Bytes - Hash of the transaction where the log was. null when pending.
      • +
      • blockHash: DATA, 32 Bytes - Hash of the block where the log was. null when pending.
      • +
      • blockNumber: QUANTITY - The block number where the log was in. null when pending.
      • +
      • address: DATA, 20 Bytes - The address from which the log originated.
      • +
      • data: DATA - Contains one or more 32 Bytes non-indexed arguments of the log.
      • +
      • topics: Array of DATA - Array of 0 to 4 32 Bytes DATA of indexed log arguments.
      • +
    @@ -1125,7 +1470,7 @@

    Returns Promise

    eth_getFilterLogs

      -
    • eth_getFilterLogs(filterId: string): Promise<object[]>
    • +
    • eth_getFilterLogs(filterId: QUANTITY): Promise<object[]>
    • @@ -1138,11 +1483,44 @@

      eth_getFilterLogs

      Returns an array of all logs matching filter with given id.

      +
      +
      example
      +
      // Logs.sol
      +// // SPDX-License-Identifier: MIT
      +// pragma solidity ^0.7.4;
      +// contract Logs {
      +//   event Event(uint256 indexed first, uint256 indexed second);
      +//   constructor() {
      +//     emit Event(1, 2);
      +//   }
      +//
      +//   function logNTimes(uint8 n) public {
      +//     for (uint8 i = 0; i < n; i++) {
      +//       emit Event(i, i);
      +//     }
      +//   }
      +// }
      +
      +const logsContract = "0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033";
      +const [from] = await provider.send("eth_accounts");
      +const filterId = await provider.send("eth_newFilter");
      +
      +await provider.send("eth_subscribe", ["newHeads"]);
      +await provider.send("eth_sendTransaction", [{ from, data: logsContract, gas: "0x5b8d80" }] );
      +await provider.once("message");
      +
      +const logs = await provider.request({ method: "eth_getFilterLogs", params: [filterId] });
      +console.log(logs);
      +
      +

      Parameters

      • -
        filterId: string
        +
        filterId: QUANTITY
        +
        +

        The filter id.

        +

      Returns Promise<object[]>

      @@ -1167,13 +1545,56 @@

      eth_getLogs

      Returns an array of all logs matching a given filter object.

      +

      Filter options:

      +
        +
      • fromBlock: QUANTITY | TAG (optional) - Integer block number, or the string "latest", "earliest" + or "pending".
      • +
      • toBlock: QUANTITY | TAG (optional) - Integer block number, or the string "latest", "earliest" + or "pending".
      • +
      • address: DATA | Array (optional) - Contract address or a list of addresses from which the logs should originate.
      • +
      • topics: Array of DATA (optional) - Array of 32 Bytes DATA topcis. Topics are order-dependent. Each topic can also + be an array of DATA with "or" options.
      • +
      • blockHash: DATA, 32 Bytes (optional) - Hash of the block to restrict logs from. If blockHash is present, + then neither fromBlock or toBlock are allowed.
      • +
      +
      +
      example
      +
      // Logs.sol
      +// // SPDX-License-Identifier: MIT
      +// pragma solidity ^0.7.4;
      +// contract Logs {
      +//   event Event(uint256 indexed first, uint256 indexed second);
      +//   constructor() {
      +//     emit Event(1, 2);
      +//   }
      +//
      +//   function logNTimes(uint8 n) public {
      +//     for (uint8 i = 0; i < n; i++) {
      +//       emit Event(i, i);
      +//     }
      +//   }
      +// }
      +
      +const logsContract = "0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033";
      +const [from] = await provider.send("eth_accounts");
      +
      +await provider.send("eth_subscribe", ["newHeads"]);
      +const txHash = await provider.send("eth_sendTransaction", [{ from, data: logsContract, gas: "0x5b8d80" }] );
      +await provider.once("message");
      +
      +const { contractAddress } = await provider.send("eth_getTransactionReceipt", [txHash] );
      +
      +const logs = await provider.request({ method: "eth_getLogs", params: [{ address: contractAddress }] });
      +console.log(logs);
      +
      +

      Parameters

      • filter: FilterArgs
        -

        The filter options

        +

        The filter options as seen in source.

      @@ -1199,24 +1620,50 @@

      eth_getStorageAt

      Returns the value from a storage position at a given address.

      +
      +
      example
      +
      // Simple.sol
      +// // SPDX-License-Identifier: MIT
      +//  pragma solidity ^0.7.4;
      +//
      +//  contract Simple {
      +//      uint256 public value;
      +//      constructor() payable {
      +//          value = 5;
      +//      }
      +//  }
      +const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033";
      +const [from] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
      +const storageValue = await provider.request({ method: "eth_getStorageAt", params: [txReceipt.contractAddress, "0x0", "latest"] });
      +console.log(storageValue);
      +
      +

      Parameters

      • -
        address: string
        +
        address: DATA
        +
        +

        Address of the storage.

        +
      • position: string
      • -
        Default value blockNumber: string | Tag = Tag.LATEST
        +
        Default value blockNumber: QUANTITY | Tag = Tag.LATEST
        -

        integer block number, or the string "latest", "earliest" - or "pending", see the default block parameter

        +

        Integer block number, or the string "latest", "earliest" + or "pending".

      Returns Promise<Data>

      +

      The value in storage at the requested position.

    @@ -1224,7 +1671,7 @@

    Returns Promise

    eth_getTransactionByBlockHashAndIndex

      -
    • eth_getTransactionByBlockHashAndIndex(hash: string | Buffer, index: string): Promise<any>
    • +
    • eth_getTransactionByBlockHashAndIndex(hash: DATA, index: QUANTITY): Promise<any>
    • @@ -1237,23 +1684,52 @@

      eth_getTransactionByBlockHashAndIndex

      Returns information about a transaction by block hash and transaction index position.

      +
      +
      example
      +
      const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +const { blockHash, transactionIndex } = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
      +
      +const tx = await provider.request({ method: "eth_getTransactionByBlockHashAndIndex", params: [ blockHash, transactionIndex ] });
      +console.log(tx);
      +
      +

      Parameters

      • -
        hash: string | Buffer
        +
        hash: DATA
        -

        DATA, 32 Bytes - hash of a block.

        +

        Hash of a block.

      • -
        index: string
        +
        index: QUANTITY
        -

        QUANTITY - integer of the transaction index position.

        +

        Integer of the transaction index position.

      Returns Promise<any>

      +

      The transaction object or null if no transaction was found.

      +
        +
      • hash: DATA, 32 Bytes - The transaction hash.
      • +
      • nonce: QUANTITY - The number of transactions made by the sender prior to this one.
      • +
      • blockHash: DATA, 32 Bytes - The hash of the block the transaction is in. null when pending.
      • +
      • blockNumber: QUANTITY - The number of the block the transaction is in. null when pending.
      • +
      • transactionIndex: QUANTITY - The index position of the transaction in the block.
      • +
      • from: DATA, 20 Bytes - The address the transaction is sent from.
      • +
      • to: DATA, 20 Bytes - The address the transaction is sent to.
      • +
      • value: QUANTITY - The value transferred in wei.
      • +
      • gas: QUANTITY - The gas provided by the sender.
      • +
      • gasPrice: QUANTITY - The price of gas in wei.
      • +
      • input: DATA - The data sent along with the transaction.
      • +
      • v: QUANTITY - ECDSA recovery id.
      • +
      • r: DATA, 32 Bytes - ECDSA signature r.
      • +
      • s: DATA, 32 Bytes - ECDSA signature s.
      • +
    @@ -1261,7 +1737,7 @@

    Returns Promise

    eth_getTransactionByBlockNumberAndIndex

      -
    • eth_getTransactionByBlockNumberAndIndex(number: string | Tag, index: string): Promise<any>
    • +
    • eth_getTransactionByBlockNumberAndIndex(number: QUANTITY | Tag, index: QUANTITY): Promise<any>
    • @@ -1274,24 +1750,52 @@

      eth_getTransactionByBlockNumberAndIndex

      Returns information about a transaction by block number and transaction index position.

      +
      +
      example
      +
      const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +const { transactionIndex } = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] });
      +
      +const tx = await provider.request({ method: "eth_getTransactionByBlockNumberAndIndex", params: [ "latest", transactionIndex ] });
      +console.log(tx);
      +
      +

      Parameters

      • -
        number: string | Tag
        +
        number: QUANTITY | Tag
        -

        QUANTITY|TAG - a block number, or the string "earliest", "latest" or "pending", as in the default - block parameter.

        +

        A block number, or the string "earliest", "latest" or "pending".

      • -
        index: string
        +
        index: QUANTITY
        -

        QUANTITY - integer of the transaction index position.

        +

        Integer of the transaction index position.

      Returns Promise<any>

      +

      The transaction object or null if no transaction was found.

      +
        +
      • hash: DATA, 32 Bytes - The transaction hash.
      • +
      • nonce: QUANTITY - The number of transactions made by the sender prior to this one.
      • +
      • blockHash: DATA, 32 Bytes - The hash of the block the transaction is in. null when pending.
      • +
      • blockNumber: QUANTITY - The number of the block the transaction is in. null when pending.
      • +
      • transactionIndex: QUANTITY - The index position of the transaction in the block.
      • +
      • from: DATA, 20 Bytes - The address the transaction is sent from.
      • +
      • to: DATA, 20 Bytes - The address the transaction is sent to.
      • +
      • value: QUANTITY - The value transferred in wei.
      • +
      • gas: QUANTITY - The gas provided by the sender.
      • +
      • gasPrice: QUANTITY - The price of gas in wei.
      • +
      • input: DATA - The data sent along with the transaction.
      • +
      • v: QUANTITY - ECDSA recovery id.
      • +
      • r: DATA, 32 Bytes - ECDSA signature r.
      • +
      • s: DATA, 32 Bytes - ECDSA signature s.
      • +
    @@ -1299,7 +1803,7 @@

    Returns Promise

    eth_getTransactionByHash

      -
    • eth_getTransactionByHash(transactionHash: string): Promise<object>
    • +
    • eth_getTransactionByHash(transactionHash: DATA): Promise<object>
    • @@ -1312,17 +1816,45 @@

      eth_getTransactionByHash

      Returns the information about a transaction requested by transaction hash.

      +
      +
      example
      +
      const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +
      +const tx = await provider.request({ method: "eth_getTransactionByHash", params: [ txHash ] });
      +console.log(tx);
      +
      +

      Parameters

      • -
        transactionHash: string
        +
        transactionHash: DATA
        -

        32 Bytes - hash of a transaction

        +

        Hash of a transaction.

      Returns Promise<object>

      +

      The transaction object or null if no transaction was found.

      +
        +
      • hash: DATA, 32 Bytes - The transaction hash.
      • +
      • nonce: QUANTITY - The number of transactions made by the sender prior to this one.
      • +
      • blockHash: DATA, 32 Bytes - The hash of the block the transaction is in. null when pending.
      • +
      • blockNumber: QUANTITY - The number of the block the transaction is in. null when pending.
      • +
      • transactionIndex: QUANTITY - The index position of the transaction in the block.
      • +
      • from: DATA, 20 Bytes - The address the transaction is sent from.
      • +
      • to: DATA, 20 Bytes - The address the transaction is sent to.
      • +
      • value: QUANTITY - The value transferred in wei.
      • +
      • gas: QUANTITY - The gas provided by the sender.
      • +
      • gasPrice: QUANTITY - The price of gas in wei.
      • +
      • input: DATA - The data sent along with the transaction.
      • +
      • v: QUANTITY - ECDSA recovery id.
      • +
      • r: DATA, 32 Bytes - ECDSA signature r.
      • +
      • s: DATA, 32 Bytes - ECDSA signature s.
      • +
    @@ -1343,6 +1875,17 @@

    eth_getTransactionCount

    Returns the number of transactions sent from an address.

    +
    +
    example
    +
    const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
    +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
    +await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
    +await provider.once("message"); // Note: `await provider.once` is non-standard
    +
    +const txCount = await provider.request({ method: "eth_getTransactionCount", params: [ from, "latest" ] });
    +console.log(txCount);
    +
    +

    Parameters

      @@ -1355,13 +1898,13 @@
      address: string
    • Default value blockNumber: string | Tag = Tag.LATEST
      -

      integer block number, or the string "latest", "earliest" - or "pending", see the default block parameter

      +

      Integer block number, or the string "latest", "earliest" + or "pending".

    Returns Promise<Quantity>

    -

    integer of the number of transactions sent from this address.

    +

    Number of transactions sent from this address.

    @@ -1369,7 +1912,7 @@

    Returns Promise

    eth_getTransactionReceipt

      -
    • eth_getTransactionReceipt(transactionHash: string): Promise<object>
    • +
    • eth_getTransactionReceipt(transactionHash: DATA): Promise<object>
    • @@ -1382,14 +1925,25 @@

      eth_getTransactionReceipt

      Returns the receipt of a transaction by transaction hash.

      -

      Note That the receipt is not available for pending transactions.

      +

      Note: The receipt is not available for pending transactions.

      +
      +
      example
      +
      const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
      +await provider.once("message"); // Note: `await provider.once` is non-standard
      +
      +const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [ txHash ] });
      +console.log(txReceipt);
      +
      +

      Parameters

      • -
        transactionHash: string
        +
        transactionHash: DATA
        -

        32 Bytes - hash of a transaction

        +

        Hash of a transaction.

      @@ -1415,23 +1969,53 @@

      eth_getUncleByBlockHashAndIndex

      Returns information about a uncle of a block by hash and uncle index position.

      +
      +
      example
      +
      const blockHash = await provider.send("eth_getBlockByNumber", ["latest"] );
      +const block = await provider.send("eth_getUncleByBlockHashAndIndex", [blockHash, "0x0"] );
      +console.log(block);
      +
      +

      Parameters

      • hash: string
        -

        hash of a block

        +

        Hash of a block.

      • index: string
        -

        the uncle's index position.

        +

        The uncle's index position.

      Returns Promise<any>

      +

      A block object or null when no block is found.

      +
        +
      • hash: DATA, 32 Bytes - Hash of the block. null when pending.
      • +
      • parentHash: DATA, 32 Bytes - Hash of the parent block.
      • +
      • sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block.
      • +
      • miner: DATA, 20 Bytes - Address of the miner.
      • +
      • stateRoot: DATA, 32 Bytes - The root of the state trie of the block.
      • +
      • transactionsRoot: DATA, 32 Bytes - The root of the transaction trie of the block.
      • +
      • receiptsRoot: DATA, 32 Bytes - The root of the receipts trie of the block.
      • +
      • logsBloom: DATA, 256 Bytes - The bloom filter for the logs of the block. null when pending.
      • +
      • difficulty: QUANTITY - Integer of the difficulty of this block.
      • +
      • number: QUANTITY - The block number. null when pending.
      • +
      • gasLimit: QUANTITY - The maximum gas allowed in the block.
      • +
      • gasUsed: QUANTITY - Total gas used by all transactions in the block.
      • +
      • timestamp: QUANTITY - The unix timestamp for when the block was collated.
      • +
      • extraData: DATA - Extra data for the block.
      • +
      • mixHash: DATA, 256 Bytes - Hash identifier for the block.
      • +
      • nonce: DATA, 8 Bytes - Hash of the generated proof-of-work. null when pending.
      • +
      • totalDifficulty: QUANTITY - Integer of the total difficulty of the chain until this block.
      • +
      • size: QUANTITY - Integer the size of the block in bytes.
      • +
      • transactions: Array - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.
      • +
      • uncles: Array - Array of uncle hashes.
      • +
    @@ -1452,24 +2036,52 @@

    eth_getUncleByBlockNumberAndIndex

    Returns information about a uncle of a block by hash and uncle index position.

    +
    +
    example
    +
    const block = await provider.send("eth_getUncleByBlockNumberAndIndex", ["latest", "0x0"] );
    +console.log(block);
    +
    +

    Parameters

    • blockNumber: string | Tag
      -

      a block number, or the string "earliest", "latest" or "pending", as in the default block - parameter.

      +

      A block number, or the string "earliest", "latest" or "pending".

    • uncleIndex: string
      -

      the uncle's index position.

      +

      The uncle's index position.

    Returns Promise<any>

    +

    A block object or null when no block is found.

    +
      +
    • hash: DATA, 32 Bytes - Hash of the block. null when pending.
    • +
    • parentHash: DATA, 32 Bytes - Hash of the parent block.
    • +
    • sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block.
    • +
    • miner: DATA, 20 Bytes - Address of the miner.
    • +
    • stateRoot: DATA, 32 Bytes - The root of the state trie of the block.
    • +
    • transactionsRoot: DATA, 32 Bytes - The root of the transaction trie of the block.
    • +
    • receiptsRoot: DATA, 32 Bytes - The root of the receipts trie of the block.
    • +
    • logsBloom: DATA, 256 Bytes - The bloom filter for the logs of the block. null when pending.
    • +
    • difficulty: QUANTITY - Integer of the difficulty of this block.
    • +
    • number: QUANTITY - The block number. null when pending.
    • +
    • gasLimit: QUANTITY - The maximum gas allowed in the block.
    • +
    • gasUsed: QUANTITY - Total gas used by all transactions in the block.
    • +
    • timestamp: QUANTITY - The unix timestamp for when the block was collated.
    • +
    • extraData: DATA - Extra data for the block.
    • +
    • mixHash: DATA, 256 Bytes - Hash identifier for the block.
    • +
    • nonce: DATA, 8 Bytes - Hash of the generated proof-of-work. null when pending.
    • +
    • totalDifficulty: QUANTITY - Integer of the total difficulty of the chain until this block.
    • +
    • size: QUANTITY - Integer the size of the block in bytes.
    • +
    • transactions: Array - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter.
    • +
    • uncles: Array - Array of uncle hashes.
    • +
    @@ -1477,7 +2089,7 @@

    Returns Promise

    eth_getUncleCountByBlockHash

      -
    • eth_getUncleCountByBlockHash(hash: string | Buffer): Promise<Quantity>
    • +
    • eth_getUncleCountByBlockHash(hash: DATA): Promise<Quantity>
    • @@ -1490,17 +2102,25 @@

      eth_getUncleCountByBlockHash

      Returns the number of uncles in a block from a block matching the given block hash.

      +
      +
      example
      +
      const blockHash = await provider.send("eth_getBlockByNumber", ["latest"] );
      +const uncleCount = await provider.send("eth_getUncleCountByBlockHash", [blockHash] );
      +console.log(uncleCount);
      +
      +

      Parameters

      • -
        hash: string | Buffer
        +
        hash: DATA
        -

        DATA, 32 Bytes - hash of a block.

        +

        Hash of a block.

      Returns Promise<Quantity>

      +

      The number of uncles in a block.

    @@ -1508,7 +2128,7 @@

    Returns Promise

    eth_getUncleCountByBlockNumber

      -
    • eth_getUncleCountByBlockNumber(number: string | Buffer): Promise<Quantity>
    • +
    • eth_getUncleCountByBlockNumber(number: QUANTITY | Tag): Promise<Quantity>
    • @@ -1521,14 +2141,21 @@

      eth_getUncleCountByBlockNumber

      Returns the number of uncles in a block from a block matching the given block hash.

      +
      +
      example
      +
      const uncleCount = await provider.send("eth_getUncleCountByBlockNumber", ["latest"] );
      +console.log(uncleCount);
      +
      +

      Parameters

      • -
        number: string | Buffer
        +
        number: QUANTITY | Tag

      Returns Promise<Quantity>

      +

      The number of uncles in a block.

    @@ -1548,10 +2175,15 @@

    eth_getWork

    Returns: An Array with the following elements - 1: DATA, 32 Bytes - current block header pow-hash - 2: DATA, 32 Bytes - the seed hash used for the DAG. - 3: DATA, 32 Bytes - the boundary condition ("target"), 2^256 / difficulty.

    + 1: DATA, 32 Bytes - current block header pow-hash + 2: DATA, 32 Bytes - the seed hash used for the DAG. + 3: DATA, 32 Bytes - the boundary condition ("target"), 2^256 / difficulty.

    +
    +
    example
    +
    console.log(await provider.send("eth_getWork", ["0x0"] ));
    +
    +

    Parameters

      @@ -1560,7 +2192,7 @@
      filterId: string

    Returns Promise<[] | [string, string, string]>

    -

    the hash of the current block, the seedHash, and the boundary condition to be met ("target").

    +

    The hash of the current block, the seedHash, and the boundary condition to be met ("target").

    @@ -1581,9 +2213,15 @@

    eth_hashrate

    Returns the number of hashes per second that the node is mining with.

    +
    +
    example
    +
    const hashrate = await provider.request({ method: "eth_hashrate", params: [] });
    +console.log(hashrate);
    +
    +

    Returns Promise<Quantity>

    -

    number of hashes per second.

    +

    Number of hashes per second.

    @@ -1604,6 +2242,12 @@

    eth_mining

    Returns true if client is actively mining new blocks.

    +
    +
    example
    +
    const isMining = await provider.request({ method: "eth_mining", params: [] });
    +console.log(isMining);
    +
    +

    Returns Promise<boolean>

    returns true if the client is mining, otherwise false.

    @@ -1628,6 +2272,12 @@

    eth_newBlockFilter

    Creates a filter in the node, to notify when a new block arrives. To check if the state has changed, call eth_getFilterChanges.

    +
    +
    example
    +
    const filterId = await provider.request({ method: "eth_newBlockFilter", params: [] });
    +console.log(filterId);
    +
    +

    Returns Promise<Quantity>

    A filter id.

    @@ -1672,17 +2322,34 @@

    A note on specifying topic filters:

  • [[A, B], [A, B]] “(A OR B) in first position AND (A OR B) in second position (and anything after)”
  • +

    Filter options:

    +
      +
    • fromBlock: QUANTITY | TAG (optional) - Integer block number, or the string "latest", "earliest" + or "pending".
    • +
    • toBlock: QUANTITY | TAG (optional) - Integer block number, or the string "latest", "earliest" + or "pending".
    • +
    • address: DATA | Array (optional) - Contract address or a list of addresses from which the logs should originate.
    • +
    • topics: Array of DATA (optional) - Array of 32 Bytes DATA topcis. Topics are order-dependent. Each topic can also + be an array of DATA with "or" options.
    • +
    +
    +
    example
    +
    const filterId = await provider.request({ method: "eth_newFilter", params: [] });
    +console.log(filterId);
    +
    +

    Parameters

    • Optional filter: RangeFilterArgs
      -

      The filter options

      +

      The filter options as seen in source.

    Returns Promise<Quantity>

    +

    A filter id.

    @@ -1704,6 +2371,12 @@

    eth_newPendingTransactionFilter

    Creates a filter in the node, to notify when new pending transactions arrive. To check if the state has changed, call eth_getFilterChanges.

    +
    +
    example
    +
    const filterId = await provider.request({ method: "eth_newPendingTransactionFilter", params: [] });
    +console.log(filterId);
    +
    +

    Returns Promise<Quantity>

    A filter id.

    @@ -1727,6 +2400,12 @@

    eth_protocolVersion

    Returns the current ethereum protocol version.

    +
    +
    example
    +
    const version = await provider.request({ method: "eth_protocolVersion", params: [] });
    +console.log(version);
    +
    +

    Returns Promise<Data>

    The current ethereum protocol version.

    @@ -1750,15 +2429,26 @@

    eth_sendRawTransaction

    Creates new message call transaction or a contract creation for signed transactions.

    +
    +
    example
    +
    const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
    +const signedTx = await provider.request({ method: "eth_signTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
    +const txHash = await provider.send("eth_sendRawTransaction", [signedTx] );
    +console.log(txHash);
    +
    +

    Parameters

    • transaction: string
      +
      +

      The signed transaction data.

      +

    Returns Promise<Data>

    -

    The transaction hash

    +

    The transaction hash.

    @@ -1779,52 +2469,140 @@

    eth_sendTransaction

    Creates new message call transaction or a contract creation, if the data field contains code.

    +

    Transaction call object:

    +
      +
    • from: DATA, 20 bytes (optional) - The address the transaction is sent from.
    • +
    • to: DATA, 20 bytes - The address the transaction is sent to.
    • +
    • gas: QUANTITY (optional) - Integer of the maximum gas allowance for the transaction.
    • +
    • gasPrice: QUANTITY (optional) - Integer of the price of gas in wei.
    • +
    • value: QUANTITY (optional) - Integer of the value in wei.
    • +
    • data: DATA (optional) - Hash of the method signature and the ABI encoded parameters.
    • +
    +
    +
    example
    +
    const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
    +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
    +const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] });
    +await provider.once("message"); // Note: `await provider.once` is non-standard
    +console.log(txHash);
    +
    +
    + +

    Parameters

    +
      +
    • +
      transaction: RpcTransaction
      +
      +

      The transaction call object as seen in source.

      +
      +
    • +
    +

    Returns Promise<Data>

    +

    The transaction hash.

    + + + +
    + +

    eth_sign

    +
      +
    • eth_sign(address: DATA, message: DATA): Promise<string>
    • +
    +
      +
    • + +
      +
      +

      The sign method calculates an Ethereum specific signature with: + sign(keccak256("\x19Ethereum Signed Message:\n" + message.length + message))).

      +
      +

      By adding a prefix to the message makes the calculated signature + recognizable as an Ethereum specific signature. This prevents misuse where a malicious DApp can sign arbitrary data + (e.g. transaction) and use the signature to impersonate the victim.

      +

      Note the address to sign with must be unlocked.

      +
      +
      example
      +
      const [account] = await provider.request({ method: "eth_accounts", params: [] });
      +const msg = "0x307866666666666666666666";
      +const signature = await provider.request({ method: "eth_sign", params: [account, msg] });
      +console.log(signature);
      +
      +

      Parameters

      • -
        transaction: RpcTransaction
        +
        address: DATA
        +
        +

        Address to sign with.

        +
        +
      • +
      • +
        message: DATA
        +
        +

        Message to sign.

        +
      -

      Returns Promise<Data>

      -

      The transaction hash

      +

      Returns Promise<string>

      +

      Signature - a hex encoded 129 byte array + starting with 0x. It encodes the r, s, and v parameters from + appendix F of the yellow paper + in big-endian format. Bytes 0...64 contain the r parameter, bytes + 64...128 the s parameter, and the last byte the v parameter. Note + that the v parameter includes the chain id as specified in EIP-155.

    - -

    eth_sign

    + +

    eth_signTransaction

      -
    • eth_sign(address: string | Buffer, message: string | Buffer): Promise<string>
    • +
    • eth_signTransaction(transaction: RpcTransaction): Promise<string>
    • -

      The sign method calculates an Ethereum specific signature with: - sign(keccak256("\x19Ethereum Signed Message:\n" + message.length + message))).

      +

      Signs a transaction that can be submitted to the network at a later time using eth_sendRawTransaction.

      -

      By adding a prefix to the message makes the calculated signature - recognizable as an Ethereum specific signature. This prevents misuse where a malicious DApp can sign arbitrary data - (e.g. transaction) and use the signature to impersonate the victim.

      -

      Note the address to sign with must be unlocked.

      +

      Transaction call object:

      +
        +
      • from: DATA, 20 bytes (optional) - The address the transaction is sent from.
      • +
      • to: DATA, 20 bytes - The address the transaction is sent to.
      • +
      • gas: QUANTITY (optional) - Integer of the maximum gas allowance for the transaction.
      • +
      • gasPrice: QUANTITY (optional) - Integer of the price of gas in wei.
      • +
      • value: QUANTITY (optional) - Integer of the value in wei.
      • +
      • data: DATA (optional) - Hash of the method signature and the ABI encoded parameters.
      • +
      +
      +
      example
      +
      const [from, to] = await provider.request({ method: "eth_accounts", params: [] });
      +const signedTx = await provider.request({ method: "eth_signTransaction", params: [{ from, to }] });
      +console.log(signedTx)
      +
      +

      Parameters

      • -
        address: string | Buffer
        -
      • -
      • -
        message: string | Buffer
        +
        transaction: RpcTransaction
        +
        +

        The transaction call object as seen in source.

        +

      Returns Promise<string>

      -

      Signature

      +

      The raw, signed transaction.

    @@ -1832,7 +2610,7 @@

    Returns Promise

    eth_signTypedData

      -
    • eth_signTypedData(address: string | Buffer, typedData: TypedData): Promise<string>
    • +
    • eth_signTypedData(address: DATA, typedData: TypedData): Promise<string>
    • @@ -1846,12 +2624,54 @@

      eth_signTypedData

      eip

      712

      +
      example
      +
      const [account] = await provider.request({ method: "eth_accounts", params: [] });
      +const typedData = {
      + types: {
      +   EIP712Domain: [
      +     { name: 'name', type: 'string' },
      +     { name: 'version', type: 'string' },
      +     { name: 'chainId', type: 'uint256' },
      +     { name: 'verifyingContract', type: 'address' },
      +   ],
      +   Person: [
      +     { name: 'name', type: 'string' },
      +     { name: 'wallet', type: 'address' }
      +   ],
      +   Mail: [
      +     { name: 'from', type: 'Person' },
      +     { name: 'to', type: 'Person' },
      +     { name: 'contents', type: 'string' }
      +   ],
      + },
      + primaryType: 'Mail',
      + domain: {
      +   name: 'Ether Mail',
      +   version: '1',
      +   chainId: 1,
      +   verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
      + },
      + message: {
      +   from: {
      +     name: 'Cow',
      +     wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
      +   },
      +   to: {
      +     name: 'Bob',
      +     wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
      +   },
      +   contents: 'Hello, Bob!',
      + },
      +};
      +const signature = await provider.request({ method: "eth_signTypedData", params: [account, typedData] });
      +console.log(signature);
      +

      Parameters

      • -
        address: string | Buffer
        +
        address: DATA

        Address of the account that will sign the messages.

        @@ -1877,7 +2697,7 @@

        Returns Promise

        eth_submitHashrate

          -
        • eth_submitHashrate(hashRate: string, clientID: string): Promise<boolean>
        • +
        • eth_submitHashrate(hashRate: DATA, clientID: DATA): Promise<boolean>
        • @@ -1890,24 +2710,32 @@

          eth_submitHashrate

          Used for submitting mining hashrate.

          +
          +
          example
          +
          const hashRate = "0x0000000000000000000000000000000000000000000000000000000000000001";
          +const clientId = "0xb2222a74119abd18dbcb7d1f661c6578b7bbeb4984c50e66ed538347f606b971";
          +const result = await provider.request({ method: "eth_submitHashrate", params: [hashRate, clientId] });
          +console.log(result);
          +
          +

          Parameters

          • -
            hashRate: string
            +
            hashRate: DATA
            -

            a hexadecimal string representation (32 bytes) of the hash rate

            +

            A hexadecimal string representation (32 bytes) of the hash rate.

          • -
            clientID: string
            +
            clientID: DATA

            a random hexadecimal(32 bytes) ID identifying the client

          Returns Promise<boolean>

          -

          true if submitting went through successfully and false otherwise.

          +

          true if submitting went through succesfully and false otherwise.

        @@ -1926,8 +2754,17 @@

        eth_submitWork

        -

        Used for submitting a proof-of-work solution

        +

        Used for submitting a proof-of-work solution.

        +
        +
        example
        +
        const nonce = "0xe0df4bd14ab39a71";
        +const powHash = "0x0000000000000000000000000000000000000000000000000000000000000001";
        +const digest = "0xb2222a74119abd18dbcb7d1f661c6578b7bbeb4984c50e66ed538347f606b971";
        +const result = await provider.request({ method: "eth_submitWork", params: [nonce, powHash, digest] });
        +console.log(result);
        +
        +

        Parameters

          @@ -1975,11 +2812,20 @@

          eth_subscribe

          the subscription a JSON-RPC notification with event details and subscription ID will be sent to a client.

          +
          +
          example
          +
          const subscriptionId = await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
          +console.log(subscriptionId);
          +
          +

          Parameters

          • subscriptionName: SubscriptionName
            +
            +

            Name for the subscription.

            +

          Returns PromiEvent<Quantity>

          @@ -2035,15 +2881,23 @@

          eth_syncing

          -

          Returns an object with data about the sync status or false.

          +

          Returns an object containing data about the sync status or false when not syncing.

          +
          +
          example
          +
          const result = await provider.request({ method: "eth_syncing", params: [] });
          +console.log(result);
          +
          +

          Returns Promise<boolean>

          -

          An object with sync status data or false, when not syncing: - startingBlock: {bigint} - The block at which the import started (will - only be reset, after the sync reached his head) - currentBlock: {bigint} - The current block, same as eth_blockNumber - highestBlock: {bigint} - The estimated highest block

          +

          An object with sync status data or false, when not syncing.

          +
            +
          • startingBlock: {bigint} The block at which the import started (will + only be reset, after the sync reached his head).
          • +
          • currentBlock: {bigint} The current block, same as eth_blockNumber.
          • +
          • highestBlock: {bigint} The estimated highest block.
          • +
        @@ -2051,7 +2905,7 @@

        Returns Promise

        eth_uninstallFilter

          -
        • eth_uninstallFilter(filterId: string): Promise<boolean>
        • +
        • eth_uninstallFilter(filterId: QUANTITY): Promise<boolean>
        • @@ -2065,13 +2919,20 @@

          eth_uninstallFilter

          Uninstalls a filter with given id. Should always be called when watch is no longer needed.

          +
          +
          example
          +
          const filterId = await provider.request({ method: "eth_newFilter", params: [] });
          +const result = await provider.request({ method: "eth_uninstallFilter", params: [filterId] });
          +console.log(result);
          +
          +

          Parameters

          • -
            filterId: string
            +
            filterId: QUANTITY
            -

            the filter id.

            +

            The filter id.

          @@ -2094,13 +2955,30 @@

          eth_unsubscribe

        • Defined in chains/ethereum/ethereum/src/api.ts:1393
        +
        +
        +

        Cancel a subscription to a particular event. Returns a boolean indicating + if the subscription was successfully cancelled.

        +
        +
        +
        example
        +
        const subscriptionId = await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
        +const result = await provider.request({ method: "eth_unsubscribe", params: [subscriptionId] });
        +console.log(result);
        +
        +
        +

        Parameters

        • subscriptionId: SubscriptionId
          +
          +

          The ID of the subscription to unsubscribe to.

          +

        Returns Promise<boolean>

        +

        true if subscription was cancelled successfully, otherwise false.

      @@ -2108,7 +2986,7 @@

      Returns Promise

      evm_increaseTime

        -
      • evm_increaseTime(seconds: number | string): Promise<number>
      • +
      • evm_increaseTime(seconds: QUANTITY): Promise<number>
      • @@ -2121,13 +2999,20 @@

        evm_increaseTime

        Jump forward in time by the given amount of time, in seconds.

        +
        +
        example
        +
        const seconds = 10;
        +const timeAdjustment = await provider.send("evm_increaseTime", [seconds] );
        +console.log(timeAdjustment);
        +
        +

        Parameters

        • -
          seconds: number | string
          +
          seconds: QUANTITY
          -

          Must be greater than or equal to 0

          +

          Number of seconds to jump forward in time by. Must be greater than or equal to 0.

        @@ -2140,7 +3025,7 @@

        Returns Promise

        evm_lockUnknownAccount

          -
        • evm_lockUnknownAccount(address: string): Promise<boolean>
        • +
        • evm_lockUnknownAccount(address: DATA): Promise<boolean>
        • @@ -2155,13 +3040,20 @@

          evm_lockUnknownAccount

          Note: accounts known to the personal namespace and accounts returned by eth_accounts cannot be locked using this method.

          +
          +
          example
          +
          const address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e";
          +const result = await provider.send("evm_lockUnknownAccount", [address] );
          +console.log(result);
          +
          +

          Parameters

          • -
            address: string
            +
            address: DATA
            -

            address the address of the account to lock

            +

            The address of the account to lock.

          @@ -2193,12 +3085,9 @@

          evm_mine

          Mines a block independent of whether or not mining is started or stopped. Will mine an empty block if there are no available transactions to mine.

          -
          example
          -
          await provider.send("evm_mine", Date.now());
          -
          example
          console.log("start", await provider.send("eth_blockNumber"));
          -await provider.send("evm_mine", [{blocks: 5}]); // mines 5 blocks
          +await provider.send("evm_mine", [{blocks: 5}] ); // mines 5 blocks
           console.log("end", await provider.send("eth_blockNumber"));
          @@ -2208,8 +3097,8 @@

          Parameters

        • timestamp: number
          -

          the timestamp the block should be mined with. - EXPERIMENTAL: Optionally, specify an options object with timestamp +

          The timestamp the block should be mined with. + EXPERIEMENTAL: Optionally, specify an options object with timestamp and/or blocks fields. If blocks is given, it will mine exactly blocks number of blocks, regardless of any other blocks mined or reverted during it's operation. This behavior is subject to change!

          @@ -2247,7 +3136,7 @@

          Returns Promise

          evm_revert

            -
          • evm_revert(snapshotId: string | number): Promise<boolean>
          • +
          • evm_revert(snapshotId: QUANTITY): Promise<boolean>
          • @@ -2278,8 +3167,8 @@

            evm_revert

            const snapshotId = await provider.send("evm_snapshot"); // send value to another account (over-simplified example) -await provider.send("eth_subscribe", ["newHeads"]); -await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}]); +await provider.send("eth_subscribe", ["newHeads"] ); +await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}] ); await provider.once("message"); // Note: `await provider.once` is non-standard // ensure balance has updated @@ -2287,8 +3176,9 @@

            evm_revert

            assert(BigInt(newBalance) < startingBalance); // revert the snapshot -const isReverted = await provider.send("evm_revert", [snapshotId]); +const isReverted = await provider.send("evm_revert", [snapshotId] ); assert(isReverted); +console.log({isReverted: isReverted}); const endingBalance = await provider.send("eth_getBalance", [from]); assert.strictEqual(BigInt(endingBalance), startingBalance); @@ -2298,14 +3188,14 @@

            evm_revert

            Parameters

            • -
              snapshotId: string | number
              +
              snapshotId: QUANTITY
              -

              the snapshot id to revert

              +

              The snapshot id to revert.

            Returns Promise<boolean>

            -

            true if a snapshot was reverted, otherwise false

            +

            true if a snapshot was reverted, otherwise false.

          @@ -2313,7 +3203,7 @@

          Returns Promise

          evm_setAccountNonce

            -
          • evm_setAccountNonce(address: string, nonce: string): Promise<boolean>
          • +
          • evm_setAccountNonce(address: DATA, nonce: QUANTITY): Promise<boolean>
          • @@ -2328,6 +3218,14 @@

            evm_setAccountNonce

            before returning.

          Warning: this will result in an invalid state tree.

          +
          +
          example
          +
          const nonce = "0x3e8";
          +const [address] = await provider.request({ method: "eth_accounts", params: [] });
          +const result = await provider.send("evm_setAccountNonce", [address, nonce] );
          +console.log(result);
          +
          +

          Parameters

            @@ -2385,7 +3283,7 @@

            Returns Promise

            evm_setTime

              -
            • evm_setTime(time: string | Date | number): Promise<number>
            • +
            • evm_setTime(time: QUANTITY | Date): Promise<number>
            • @@ -2401,11 +3299,23 @@

              evm_setTime

              Warning: This will allow you to move backwards in time, which may cause new blocks to appear to be mined before old blocks. This is will result in an invalid state.

              +
              +
              example
              +
              const currentDate = Date.now();
              +setTimeout(async () => {
              +  const time = await provider.send("evm_setTime", [currentDate] );
              +  console.log(time); // should be about two seconds ago
              +}, 1000);
              +
              +

              Parameters

              • -
                time: string | Date | number
                +
                time: QUANTITY | Date
                +
                +

                JavaScript timestamp (millisecond precision).

                +

              Returns Promise<number>

              @@ -2435,9 +3345,6 @@

              evm_snapshot

              evm_revert if you need to revert to the same point multiple times.

              -
              example
              -
              const snapshotId = await provider.send("evm_snapshot");
              -
              example
              const provider = ganache.provider();
               const [from, to] = await provider.send("eth_accounts");
              @@ -2447,8 +3354,8 @@ 

              evm_snapshot

              const snapshotId = await provider.send("evm_snapshot"); // send value to another account (over-simplified example) -await provider.send("eth_subscribe", ["newHeads"]); -await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}]); +await provider.send("eth_subscribe", ["newHeads"] ); +await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}] ); await provider.once("message"); // Note: `await provider.once` is non-standard // ensure balance has updated @@ -2456,7 +3363,7 @@

              evm_snapshot

              assert(BigInt(newBalance) < startingBalance); // revert the snapshot -const isReverted = await provider.send("evm_revert", [snapshotId]); +const isReverted = await provider.send("evm_revert", [snapshotId] ); assert(isReverted); const endingBalance = await provider.send("eth_getBalance", [from]); @@ -2465,7 +3372,7 @@

              evm_snapshot

              Returns Promise<Quantity>

              -

              The hex-encoded identifier for this snapshot

              +

              The hex-encoded identifier for this snapshot.

            @@ -2473,7 +3380,7 @@

            Returns Promise

            evm_unlockUnknownAccount

              -
            • evm_unlockUnknownAccount(address: string, duration?: number): Promise<boolean>
            • +
            • evm_unlockUnknownAccount(address: DATA, duration?: number): Promise<boolean>
            • @@ -2486,19 +3393,28 @@

              evm_unlockUnknownAccount

              Unlocks any unknown account.

              +

              Note: accounts known to the personal namespace and accounts returned by + eth_accounts cannot be unlocked using this method.

              +
              +
              example
              +
              const address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e";
              +const result = await provider.send("evm_unlockUnknownAccount", [address] );
              +console.log(result);
              +
              +

              Parameters

              • -
                address: string
                +
                address: DATA
                -

                address the address of the account to unlock

                +

                The address of the account to unlock.

              • Default value duration: number = 0
                -

                (default: disabled) Duration in seconds how long the account +

                (Default: disabled) Duration in seconds how long the account should remain unlocked for. Set to 0 to disable automatic locking.

              • @@ -2514,7 +3430,7 @@

                Returns Promise

                miner_setEtherbase

                  -
                • miner_setEtherbase(address: string): Promise<boolean>
                • +
                • miner_setEtherbase(address: DATA): Promise<boolean>
                • @@ -2527,17 +3443,24 @@

                  miner_setEtherbase

                  Sets the etherbase, where mining rewards will go.

                  +
                  +
                  example
                  +
                  const [account] = await provider.request({ method: "eth_accounts", params: [] });
                  +console.log(await provider.send("miner_setEtherbase", [account] ));
                  +
                  +

                  Parameters

                  • -
                    address: string
                    +
                    address: DATA

                    address

                  Returns Promise<boolean>

                  +

                  true.

                @@ -2545,7 +3468,7 @@

                Returns Promise

                miner_setExtra

                  -
                • miner_setExtra(extra: string): Promise<boolean>
                • +
                • miner_setExtra(extra: DATA): Promise<boolean>
                • @@ -2558,17 +3481,23 @@

                  miner_setExtra

                  Set the extraData block header field a miner can include.

                  +
                  +
                  example
                  +
                  console.log(await provider.send("miner_setExtra", ["0x0"] ));
                  +
                  +

                  Parameters

                  • -
                    extra: string
                    +
                    extra: DATA

                    extra

                  Returns Promise<boolean>

                  +

                  If successfully set returns true, otherwise returns an error.

                @@ -2576,7 +3505,7 @@

                Returns Promise

                miner_setGasPrice

                  -
                • miner_setGasPrice(number: string): Promise<boolean>
                • +
                • miner_setGasPrice(number: QUANTITY): Promise<boolean>
                • @@ -2586,19 +3515,28 @@

                  miner_setGasPrice

                +
                +

                Sets the minimal accepted gas price when mining transactions. + Any transactions that are below this limit are excluded from the mining + process.

                +
                +
                +
                example
                +
                console.log(await provider.send("miner_setGasPrice", [300000] ));
                +
                +

                Parameters

                • -
                  number: string
                  +
                  number: QUANTITY
                  -

                  Sets the minimal accepted gas price when mining transactions. - Any transactions that are below this limit are excluded from the mining - process.

                  +

                  Minimal accepted gas price.

                Returns Promise<boolean>

                +

                true.

              @@ -2620,6 +3558,16 @@

              miner_start

              Resume the CPU mining process with the given number of threads.

              Note: threads is ignored.

              +
              +
              example
              +
              await provider.send("miner_stop");
              +// check that eth_mining returns false
              +console.log(await provider.send("eth_mining"));
              +await provider.send("miner_start");
              +// check that eth_mining returns true
              +console.log(await provider.send("eth_mining"));
              +
              +

              Parameters

                @@ -2631,7 +3579,7 @@
                Default value threads:

              Returns Promise<boolean>

              -

              true

              +

              true.

            @@ -2652,8 +3600,18 @@

            miner_stop

            Stop the CPU mining operation.

            +
            +
            example
            +
            // check that eth_mining returns true
            +console.log(await provider.send("eth_mining"));
            +await provider.send("miner_stop");
            +// check that eth_mining returns false
            +console.log(await provider.send("eth_mining"));
            +
            +

            Returns Promise<boolean>

            +

            true.

          @@ -2674,6 +3632,11 @@

          net_listening

          Returns true if client is actively listening for network connections.

          +
          +
          example
          +
          console.log(await provider.send("net_listening"));
          +
          +

          Returns Promise<boolean>

          true when listening, otherwise false.

          @@ -2697,9 +3660,14 @@

          net_peerCount

          Returns number of peers currently connected to the client.

          +
          +
          example
          +
          console.log(await provider.send("net_peerCount"));
          +
          +

          Returns Promise<Quantity>

          -

          integer of the number of connected peers.

          +

          Number of connected peers.

        @@ -2720,6 +3688,11 @@

        net_version

        Returns the current network id.

        +
        +
        example
        +
        console.log(await provider.send("net_version"));
        +
        +

        Returns Promise<string>

        The current network id. This value should NOT be JSON-RPC @@ -2731,7 +3704,7 @@

        Returns Promise

        personal_importRawKey

          -
        • personal_importRawKey(rawKey: string, passphrase: string): Promise<Address>
        • +
        • personal_importRawKey(rawKey: DATA, passphrase: string): Promise<Address>
        • @@ -2783,9 +3756,14 @@

          personal_listAccounts

          Returns all the Ethereum account addresses of all keys that have been added.

          +
          +
          example
          +
          console.log(await provider.send("personal_listAccounts"));
          +
          +

          Returns Promise<string[]>

          -

          the Ethereum account addresses of all keys that have been added.

          +

          The Ethereum account addresses of all keys that have been added.

        @@ -2793,7 +3771,7 @@

        Returns Promise

        personal_lockAccount

          -
        • personal_lockAccount(address: string): Promise<boolean>
        • +
        • personal_lockAccount(address: DATA): Promise<boolean>
        • @@ -2806,16 +3784,25 @@

          personal_lockAccount

          Locks the account. The account can no longer be used to send transactions.

          +
          +
          example
          +
          const [account] = await provider.send("personal_listAccounts");
          +const isLocked = await provider.send("personal_lockAccount", [account] );
          +console.log(isLocked);
          +
          +

          Parameters

          • -
            address: string
            +
            address: DATA
            +

            The account address to be locked.

          Returns Promise<boolean>

          +

          Returns true if the account was locked, otherwise false.

        @@ -2837,6 +3824,13 @@

        personal_newAccount

        Generates a new account with private key. Returns the address of the new account.

        +
        +
        example
        +
        const passphrase = "passphrase";
        +const address = await provider.send("personal_newAccount", [passphrase] );
        +console.log(address);
        +
        +

        Parameters

          @@ -2848,7 +3842,7 @@
          passphrase: string

        Returns Promise<Address>

        -

        The new account's address

        +

        The new account's address.

      @@ -2869,11 +3863,31 @@

      personal_sendTransaction

      Validate the given passphrase and submit transaction.

      -

      The transaction is the same argument as for eth_sendTransaction and +

      The transaction is the same argument as for eth_sendTransaction and contains the from address. If the passphrase can be used to decrypt the - private key belonging to tx.from the transaction is verified, signed and + private key belonging to tx.from the transaction is verified, signed and send onto the network. The account is not unlocked globally in the node and cannot be used in other RPC calls.

      +

      Transaction call object:

      +
        +
      • from: DATA, 20 bytes (optional) - The address the transaction is sent from.
      • +
      • to: DATA, 20 bytes - The address the transaction is sent to.
      • +
      • gas: QUANTITY (optional) - Integer of the maximum gas allowance for the transaction.
      • +
      • gasPrice: QUANTITY (optional) - Integer of the price of gas in wei.
      • +
      • value: QUANTITY (optional) - Integer of the value in wei.
      • +
      • data: DATA (optional) - Hash of the method signature and the ABI encoded parameters.
      • +
      +
      +
      example
      +
      const passphrase = "passphrase";
      +const newAccount = await provider.send("personal_newAccount", [passphrase] );
      +const [to] = await provider.send("personal_listAccounts");
      +
      +// use account and passphrase to send the transaction
      +const txHash = await provider.send("personal_sendTransaction", [{ from: newAccount, to, gasLimit: "0x5b8d80" }, passphrase] );
      +console.log(txHash);
      +
      +

      Parameters

        @@ -2888,6 +3902,66 @@
        passphrase: string

      Returns Promise<Data>

      +

      The transaction hash or if unsuccessful an error.

      +

    • +
    + +
    + +

    personal_signTransaction

    +
      +
    • personal_signTransaction(transaction: RpcTransaction, passphrase: string): Promise<string>
    • +
    +
      +
    • + +
      +
      +

      Validates the given passphrase and signs a transaction that can be + submitted to the network at a later time using eth_sendRawTransaction.

      +
      +

      The transaction is the same argument as for eth_signTransaction and + contains the from address. If the passphrase can be used to decrypt the + private key belogging to tx.from the transaction is verified and signed. + The account is not unlocked globally in the node and cannot be used in other RPC calls.

      +

      Transaction call object:

      +
        +
      • from: DATA, 20 bytes (optional) - The address the transaction is sent from.
      • +
      • to: DATA, 20 bytes - The address the transaction is sent to.
      • +
      • gas: QUANTITY (optional) - Integer of the maximum gas allowance for the transaction.
      • +
      • gasPrice: QUANTITY (optional) - Integer of the price of gas in wei.
      • +
      • value: QUANTITY (optional) - Integer of the value in wei.
      • +
      • data: DATA (optional) - Hash of the method signature and the ABI encoded parameters.
      • +
      +
      +
      example
      +
      const [to] = await provider.request({ method: "eth_accounts", params: [] });
      +const passphrase = "passphrase";
      +const from = await provider.send("personal_newAccount", [passphrase] );
      +await provider.request({ method: "eth_subscribe", params: ["newHeads"] });
      +const signedTx = await provider.request({ method: "personal_signTransaction", params: [{ from, to }, passphrase] });
      +console.log(signedTx)
      +
      +
      +
      +

      Parameters

      +
        +
      • +
        transaction: RpcTransaction
        +
        +

        The transaction call object as seen in source.

        +
        +
      • +
      • +
        passphrase: string
        +
      • +
      +

      Returns Promise<string>

      +

      The raw, signed transaction.

    @@ -2895,7 +3969,7 @@

    Returns Promise

    personal_unlockAccount

      -
    • personal_unlockAccount(address: string, passphrase: string, duration?: number): Promise<boolean>
    • +
    • personal_unlockAccount(address: DATA, passphrase: string, duration?: number): Promise<boolean>
    • @@ -2911,15 +3985,24 @@

      personal_unlockAccount

      The unencrypted key will be held in memory until the unlock duration expires. The unlock duration defaults to 300 seconds. An explicit duration of zero seconds unlocks the key until geth exits.

      -

      The account can be used with eth_sign and eth_sendTransaction while it is +

      The account can be used with eth_sign and eth_sendTransaction while it is unlocked.

      +
      +
      example
      +
      // generate an account
      +const passphrase = "passphrase";
      +const newAccount = await provider.send("personal_newAccount", [passphrase] );
      +const isUnlocked = await provider.send("personal_unlockAccount", [newAccount, passphrase] );
      +console.log(isUnlocked);
      +
      +

      Parameters

      • -
        address: string
        +
        address: DATA
        -

        20 Bytes - The address of the account to unlock.

        +

        The address of the account to unlock.

      • @@ -2931,13 +4014,13 @@
        passphrase: string
      • Default value duration: number = 300
        -

        (default: 300) Duration in seconds how long the account +

        (Default: 300) Duration in seconds how long the account should remain unlocked for. Set to 0 to disable automatic locking.

      Returns Promise<boolean>

      -

      true if it worked. Throws an error if it did not.

      +

      true if it worked. Throws an error or returns false if it did not.

    @@ -2954,7 +4037,18 @@

    rpc_modules

  • Defined in chains/ethereum/ethereum/src/api.ts:1870
  • +
    +
    +

    Returns object of RPC modules.

    +
    +
    +
    example
    +
    console.log(await provider.send("rpc_modules"));
    +
    +
    +

    Returns Promise<object>

    +

    RPC modules.

    @@ -2962,7 +4056,7 @@

    Returns Promise

    shh_addToGroup

      -
    • shh_addToGroup(address: string): Promise<boolean>
    • +
    • shh_addToGroup(address: DATA): Promise<boolean>
    • @@ -2973,8 +4067,13 @@

      shh_addToGroup

      -

      Adds a whisper identity to the group

      +

      Adds a whisper identity to the group.

      +
      +
      example
      +
      console.log(await provider.send("shh_addToGroup", ["0x0"] ));
      +
      +

      Parameters

        @@ -2986,7 +4085,7 @@
        address: string

      Returns Promise<boolean>

      -

      true if the identity was successfully added to the group, otherwise false.

      +

      true if the identity was successfully added to the group, otherwise false.

    @@ -2994,7 +4093,7 @@

    Returns Promise

    shh_getFilterChanges

      -
    • shh_getFilterChanges(id: string): Promise<any[]>
    • +
    • shh_getFilterChanges(id: QUANTITY): Promise<any[]>
    • @@ -3007,11 +4106,16 @@

      shh_getFilterChanges

      Polling method for whisper filters. Returns new messages since the last call of this method.

      +
      +
      example
      +
      console.log(await provider.send("shh_getFilterChanges", ["0x0"] ));
      +
      +

      Parameters

      • -
        id: string
        +
        id: QUANTITY

        The filter id. Ex: "0x7"

        @@ -3026,7 +4130,7 @@

        Returns Promise

        shh_getMessages

          -
        • shh_getMessages(id: string): Promise<boolean>
        • +
        • shh_getMessages(id: QUANTITY): Promise<boolean>
        • @@ -3039,18 +4143,23 @@

          shh_getMessages

          Get all messages matching a filter. Unlike shh_getFilterChanges this returns all messages.

          +
          +
          example
          +
          console.log(await provider.send("shh_getMessages", ["0x0"] ));
          +
          +

          Parameters

          • -
            id: string
            +
            id: QUANTITY

            The filter id. Ex: "0x7"

          Returns Promise<boolean>

          -

          See: shh_getFilterChanges

          +

          See: shh_getFilterChanges.

        @@ -3058,7 +4167,7 @@

        Returns Promise

        shh_hasIdentity

          -
        • shh_hasIdentity(address: string): Promise<boolean>
        • +
        • shh_hasIdentity(address: DATA): Promise<boolean>
        • @@ -3071,18 +4180,23 @@

          shh_hasIdentity

          Checks if the client hold the private keys for a given identity.

          +
          +
          example
          +
          console.log(await provider.send("shh_hasIdentity", ["0x0"] ));
          +
          +

          Parameters

          • -
            address: string
            +
            address: DATA

            The identity address to check.

          Returns Promise<boolean>

          -

          returns true if the client holds the privatekey for that identity, otherwise false.

          +

          Returns true if the client holds the private key for that identity, otherwise false.

        @@ -3090,7 +4204,7 @@

        Returns Promise

        shh_newFilter

          -
        • shh_newFilter(to: string, topics: any[]): Promise<boolean>
        • +
        • shh_newFilter(to: DATA, topics: DATA[]): Promise<boolean>
        • @@ -3103,26 +4217,30 @@

          shh_newFilter

          Creates filter to notify, when client receives whisper message matching the filter options.

          +
          +
          example
          +
          console.log(await provider.send("shh_newFilter", ["0x0", []] ));
          +
          +

          Parameters

          • -
            to: string
            +
            to: DATA
            -

            - - ^(optional) Identity of the receiver. When present it will try to decrypt any incoming message +

            (optional) Identity of the receiver. When present it will try to decrypt any incoming message if the client holds the private key to this identity.

          • -
            topics: any[]
            +
            topics: DATA[]
            -

            Array of DATA topics which the incoming message's topics should match.

            +

            Array of topics which the incoming message's topics should match.

          Returns Promise<boolean>

          -

          returns true if the identity was successfully added to the group, otherwise false.

          +

          Returns true if the identity was successfully added to the group, otherwise false.

        @@ -3145,7 +4263,7 @@

        shh_newGroup

        Returns Promise<string>

        -

        the address of the new group.

        +

        The address of the new group.

      @@ -3166,9 +4284,14 @@

      shh_newIdentity

      Creates new whisper identity in the client.

      +
      +
      example
      +
      console.log(await provider.send("shh_newIdentity"));
      +
      +

      Returns Promise<string>

      -

      result - the address of the new identity.

      +

      The address of the new identity.

    @@ -3189,6 +4312,11 @@

    shh_post

    Creates a whisper message and injects it into the network for distribution.

    +
    +
    example
    +
    console.log(await provider.send("shh_post", [{}] ));
    +
    +

    Parameters

      @@ -3197,7 +4325,7 @@
      postData: WhisperPostObject

    Returns Promise<boolean>

    -

    returns true if the message was sent, otherwise false.

    +

    Returns true if the message was sent, otherwise false.

    @@ -3205,7 +4333,7 @@

    Returns Promise

    shh_uninstallFilter

      -
    • shh_uninstallFilter(id: string): Promise<boolean>
    • +
    • shh_uninstallFilter(id: QUANTITY): Promise<boolean>
    • @@ -3217,20 +4345,25 @@

      shh_uninstallFilter

      Uninstalls a filter with given id. Should always be called when watch is no longer needed. - Additionally Filters timeout when they aren't requested with shh_getFilterChanges for a period of time.

      + Additionally filters timeout when they aren't requested with shh_getFilterChanges for a period of time.

      +
      +
      example
      +
      console.log(await provider.send("shh_uninstallFilter", ["0x0"] ));
      +
      +

      Parameters

      • -
        id: string
        +
        id: QUANTITY

        The filter id. Ex: "0x7"

      Returns Promise<boolean>

      -

      true if the filter was successfully uninstalled, otherwise false.

      +

      true if the filter was successfully uninstalled, otherwise false.

    @@ -3251,9 +4384,14 @@

    shh_version

    Returns the current whisper protocol version.

    +
    +
    example
    +
    console.log(await provider.send("shh_version"));
    +
    +

    Returns Promise<string>

    -

    The current whisper protocol version

    +

    The current whisper protocol version.

    @@ -3274,6 +4412,11 @@

    web3_clientVersion

    Returns the current client version.

    +
    +
    example
    +
    console.log(await provider.send("web3_clientVersion"));
    +
    +

    Returns Promise<string>

    The current client version.

    @@ -3284,7 +4427,7 @@

    Returns Promise

    web3_sha3

      -
    • web3_sha3(data: string): Promise<Data>
    • +
    • web3_sha3(data: DATA): Promise<Data>
    • @@ -3297,6 +4440,13 @@

      web3_sha3

      Returns Keccak-256 (not the standardized SHA3-256) of the given data.

      +
      +
      example
      +
      const data = "hello trufflers";
      +const sha3 = await provider.send("web3_sha3", [data] );
      +console.log(sha3);
      +
      +

      Parameters

        @@ -3488,6 +4638,9 @@

        Returns Promise eth_sign +
      • + eth_signTransaction +
      • eth_signTypedData
      • @@ -3524,9 +4677,6 @@

        Returns Promise evm_setAccountNonce -
      • - evm_setStorageAt -
      • evm_setTime
      • @@ -3575,6 +4725,9 @@

        Returns Promise personal_sendTransaction +
      • + personal_signTransaction +
      • personal_unlockAccount
      • diff --git a/scripts/build-docs/index.ts b/scripts/build-docs/index.ts index bcf102b5cc..d647e37710 100644 --- a/scripts/build-docs/index.ts +++ b/scripts/build-docs/index.ts @@ -77,7 +77,13 @@ function renderReturns(method: Method) { method.signatures[0].comment && method.signatures[0].comment.returns ? method.signatures[0].comment.returns : null; - const returnType = renderReturnType(method); + let returnType = renderReturnType(method); + if (returnType.includes("Quantity")) { + returnType = "QUANTITY"; + } + if (returnType.includes("Data")) { + returnType = "DATA"; + } const returnTypeHtml = marked( `\`\`\`typescript function g(): ${returnType} @@ -111,7 +117,10 @@ function renderArgs(method: Method) { if (signature.parameters) { params = signature.parameters.map(param => { const name = param.name + (param.flags.isOptional ? "?" : ""); - const type = getTypeAsString(param.type); + let type = getTypeAsString(param.type); + if (type.includes("Tag")) { + type = type.replace("Tag", "TAG"); + } const md = `\`\`\`typescript function (${name}: ${type}) \`\`\``; @@ -140,7 +149,9 @@ function (${name}: ${type}) } function renderMethodLink(method: Method) { - return `${x(method.name)}`; + return `${x( + method.name + )}`; } function renderMethodDocs(method: Method) { @@ -264,7 +275,16 @@ function renderReturnType(method: Method) { const signature = method.signatures[0]; let returnType = signature.type.name; if (signature.type.typeArguments.length) { - const typeArgs = signature.type.typeArguments.map(getTypeAsString); + let typeArgs = signature.type.typeArguments.map(getTypeAsString); + typeArgs = typeArgs.map(arg => { + if (arg.includes("Quantity")) { + return arg.replace("Quantity", "QUANTITY"); + } else if (arg.includes("Data")) { + return arg.replace("Data", "DATA"); + } else { + return arg; + } + }); returnType = `${returnType}<${typeArgs.join(", ")}>`; } return returnType; @@ -276,6 +296,9 @@ function renderSignature(method: Method) { if (signature.parameters) { params = signature.parameters.map(param => { let type = getTypeAsString(param.type); + if (type.includes("Tag")) { + type = type.replace("Tag", "TAG"); + } return `${x(param.name)}${param.flags.isOptional ? "?" : ""}: ${type}`; }); } @@ -307,18 +330,21 @@ const html = ` - +
        + + +

        Ganache

        + `; diff --git a/src/chains/ethereum/address/npm-shrinkwrap.json b/src/chains/ethereum/address/npm-shrinkwrap.json index e7e5e1637d..4e168b3b80 100644 --- a/src/chains/ethereum/address/npm-shrinkwrap.json +++ b/src/chains/ethereum/address/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/ethereum-address", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/ethereum/block/npm-shrinkwrap.json b/src/chains/ethereum/block/npm-shrinkwrap.json index 6df7b4b459..ec81f6d881 100644 --- a/src/chains/ethereum/block/npm-shrinkwrap.json +++ b/src/chains/ethereum/block/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/ethereum-block", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/ethereum/ethereum/npm-shrinkwrap.json b/src/chains/ethereum/ethereum/npm-shrinkwrap.json index 76559118ea..2390bc1bbe 100644 --- a/src/chains/ethereum/ethereum/npm-shrinkwrap.json +++ b/src/chains/ethereum/ethereum/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/ethereum", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/ethereum/ethereum/src/api.ts b/src/chains/ethereum/ethereum/src/api.ts index 0650ea5925..ccba384943 100644 --- a/src/chains/ethereum/ethereum/src/api.ts +++ b/src/chains/ethereum/ethereum/src/api.ts @@ -5,16 +5,20 @@ import { VM_EXCEPTION, VM_EXCEPTIONS, CodedError, + DATA, WhisperPostObject, BaseFilterArgs, Filter, FilterArgs, FilterTypes, + QUANTITY, RangeFilterArgs, + StorageRangeResult, SubscriptionId, SubscriptionName, - StorageRangeResult, - EthereumRawAccount + EthereumRawAccount, + TransactionTraceOptions, + TraceTransactionResult } from "@ganache/ethereum-utils"; import { Block, RuntimeBlock } from "@ganache/ethereum-block"; import { @@ -34,7 +38,7 @@ import { RPCQUANTITY_EMPTY, JsonRpcErrorCode } from "@ganache/utils"; -import Blockchain, { TransactionTraceOptions } from "./blockchain"; +import Blockchain from "./blockchain"; import { EthereumInternalOptions, Hardfork } from "@ganache/ethereum-options"; import Wallet from "./wallet"; import { $INLINE_JSON } from "ts-transformer-inline-file"; @@ -140,6 +144,10 @@ export default class EthereumApi implements Api { * @param key - Key name. * @param value - String to store. * @returns returns true if the value was stored, otherwise false. + * @example + * ```javascript + * console.log(await provider.send("db_putString", ["testDb", "testKey", "testValue"] )); + * ``` */ @assertArgLength(3) async db_putString(dbName: string, key: string, value: string) { @@ -147,11 +155,15 @@ export default class EthereumApi implements Api { } /** - * Returns string from the local database + * Returns string from the local database. * * @param dbName - Database name. * @param key - Key name. * @returns The previously stored string. + * @example + * ```javascript + * console.log(await provider.send("db_getString", ["testDb", "testKey"] )); + * ``` */ @assertArgLength(2) async db_getString(dbName: string, key: string) { @@ -165,18 +177,26 @@ export default class EthereumApi implements Api { * @param key - Key name. * @param data - Data to store. * @returns true if the value was stored, otherwise false. + * @example + * ```javascript + * console.log(await provider.send("db_putHex", ["testDb", "testKey", "0x0"] )); + * ``` */ @assertArgLength(3) - async db_putHex(dbName: string, key: string, data: string) { + async db_putHex(dbName: string, key: string, data: DATA) { return false; } /** - * Returns binary data from the local database + * Returns binary data from the local database. * * @param dbName - Database name. * @param key - Key name. * @returns The previously stored data. + * @example + * ```javascript + * console.log(await provider.send("db_getHex", ["testDb", "testKey"] )); + * ``` */ @assertArgLength(2) async db_getHex(dbName: string, key: string) { @@ -185,11 +205,27 @@ export default class EthereumApi implements Api { //#endregion //#region bzz + /** + * Returns the kademlia table in a readable table format. + * @returns Returns the kademlia table in a readable table format. + * @example + * ```javascript + * console.log(await provider.send("bzz_hive")); + * ``` + */ @assertArgLength(0) async bzz_hive() { return []; } + /** + * Returns details about the swarm node. + * @returns Returns details about the swarm node. + * @example + * ```javascript + * console.log(await provider.send("bzz_info")); + * ``` + */ @assertArgLength(0) async bzz_info() { return []; @@ -213,13 +249,8 @@ export default class EthereumApi implements Api { * * @example * ```javascript - * await provider.send("evm_mine", Date.now()); - * ``` - * - * @example - * ```javascript * console.log("start", await provider.send("eth_blockNumber")); - * await provider.send("evm_mine", [{blocks: 5}]); // mines 5 blocks + * await provider.send("evm_mine", [{blocks: 5}] ); // mines 5 blocks * console.log("end", await provider.send("eth_blockNumber")); * ``` */ @@ -260,67 +291,25 @@ export default class EthereumApi implements Api { return "0x0"; } - @assertArgLength(3, 4) - async evm_setStorageAt( - address: string, - position: bigint | number, - storage: string, - blockNumber: string | Tag = Tag.LATEST - ) { - const blockchain = this.#blockchain; - const blockProm = blockchain.blocks.getRawByBlockNumber( - blockchain.blocks.getEffectiveNumber(blockNumber) - ); - - const block = await blockProm; - if (!block) throw new Error("header not found"); - - const blockData = decode(block); - const headerData = blockData[0]; - const blockStateRoot = headerData[3]; - const trie = blockchain.trie.copy(false); - trie.root = blockStateRoot; - - const posBuff = Quantity.from(position).toBuffer(); - const length = posBuff.length; - let paddedPosBuff: Buffer; - if (length < 32) { - // storage locations are 32 bytes wide, so we need to expand any value - // given to 32 bytes. - paddedPosBuff = Buffer.allocUnsafe(32).fill(0); - posBuff.copy(paddedPosBuff, 32 - length); - } else if (length === 32) { - paddedPosBuff = posBuff; - } else { - // if the position value we're passed is > 32 bytes, truncate it. This is - // what geth does. - paddedPosBuff = posBuff.slice(-32); - } - - const addressData = await trie.get(Address.from(address).toBuffer()); - // An address's stateRoot is stored in the 3rd rlp entry - blockchain.trie.root = ((decode(addressData) as any) as [ - Buffer /*nonce*/, - Buffer /*amount*/, - Buffer /*stateRoot*/, - Buffer /*codeHash*/ - ])[2]; - - return blockchain.trie.put(paddedPosBuff, Data.from(storage).toBuffer()); - } - /** * Sets the given account's nonce to the specified value. Mines a new block * before returning. * * Warning: this will result in an invalid state tree. * - * @param address - address - * @param nonce - nonce - * @returns `true` if it worked + * @param address - The account address to update. + * @param nonce - The nonce value to be set. + * @returns `true` if it worked, otherwise `false`. + * @example + * ```javascript + * const nonce = "0x3e8"; + * const [address] = await provider.request({ method: "eth_accounts", params: [] }); + * const result = await provider.send("evm_setAccountNonce", [address, nonce] ); + * console.log(result); + * ``` */ @assertArgLength(2) - async evm_setAccountNonce(address: string, nonce: string) { + async evm_setAccountNonce(address: DATA, nonce: QUANTITY) { // TODO: the effect of this function could happen during a block mine operation, which would cause all sorts of // issues. We need to figure out a good way of timing this. const buffer = Address.from(address).toBuffer(); @@ -342,11 +331,17 @@ export default class EthereumApi implements Api { /** * Jump forward in time by the given amount of time, in seconds. - * @param seconds - Must be greater than or equal to `0` + * @param seconds Number of seconds to jump forward in time by. Must be greater than or equal to `0`. * @returns Returns the total time adjustment, in seconds. + * @example + * ```javascript + * const seconds = 10; + * const timeAdjustment = await provider.send("evm_increaseTime", [seconds] ); + * console.log(timeAdjustment); + * ``` */ @assertArgLength(1) - async evm_increaseTime(seconds: number | string) { + async evm_increaseTime(seconds: number | QUANTITY) { const milliseconds = (typeof seconds === "number" ? seconds @@ -361,11 +356,19 @@ export default class EthereumApi implements Api { * new blocks to appear to be mined before old blocks. This is will result in * an invalid state. * - * @param timestamp - JavaScript timestamp (millisecond precision) + * @param time JavaScript timestamp (millisecond precision). * @returns The amount of *seconds* between the given timestamp and now. + * @example + * ```javascript + * const currentDate = Date.now(); + * setTimeout(async () => { + * const time = await provider.send("evm_setTime", [currentDate] ); + * console.log(time); // should be about two seconds ago + * }, 1000); + * ``` */ @assertArgLength(0, 1) - async evm_setTime(time: string | Date | number) { + async evm_setTime(time: number | QUANTITY | Date) { let t: number; switch (typeof time) { case "object": @@ -388,43 +391,39 @@ export default class EthereumApi implements Api { * will delete snapshots with ids 0x1, 0x2, etc... If no snapshot id is * passed it will revert to the latest snapshot. * - * @param snapshotId - the snapshot id to revert - * @returns `true` if a snapshot was reverted, otherwise `false` + * @param snapshotId The snapshot id to revert. + * @returns `true` if a snapshot was reverted, otherwise `false`. * * @example * ```javascript - * const snapshotId = await provider.send("evm_snapshot"); - * const isReverted = await provider.send("evm_revert", [snapshotId]); - * ``` - * - * @example - * ```javascript - * const provider = ganache.provider(); * const [from, to] = await provider.send("eth_accounts"); - * const startingBalance = BigInt(await provider.send("eth_getBalance", [from])); + * const startingBalance = BigInt(await provider.send("eth_getBalance", [from] )); * * // take a snapshot * const snapshotId = await provider.send("evm_snapshot"); * * // send value to another account (over-simplified example) - * await provider.send("eth_subscribe", ["newHeads"]); - * await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}]); + * await provider.send("eth_subscribe", ["newHeads"] ); + * await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}] ); * await provider.once("message"); // Note: `await provider.once` is non-standard * * // ensure balance has updated - * const newBalance = await provider.send("eth_getBalance", [from]); + * const newBalance = await provider.send("eth_getBalance", [from] ); * assert(BigInt(newBalance) < startingBalance); * * // revert the snapshot - * const isReverted = await provider.send("evm_revert", [snapshotId]); + * const isReverted = await provider.send("evm_revert", [snapshotId] ); * assert(isReverted); + * console.log({isReverted: isReverted}); * - * const endingBalance = await provider.send("eth_getBalance", [from]); - * assert.strictEqual(BigInt(endingBalance), startingBalance); + * // ensure balance has reverted + * const endingBalance = await provider.send("eth_getBalance", [from] ); + * const isBalanceReverted = assert.strictEqual(BigInt(endingBalance), startingBalance); + * console.log({isBalanceReverted: isBalanceReverted}); * ``` */ @assertArgLength(1) - async evm_revert(snapshotId: string | number) { + async evm_revert(snapshotId: QUANTITY) { return this.#blockchain.revert(Quantity.from(snapshotId)); } @@ -435,37 +434,34 @@ export default class EthereumApi implements Api { * id cannot be used again. Consider creating a new snapshot after each * `evm_revert` if you need to revert to the same point multiple times. * - * @returns The hex-encoded identifier for this snapshot - * - * @example - * ```javascript - * const snapshotId = await provider.send("evm_snapshot"); - * ``` + * @returns The hex-encoded identifier for this snapshot. * * @example * ```javascript * const provider = ganache.provider(); * const [from, to] = await provider.send("eth_accounts"); - * const startingBalance = BigInt(await provider.send("eth_getBalance", [from])); + * const startingBalance = BigInt(await provider.send("eth_getBalance", [from] )); * * // take a snapshot * const snapshotId = await provider.send("evm_snapshot"); * * // send value to another account (over-simplified example) - * await provider.send("eth_subscribe", ["newHeads"]); - * await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}]); + * await provider.send("eth_subscribe", ["newHeads"] ); + * await provider.send("eth_sendTransaction", [{from, to, value: "0xffff"}] ); * await provider.once("message"); // Note: `await provider.once` is non-standard * * // ensure balance has updated - * const newBalance = await provider.send("eth_getBalance", [from]); + * const newBalance = await provider.send("eth_getBalance", [from] ); * assert(BigInt(newBalance) < startingBalance); * * // revert the snapshot - * const isReverted = await provider.send("evm_revert", [snapshotId]); + * const isReverted = await provider.send("evm_revert", [snapshotId] ); * assert(isReverted); * - * const endingBalance = await provider.send("eth_getBalance", [from]); - * assert.strictEqual(BigInt(endingBalance), startingBalance); + * // ensure balance has reverted + * const endingBalance = await provider.send("eth_getBalance", [from] ); + * const isBalanceReverted = assert.strictEqual(BigInt(endingBalance), startingBalance); + * console.log({isBalanceReverted: isBalanceReverted}); * ``` */ async evm_snapshot() { @@ -474,14 +470,24 @@ export default class EthereumApi implements Api { /** * Unlocks any unknown account. - * @param address - address the address of the account to unlock - * @param duration - (default: disabled) Duration in seconds how long the account + * + * Note: accounts known to the `personal` namespace and accounts returned by + * `eth_accounts` cannot be unlocked using this method. + * + * @param address The address of the account to unlock. + * @param duration (Default: disabled) Duration in seconds how long the account * should remain unlocked for. Set to 0 to disable automatic locking. * @returns `true` if the account was unlocked successfully, `false` if the * account was already unlocked. Throws an error if the account could not be * unlocked. + * @example + * ```javascript + * const address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"; + * const result = await provider.send("evm_unlockUnknownAccount", [address] ); + * console.log(result); + * ``` */ - async evm_unlockUnknownAccount(address: string, duration: number = 0) { + async evm_unlockUnknownAccount(address: DATA, duration: number = 0) { return this.#wallet.unlockUnknownAccount(address.toLowerCase(), duration); } @@ -491,12 +497,18 @@ export default class EthereumApi implements Api { * Note: accounts known to the `personal` namespace and accounts returned by * `eth_accounts` cannot be locked using this method. * - * @param address - address the address of the account to lock + * @param address The address of the account to lock. * @returns `true` if the account was locked successfully, `false` if the * account was already locked. Throws an error if the account could not be * locked. + * @example + * ```javascript + * const address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"; + * const result = await provider.send("evm_lockUnknownAccount", [address] ); + * console.log(result); + * ``` */ - async evm_lockUnknownAccount(address: string) { + async evm_lockUnknownAccount(address: DATA) { const lowerAddress = address.toLowerCase(); // if this is a known account we can't unlock it this way if (this.#wallet.knownAccounts.has(lowerAddress)) { @@ -512,8 +524,17 @@ export default class EthereumApi implements Api { * Resume the CPU mining process with the given number of threads. * * Note: `threads` is ignored. - * @param threads - (ignored) - * @returns true + * @param threads Number of threads to resume the CPU mining process with. + * @returns `true`. + * @example + * ```javascript + * await provider.send("miner_stop"); + * // check that eth_mining returns false + * console.log(await provider.send("eth_mining")); + * await provider.send("miner_start"); + * // check that eth_mining returns true + * console.log(await provider.send("eth_mining")); + * ``` */ @assertArgLength(0, 1) async miner_start(threads: number = 1) { @@ -530,6 +551,15 @@ export default class EthereumApi implements Api { /** * Stop the CPU mining operation. + * @returns `true`. + * @example + * ```javascript + * // check that eth_mining returns true + * console.log(await provider.send("eth_mining")); + * await provider.send("miner_stop"); + * // check that eth_mining returns false + * console.log(await provider.send("eth_mining")); + * ``` */ @assertArgLength(0) async miner_stop() { @@ -538,33 +568,49 @@ export default class EthereumApi implements Api { } /** - * - * @param number - Sets the minimal accepted gas price when mining transactions. + * Sets the minimal accepted gas price when mining transactions. * Any transactions that are below this limit are excluded from the mining * process. + * @param number Minimal accepted gas price. + * @returns `true`. + * @example + * ```javascript + * console.log(await provider.send("miner_setGasPrice", [300000] )); + * ``` */ @assertArgLength(1) - async miner_setGasPrice(number: string) { + async miner_setGasPrice(number: QUANTITY) { this.#options.miner.gasPrice = Quantity.from(number); return true; } /** * Sets the etherbase, where mining rewards will go. - * @param address - address + * @param address The address where the mining rewards will go. + * @returns `true`. + * @example + * ```javascript + * const [account] = await provider.request({ method: "eth_accounts", params: [] }); + * console.log(await provider.send("miner_setEtherbase", [account] )); + * ``` */ @assertArgLength(1) - async miner_setEtherbase(address: string) { + async miner_setEtherbase(address: DATA) { this.#blockchain.coinbase = Address.from(address); return true; } /** * Set the extraData block header field a miner can include. - * @param extra - extra + * @param extra The `extraData` to include. + * @returns If successfully set returns `true`, otherwise returns an error. + * @example + * ```javascript + * console.log(await provider.send("miner_setExtra", ["0x0"] )); + * ``` */ @assertArgLength(1) - async miner_setExtra(extra: string) { + async miner_setExtra(extra: DATA) { const bytes = Data.from(extra); const length = bytes.toBuffer().length; if (length > 32) { @@ -579,6 +625,10 @@ export default class EthereumApi implements Api { /** * Returns the current client version. * @returns The current client version. + * @example + * ```javascript + * console.log(await provider.send("web3_clientVersion")); + * ``` */ @assertArgLength(0) async web3_clientVersion() { @@ -589,9 +639,15 @@ export default class EthereumApi implements Api { * Returns Keccak-256 (not the standardized SHA3-256) of the given data. * @param data - the data to convert into a SHA3 hash. * @returns The SHA3 result of the given string. + * @example + * ```javascript + * const data = "hello trufflers"; + * const sha3 = await provider.send("web3_sha3", [data] ); + * console.log(sha3); + * ``` */ @assertArgLength(1) - async web3_sha3(data: string) { + async web3_sha3(data: DATA) { return Data.from(keccak(Buffer.from(data))); } //#endregion @@ -601,6 +657,10 @@ export default class EthereumApi implements Api { * Returns the current network id. * @returns The current network id. This value should NOT be JSON-RPC * Quantity/Data encoded. + * @example + * ```javascript + * console.log(await provider.send("net_version")); + * ``` */ @assertArgLength(0) async net_version() { @@ -610,6 +670,10 @@ export default class EthereumApi implements Api { /** * Returns `true` if client is actively listening for network connections. * @returns `true` when listening, otherwise `false`. + * @example + * ```javascript + * console.log(await provider.send("net_listening")); + * ``` */ @assertArgLength(0) async net_listening() { @@ -618,7 +682,11 @@ export default class EthereumApi implements Api { /** * Returns number of peers currently connected to the client. - * @returns integer of the number of connected peers. + * @returns Number of connected peers. + * @example + * ```javascript + * console.log(await provider.send("net_peerCount")); + * ``` */ @assertArgLength(0) async net_peerCount() { @@ -628,6 +696,7 @@ export default class EthereumApi implements Api { //#region eth + // TODO: example doesn't return correct value /** * Generates and returns an estimate of how much gas is necessary to allow the * transaction to complete. The transaction will not be added to the @@ -635,19 +704,31 @@ export default class EthereumApi implements Api { * amount of gas actually used by the transaction, for a variety of reasons * including EVM mechanics and node performance. * - * @returns the amount of gas used. + * Transaction call object: + * * `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from. + * * `to`: `DATA`, 20 bytes - The address the transaction is sent to. + * * `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction. + * * `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei. + * * `value`: `QUANTITY` (optional) - Integer of the value in wei. + * * `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters. + * + * @param transaction The transaction call object as seen in source. + * @param blockNumber Integer block number, or the string "latest", "earliest" + * or "pending". + * + * @returns The amount of gas used. * * @example * ```javascript - * const accounts = await provider.request({ method: "eth_accounts", params: [] }); - * const gasEstimate = await provider.request({ method: "eth_estimateGas", params: [{ from: accounts[0], to: accounts[1] }, "latest" ] }); + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * const gasEstimate = await provider.request({ method: "eth_estimateGas", params: [{ from, to }, "latest" ] }); * console.log(gasEstimate); * ``` */ @assertArgLength(1, 2) async eth_estimateGas( - transaction: RpcTransaction, - blockNumber: string | Tag = Tag.LATEST + transaction: any, + blockNumber: QUANTITY | Tag = Tag.LATEST ): Promise { const blockchain = this.#blockchain; const blocks = blockchain.blocks; @@ -694,6 +775,11 @@ export default class EthereumApi implements Api { /** * Returns the current ethereum protocol version. * @returns The current ethereum protocol version. + * @example + * ```javascript + * const version = await provider.request({ method: "eth_protocolVersion", params: [] }); + * console.log(version); + * ``` */ @assertArgLength(0) async eth_protocolVersion() { @@ -701,12 +787,20 @@ export default class EthereumApi implements Api { } /** - * Returns an object with data about the sync status or false. - * @returns An object with sync status data or false, when not syncing: - * startingBlock: \{bigint\} - The block at which the import started (will - * only be reset, after the sync reached his head) - * currentBlock: \{bigint\} - The current block, same as eth_blockNumber - * highestBlock: \{bigint\} - The estimated highest block + * Returns an object containing data about the sync status or `false` when not syncing. + * + * @returns An object with sync status data or `false`, when not syncing. + * + * * `startingBlock`: {bigint} The block at which the import started (will + * only be reset, after the sync reached his head). + * * `currentBlock`: {bigint} The current block, same as `eth_blockNumber`. + * * `highestBlock`: {bigint} The estimated highest block. + * + * @example + * ```javascript + * const result = await provider.request({ method: "eth_syncing", params: [] }); + * console.log(result); + * ``` */ @assertArgLength(0) async eth_syncing() { @@ -715,7 +809,12 @@ export default class EthereumApi implements Api { /** * Returns the client coinbase address. - * @returns 20 bytes - the current coinbase address. + * @returns The current coinbase address. + * @example + * ```javascript + * const coinbaseAddress = await provider.request({ method: "eth_coinbase" }); + * console.log(coinbaseAddress); + * ``` */ @assertArgLength(0) async eth_coinbase() { @@ -724,28 +823,97 @@ export default class EthereumApi implements Api { /** * Returns information about a block by block number. - * @param number - QUANTITY|TAG - integer of a block number, or the string "earliest", "latest" or "pending", as in the + * @param number Integer of a block number, or the string "earliest", "latest" or "pending", as in the * default block parameter. - * @param transactions - Boolean - If true it returns the full transaction objects, if false only the hashes of the + * @param transactions If `true` it returns the full transaction objects, if `false` only the hashes of the * transactions. - * @returns the block, `null` if the block doesn't exist. + * @returns The block, `null` if the block doesn't exist. + * + * * `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending. + * * `parentHash`: `DATA`, 32 Bytes - Hash of the parent block. + * * `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block. + * * `miner`: `DATA`, 20 Bytes - Address of the miner. + * * `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block. + * * `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block. + * * `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block. + * * `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending. + * * `difficulty`: `QUANTITY` - Integer of the difficulty of this block. + * * `number`: `QUANTITY` - The block number. `null` when pending. + * * `gasLimit`: `QUANTITY` - The maximum gas allowed in the block. + * * `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block. + * * `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated. + * * `extraData`: `DATA` - Extra data for the block. + * * `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block. + * * `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending. + * * `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block. + * * `size`: `QUANTITY` - Integer the size of the block in bytes. + * * `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter. + * * `uncles`: `Array` - Array of uncle hashes. + * + * @example + * ```javascript + * const block = await provider.request({ method: "eth_getBlockByNumber", params: ["0x0", false] }); + * console.log(block); + * ``` */ @assertArgLength(1, 2) - async eth_getBlockByNumber(number: string | Tag, transactions = false) { + async eth_getBlockByNumber(number: QUANTITY | Tag, transactions = false) { const block = await this.#blockchain.blocks.get(number).catch(_ => null); return block ? block.toJSON(transactions) : null; } /** * Returns information about a block by block hash. - * @param number - QUANTITY|TAG - integer of a block number, or the string "earliest", "latest" or "pending", as in the - * default block parameter. - * @param transactions - Boolean - If true it returns the full transaction objects, if false only the hashes of the + * @param hash Hash of a block. + * @param transactions If `true` it returns the full transaction objects, if `false` only the hashes of the * transactions. - * @returns Block + * @returns The block, `null` if the block doesn't exist. + * + * * `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending. + * * `parentHash`: `DATA`, 32 Bytes - Hash of the parent block. + * * `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block. + * * `miner`: `DATA`, 20 Bytes - Address of the miner. + * * `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block. + * * `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block. + * * `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block. + * * `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending. + * * `difficulty`: `QUANTITY` - Integer of the difficulty of this block. + * * `number`: `QUANTITY` - The block number. `null` when pending. + * * `gasLimit`: `QUANTITY` - The maximum gas allowed in the block. + * * `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block. + * * `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated. + * * `extraData`: `DATA` - Extra data for the block. + * * `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block. + * * `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending. + * * `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block. + * * `size`: `QUANTITY` - Integer the size of the block in bytes. + * * `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter. + * * `uncles`: `Array` - Array of uncle hashes. + * + * @example + * ```javascript + * // Simple.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // + * // contract Simple { + * // uint256 public value; + * // constructor() payable { + * // value = 5; + * // } + * // } + * const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033"; + * const [from] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * const block = await provider.request({ method: "eth_getBlockByHash", params: [txReceipt.blockHash, true] }); + * console.log(block); + * ``` */ @assertArgLength(1, 2) - async eth_getBlockByHash(hash: string | Buffer, transactions = false) { + async eth_getBlockByHash(hash: DATA, transactions = false) { const block = await this.#blockchain.blocks .getByHash(hash) .catch(_ => null); @@ -754,11 +922,17 @@ export default class EthereumApi implements Api { /** * Returns the number of transactions in a block from a block matching the given block number. - * @param number - QUANTITY|TAG - integer of a block number, or the string "earliest", "latest" or "pending", as in the + * @param number Integer of a block number, or the string "earliest", "latest" or "pending", as in the * default block parameter. + * @returns Integer of the number of transactions in the block. + * @example + * ```javascript + * const txCount = await provider.request({ method: "eth_getBlockTransactionCountByNumber", params: ["0x0"] }); + * console.log(txCount); + * ``` */ @assertArgLength(1) - async eth_getBlockTransactionCountByNumber(blockNumber: string | Tag) { + async eth_getBlockTransactionCountByNumber(blockNumber: QUANTITY | Tag) { const { blocks } = this.#blockchain; const blockNum = blocks.getEffectiveNumber(blockNumber); const rawBlock = await blocks.getRawByBlockNumber(blockNum); @@ -770,10 +944,32 @@ export default class EthereumApi implements Api { /** * Returns the number of transactions in a block from a block matching the given block hash. - * @param hash - DATA, 32 Bytes - hash of a block. + * @param hash Hash of a block. + * @returns Number of transactions in the block. + * @example + * ```javascript + * // Simple.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // + * // contract Simple { + * // uint256 public value; + * // constructor() payable { + * // value = 5; + * // } + * // } + * const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033"; + * const [from] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * const txCount = await provider.request({ method: "eth_getBlockTransactionCountByHash", params: [txReceipt.blockHash] }); + * console.log(txCount); + * ``` */ @assertArgLength(1) - async eth_getBlockTransactionCountByHash(hash: string | Buffer) { + async eth_getBlockTransactionCountByHash(hash: DATA) { const { blocks } = this.#blockchain; const blockNum = await blocks.getNumberFromHash(hash); if (!blockNum) return null; @@ -785,6 +981,15 @@ export default class EthereumApi implements Api { return Quantity.from(rawTransactions.length); } + /** + * Returns a list of available compilers. + * @returns List of available compilers. + * @example + * ```javascript + * const compilers = await provider.send("eth_getCompilers"); + * console.log(compilers); + * ``` + */ @assertArgLength(0) async eth_getCompilers() { return [] as string[]; @@ -792,17 +997,42 @@ export default class EthereumApi implements Api { /** * Returns information about a transaction by block hash and transaction index position. - * @param hash - DATA, 32 Bytes - hash of a block. - * @param index - QUANTITY - integer of the transaction index position. + * @param hash Hash of a block. + * @param index Integer of the transaction index position. + * @returns The transaction object or `null` if no transaction was found. + * + * * `hash`: `DATA`, 32 Bytes - The transaction hash. + * * `nonce`: `QUANTITY` - The number of transactions made by the sender prior to this one. + * * `blockHash`: `DATA`, 32 Bytes - The hash of the block the transaction is in. `null` when pending. + * * `blockNumber`: `QUANTITY` - The number of the block the transaction is in. `null` when pending. + * * `transactionIndex`: `QUANTITY` - The index position of the transaction in the block. + * * `from`: `DATA`, 20 Bytes - The address the transaction is sent from. + * * `to`: `DATA`, 20 Bytes - The address the transaction is sent to. + * * `value`: `QUANTITY` - The value transferred in wei. + * * `gas`: `QUANTITY` - The gas provided by the sender. + * * `gasPrice`: `QUANTITY` - The price of gas in wei. + * * `input`: `DATA` - The data sent along with the transaction. + * * `v`: `QUANTITY` - ECDSA recovery id. + * * `r`: `DATA`, 32 Bytes - ECDSA signature r. + * * `s`: `DATA`, 32 Bytes - ECDSA signature s. + * + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * const { blockHash, transactionIndex } = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * + * const tx = await provider.request({ method: "eth_getTransactionByBlockHashAndIndex", params: [ blockHash, transactionIndex ] }); + * console.log(tx); + * ``` */ @assertArgLength(2) - async eth_getTransactionByBlockHashAndIndex( - hash: string | Buffer, - index: string - ) { + async eth_getTransactionByBlockHashAndIndex(hash: DATA, index: QUANTITY) { const block = await this.eth_getBlockByHash(hash, true); if (block) { - const tx = block.transactions[parseInt(index, 10)]; + const tx = block.transactions[Quantity.from(index).toNumber()]; if (tx) return tx; } return null; @@ -810,105 +1040,225 @@ export default class EthereumApi implements Api { /** * Returns information about a transaction by block number and transaction index position. - * @param number - QUANTITY|TAG - a block number, or the string "earliest", "latest" or "pending", as in the default - * block parameter. - * @param index - QUANTITY - integer of the transaction index position. + * @param number A block number, or the string "earliest", "latest" or "pending". + * @param index Integer of the transaction index position. + * @returns The transaction object or `null` if no transaction was found. + * + * * `hash`: `DATA`, 32 Bytes - The transaction hash. + * * `nonce`: `QUANTITY` - The number of transactions made by the sender prior to this one. + * * `blockHash`: `DATA`, 32 Bytes - The hash of the block the transaction is in. `null` when pending. + * * `blockNumber`: `QUANTITY` - The number of the block the transaction is in. `null` when pending. + * * `transactionIndex`: `QUANTITY` - The index position of the transaction in the block. + * * `from`: `DATA`, 20 Bytes - The address the transaction is sent from. + * * `to`: `DATA`, 20 Bytes - The address the transaction is sent to. + * * `value`: `QUANTITY` - The value transferred in wei. + * * `gas`: `QUANTITY` - The gas provided by the sender. + * * `gasPrice`: `QUANTITY` - The price of gas in wei. + * * `input`: `DATA` - The data sent along with the transaction. + * * `v`: `QUANTITY` - ECDSA recovery id. + * * `r`: `DATA`, 32 Bytes - ECDSA signature r. + * * `s`: `DATA`, 32 Bytes - ECDSA signature s. + * + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * const { transactionIndex } = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * + * const tx = await provider.request({ method: "eth_getTransactionByBlockNumberAndIndex", params: [ "latest", transactionIndex ] }); + * console.log(tx); + * ``` */ @assertArgLength(2) async eth_getTransactionByBlockNumberAndIndex( - number: string | Tag, - index: string + number: QUANTITY | Tag, + index: QUANTITY ) { const block = await this.eth_getBlockByNumber(number, true); - return block.transactions[parseInt(index, 10)]; + return block.transactions[parseInt(Quantity.from(index).toString(), 10)]; } /** * Returns the number of uncles in a block from a block matching the given block hash. - * @param hash - DATA, 32 Bytes - hash of a block. + * @param hash Hash of a block. + * @returns The number of uncles in a block. + * @example + * ```javascript + * const blockHash = await provider.send("eth_getBlockByNumber", ["latest"] ); + * const uncleCount = await provider.send("eth_getUncleCountByBlockHash", [blockHash] ); + * console.log(uncleCount); + * ``` */ @assertArgLength(1) - async eth_getUncleCountByBlockHash(hash: string | Buffer) { + async eth_getUncleCountByBlockHash(hash: DATA) { return RPCQUANTITY_ZERO; } /** * Returns the number of uncles in a block from a block matching the given block hash. - * @param hash - DATA, 32 Bytes - hash of a block. + * @param blockNumber A block number, or the string "earliest", "latest" or "pending". + * @returns The number of uncles in a block. + * @example + * ```javascript + * const uncleCount = await provider.send("eth_getUncleCountByBlockNumber", ["latest"] ); + * console.log(uncleCount); + * ``` */ @assertArgLength(1) - async eth_getUncleCountByBlockNumber(number: string | Buffer) { + async eth_getUncleCountByBlockNumber(blockNumber: QUANTITY | Tag) { return RPCQUANTITY_ZERO; } /** * Returns information about a uncle of a block by hash and uncle index position. * - * @param hash - hash of a block - * @param index - the uncle's index position. + * @param hash Hash of a block. + * @param index The uncle's index position. + * @returns A block object or `null` when no block is found. + * + * * `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending. + * * `parentHash`: `DATA`, 32 Bytes - Hash of the parent block. + * * `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block. + * * `miner`: `DATA`, 20 Bytes - Address of the miner. + * * `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block. + * * `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block. + * * `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block. + * * `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending. + * * `difficulty`: `QUANTITY` - Integer of the difficulty of this block. + * * `number`: `QUANTITY` - The block number. `null` when pending. + * * `gasLimit`: `QUANTITY` - The maximum gas allowed in the block. + * * `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block. + * * `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated. + * * `extraData`: `DATA` - Extra data for the block. + * * `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block. + * * `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending. + * * `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block. + * * `size`: `QUANTITY` - Integer the size of the block in bytes. + * * `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter. + * * `uncles`: `Array` - Array of uncle hashes. + * + * @example + * ```javascript + * const blockHash = await provider.send("eth_getBlockByNumber", ["latest"] ); + * const block = await provider.send("eth_getUncleByBlockHashAndIndex", [blockHash, "0x0"] ); + * console.log(block); + * ``` */ @assertArgLength(2) - async eth_getUncleByBlockHashAndIndex(hash: string, index: string) { + async eth_getUncleByBlockHashAndIndex(hash: DATA, index: QUANTITY) { return null as ReturnType; } /** * Returns information about a uncle of a block by hash and uncle index position. * - * @param blockNumber - a block number, or the string "earliest", "latest" or "pending", as in the default block - * parameter. - * @param uncleIndex - the uncle's index position. + * @param blockNumber A block number, or the string "earliest", "latest" or "pending". + * @param uncleIndex The uncle's index position. + * @returns A block object or `null` when no block is found. + * + * * `hash`: `DATA`, 32 Bytes - Hash of the block. `null` when pending. + * * `parentHash`: `DATA`, 32 Bytes - Hash of the parent block. + * * `sha3Uncles`: `DATA`, 32 Bytes - SHA3 of the uncles data in the block. + * * `miner`: `DATA`, 20 Bytes - Address of the miner. + * * `stateRoot`: `DATA`, 32 Bytes - The root of the state trie of the block. + * * `transactionsRoot`: `DATA`, 32 Bytes - The root of the transaction trie of the block. + * * `receiptsRoot`: `DATA`, 32 Bytes - The root of the receipts trie of the block. + * * `logsBloom`: `DATA`, 256 Bytes - The bloom filter for the logs of the block. `null` when pending. + * * `difficulty`: `QUANTITY` - Integer of the difficulty of this block. + * * `number`: `QUANTITY` - The block number. `null` when pending. + * * `gasLimit`: `QUANTITY` - The maximum gas allowed in the block. + * * `gasUsed`: `QUANTITY` - Total gas used by all transactions in the block. + * * `timestamp`: `QUANTITY` - The unix timestamp for when the block was collated. + * * `extraData`: `DATA` - Extra data for the block. + * * `mixHash`: `DATA`, 256 Bytes - Hash identifier for the block. + * * `nonce`: `DATA`, 8 Bytes - Hash of the generated proof-of-work. `null` when pending. + * * `totalDifficulty`: `QUANTITY` - Integer of the total difficulty of the chain until this block. + * * `size`: `QUANTITY` - Integer the size of the block in bytes. + * * `transactions`: `Array` - Array of transaction objects or 32 Bytes transaction hashes depending on the last parameter. + * * `uncles`: `Array` - Array of uncle hashes. + * + * @example + * ```javascript + * const block = await provider.send("eth_getUncleByBlockNumberAndIndex", ["latest", "0x0"] ); + * console.log(block); + * ``` */ @assertArgLength(2) async eth_getUncleByBlockNumberAndIndex( - blockNumber: string | Tag, - uncleIndex: string + blockNumber: QUANTITY | Tag, + uncleIndex: QUANTITY ) { return null as ReturnType; } /** * Returns: An Array with the following elements - * 1: DATA, 32 Bytes - current block header pow-hash - * 2: DATA, 32 Bytes - the seed hash used for the DAG. - * 3: DATA, 32 Bytes - the boundary condition ("target"), 2^256 / difficulty. + * 1: `DATA`, 32 Bytes - current block header pow-hash + * 2: `DATA`, 32 Bytes - the seed hash used for the DAG. + * 3: `DATA`, 32 Bytes - the boundary condition ("target"), 2^256 / difficulty. * - * @param - filterId - A filter id - * @returns the hash of the current block, the seedHash, and the boundary condition to be met ("target"). + * @param filterId A filter id. + * @returns The hash of the current block, the seedHash, and the boundary condition to be met ("target"). + * @example + * ```javascript + * console.log(await provider.send("eth_getWork", ["0x0"] )); + * ``` */ @assertArgLength(1) - async eth_getWork(filterId: string) { + async eth_getWork(filterId: QUANTITY) { return [] as [string, string, string] | []; } /** - * Used for submitting a proof-of-work solution + * Used for submitting a proof-of-work solution. * - * @param nonce - {DATA, 8 Bytes} The nonce found (64 bits) - * @param powHash - {DATA, 32 Bytes} The header's pow-hash (256 bits) - * @param digest - {DATA, 32 Bytes} The mix digest (256 bits) + * @param nonce The nonce found (64 bits). + * @param powHash The header's pow-hash (256 bits). + * @param digest The mix digest (256 bits). * @returns `true` if the provided solution is valid, otherwise `false`. + * @example + * ```javascript + * const nonce = "0xe0df4bd14ab39a71"; + * const powHash = "0x0000000000000000000000000000000000000000000000000000000000000001"; + * const digest = "0xb2222a74119abd18dbcb7d1f661c6578b7bbeb4984c50e66ed538347f606b971"; + * const result = await provider.request({ method: "eth_submitWork", params: [nonce, powHash, digest] }); + * console.log(result); + * ``` */ @assertArgLength(3) - async eth_submitWork(nonce: string, powHash: string, digest: string) { + async eth_submitWork(nonce: DATA, powHash: DATA, digest: DATA) { return false; } /** * Used for submitting mining hashrate. * - * @param hashRate - a hexadecimal string representation (32 bytes) of the hash rate - * @param clientID - a random hexadecimal(32 bytes) ID identifying the client - * @returns `true` if submitting went through successfully and `false` otherwise. + * @param hashRate A hexadecimal string representation (32 bytes) of the hash rate. + * @param clientID A random hexadecimal(32 bytes) ID identifying the client. + * @returns `true` if submitting went through succesfully and `false` otherwise. + * @example + * ```javascript + * const hashRate = "0x0000000000000000000000000000000000000000000000000000000000000001"; + * const clientId = "0xb2222a74119abd18dbcb7d1f661c6578b7bbeb4984c50e66ed538347f606b971"; + * const result = await provider.request({ method: "eth_submitHashrate", params: [hashRate, clientId] }); + * console.log(result); + * ``` */ @assertArgLength(2) - async eth_submitHashrate(hashRate: string, clientID: string) { + async eth_submitHashrate(hashRate: DATA, clientID: DATA) { return false; } /** * Returns `true` if client is actively mining new blocks. * @returns returns `true` if the client is mining, otherwise `false`. + * @example + * ```javascript + * const isMining = await provider.request({ method: "eth_mining", params: [] }); + * console.log(isMining); + * ``` */ @assertArgLength(0) async eth_mining() { @@ -918,7 +1268,12 @@ export default class EthereumApi implements Api { /** * Returns the number of hashes per second that the node is mining with. - * @returns number of hashes per second. + * @returns Number of hashes per second. + * @example + * ```javascript + * const hashrate = await provider.request({ method: "eth_hashrate", params: [] }); + * console.log(hashrate); + * ``` */ @assertArgLength(0) async eth_hashrate() { @@ -927,7 +1282,12 @@ export default class EthereumApi implements Api { /** * Returns the current price per gas in wei. - * @returns integer of the current gas price in wei. + * @returns Integer of the current gas price in wei. + * @example + * ```javascript + * const gasPrice = await provider.request({ method: "eth_gasPrice", params: [] }); + * console.log(gasPrice); + * ``` */ @assertArgLength(0) async eth_gasPrice() { @@ -937,6 +1297,11 @@ export default class EthereumApi implements Api { /** * Returns a list of addresses owned by client. * @returns Array of 20 Bytes - addresses owned by the client. + * @example + * ```javascript + * const accounts = await provider.request({ method: "eth_accounts", params: [] }); + * console.log(accounts); + * ``` */ @assertArgLength(0) async eth_accounts() { @@ -945,7 +1310,12 @@ export default class EthereumApi implements Api { /** * Returns the number of the most recent block. - * @returns integer of the current block number the client is on. + * @returns The current block number the client is on. + * @example + * ```javascript + * const blockNumber = await provider.request({ method: "eth_blockNumber" }); + * console.log(blockNumber); + * ``` */ @assertArgLength(0) async eth_blockNumber() { @@ -971,14 +1341,23 @@ export default class EthereumApi implements Api { /** * Returns the balance of the account of given address. - * @param address 20 Bytes - address to check for balance. - * @param blockNumber integer block number, or the string "latest", "earliest" - * or "pending", see the default block parameter + * @param address Address to check for balance. + * @param blockNumber Integer block number, or the string "latest", "earliest" + * or "pending". + * + * @returns Integer of the account balance in wei. + * + * @example + * ```javascript + * const accounts = await provider.request({ method: "eth_accounts", params: [] }); + * const balance = await provider.request({ method: "eth_getBalance", params: [accounts[0], "latest"] }); + * console.log(balance); + * ``` */ @assertArgLength(1, 2) async eth_getBalance( - address: string, - blockNumber: string | Buffer | Tag = Tag.LATEST + address: DATA, + blockNumber: QUANTITY | Tag = Tag.LATEST ) { return this.#blockchain.accounts.getBalance( Address.from(address), @@ -989,29 +1368,71 @@ export default class EthereumApi implements Api { /** * Returns code at a given address. * - * @param address 20 Bytes - address - * @param blockNumber integer block number, or the string "latest", "earliest" or "pending", see the default block - * parameter - * @returns the code from the given address. + * @param address Address. + * @param blockNumber Integer block number, or the string "latest", "earliest" or "pending". + * @returns The code from the given address. + * @example + * ```javascript + * // Simple.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // + * // contract Simple { + * // uint256 public value; + * // constructor() payable { + * // value = 5; + * // } + * // } + * const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033"; + * const [from] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * const code = await provider.request({ method: "eth_getCode", params: [txReceipt.contractAddress, "latest"] }); + * console.log(code); + * ``` */ @assertArgLength(1, 2) - async eth_getCode(address: string, blockNumber: string | Tag = Tag.LATEST) { + async eth_getCode(address: DATA, blockNumber: QUANTITY | Tag = Tag.LATEST) { const { accounts } = this.#blockchain; return accounts.getCode(Address.from(address), blockNumber); } /** * Returns the value from a storage position at a given address. - * @param data 20 Bytes - address of the storage. - * @param quantity integer of the position in the storage. - * @param blockNumber integer block number, or the string "latest", "earliest" - * or "pending", see the default block parameter + * @param address Address of the storage. + * @param position Integer of the position in the storage. + * @param blockNumber Integer block number, or the string "latest", "earliest" + * or "pending". + * @returns The value in storage at the requested position. + * @example + * ```javascript + * // Simple.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // + * // contract Simple { + * // uint256 public value; + * // constructor() payable { + * // value = 5; + * // } + * // } + * const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033"; + * const [from] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * const storageValue = await provider.request({ method: "eth_getStorageAt", params: [txReceipt.contractAddress, "0x0", "latest"] }); + * console.log(storageValue); + * ``` */ @assertArgLength(2, 3) async eth_getStorageAt( - address: string, - position: string, - blockNumber: string | Tag = Tag.LATEST + address: DATA, + position: QUANTITY, + blockNumber: QUANTITY | Tag = Tag.LATEST ) { const blockchain = this.#blockchain; const blockNum = blockchain.blocks.getEffectiveNumber(blockNumber); @@ -1051,10 +1472,37 @@ export default class EthereumApi implements Api { /** * Returns the information about a transaction requested by transaction hash. * - * @param transactionHash 32 Bytes - hash of a transaction + * @param transactionHash Hash of a transaction. + * @returns The transaction object or `null` if no transaction was found. + * + * * `hash`: `DATA`, 32 Bytes - The transaction hash. + * * `nonce`: `QUANTITY` - The number of transactions made by the sender prior to this one. + * * `blockHash`: `DATA`, 32 Bytes - The hash of the block the transaction is in. `null` when pending. + * * `blockNumber`: `QUANTITY` - The number of the block the transaction is in. `null` when pending. + * * `transactionIndex`: `QUANTITY` - The index position of the transaction in the block. + * * `from`: `DATA`, 20 Bytes - The address the transaction is sent from. + * * `to`: `DATA`, 20 Bytes - The address the transaction is sent to. + * * `value`: `QUANTITY` - The value transferred in wei. + * * `gas`: `QUANTITY` - The gas provided by the sender. + * * `gasPrice`: `QUANTITY` - The price of gas in wei. + * * `input`: `DATA` - The data sent along with the transaction. + * * `v`: `QUANTITY` - ECDSA recovery id. + * * `r`: `DATA`, 32 Bytes - ECDSA signature r. + * * `s`: `DATA`, 32 Bytes - ECDSA signature s. + * + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * + * const tx = await provider.request({ method: "eth_getTransactionByHash", params: [ txHash ] }); + * console.log(tx); + * ``` */ @assertArgLength(1) - async eth_getTransactionByHash(transactionHash: string) { + async eth_getTransactionByHash(transactionHash: DATA) { const { transactions } = this.#blockchain; const hashBuffer = Data.from(transactionHash).toBuffer(); @@ -1075,13 +1523,23 @@ export default class EthereumApi implements Api { /** * Returns the receipt of a transaction by transaction hash. * - * Note That the receipt is not available for pending transactions. + * Note: The receipt is not available for pending transactions. * - * @param transactionHash 32 Bytes - hash of a transaction + * @param transactionHash Hash of a transaction. * @returns Returns the receipt of a transaction by transaction hash. + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * + * const txReceipt = await provider.request({ method: "eth_getTransactionReceipt", params: [ txHash ] }); + * console.log(txReceipt); + * ``` */ @assertArgLength(1) - async eth_getTransactionReceipt(transactionHash: string) { + async eth_getTransactionReceipt(transactionHash: DATA) { const { transactions, transactionReceipts, blocks } = this.#blockchain; const dataHash = Data.from(transactionHash); const txHash = dataHash.toBuffer(); @@ -1122,8 +1580,25 @@ export default class EthereumApi implements Api { /** * Creates new message call transaction or a contract creation, if the data field contains code. - * @param transaction - * @returns The transaction hash + * + * Transaction call object: + * * `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from. + * * `to`: `DATA`, 20 bytes - The address the transaction is sent to. + * * `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction. + * * `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei. + * * `value`: `QUANTITY` (optional) - Integer of the value in wei. + * * `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters. + * + * @param transaction - The transaction call object as seen in source. + * @returns The transaction hash. + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * console.log(txHash); + * ``` */ @assertArgLength(1) async eth_sendTransaction(transaction: RpcTransaction) { @@ -1166,11 +1641,62 @@ export default class EthereumApi implements Api { return blockchain.queueTransaction(tx); } } + /** + * Signs a transaction that can be submitted to the network at a later time using `eth_sendRawTransaction`. + * + * Transaction call object: + * * `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from. + * * `to`: `DATA`, 20 bytes - The address the transaction is sent to. + * * `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction. + * * `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei. + * * `value`: `QUANTITY` (optional) - Integer of the value in wei. + * * `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters. + * + * @param transaction - The transaction call object as seen in source. + * @returns The raw, signed transaction. + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * const signedTx = await provider.request({ method: "eth_signTransaction", params: [{ from, to }] }); + * console.log(signedTx) + * ``` + */ + @assertArgLength(1) + async eth_signTransaction(transaction: RpcTransaction) { + const blockchain = this.#blockchain; + const tx = new RuntimeTransaction(transaction, blockchain.common); + + if (tx.from == null) { + throw new Error("from not found; is required"); + } + const fromString = tx.from.toString(); + + const wallet = this.#wallet; + const isKnownAccount = wallet.knownAccounts.has(fromString); + const isUnlockedAccount = wallet.unlockedAccounts.has(fromString); + + if (!isUnlockedAccount) { + const msg = isKnownAccount + ? "authentication needed: password or unlock" + : "sender account not recognized"; + throw new Error(msg); + } + const secretKey = wallet.unlockedAccounts.get(fromString).toBuffer(); + tx.signAndHash(secretKey); + return Data.from(tx.serialized).toString(); + } /** * Creates new message call transaction or a contract creation for signed transactions. - * @param transaction - * @returns The transaction hash + * @param transaction The signed transaction data. + * @returns The transaction hash. + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * const signedTx = await provider.request({ method: "eth_signTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * const txHash = await provider.send("eth_sendRawTransaction", [signedTx] ); + * console.log(txHash); + * ``` */ @assertArgLength(1) async eth_sendRawTransaction(transaction: string) { @@ -1191,12 +1717,24 @@ export default class EthereumApi implements Api { * * Note the address to sign with must be unlocked. * - * @param account address - * @param data message to sign - * @returns Signature + * @param address Address to sign with. + * @param message Message to sign. + * @returns Signature - a hex encoded 129 byte array + * starting with `0x`. It encodes the `r`, `s`, and `v` parameters from + * appendix F of the [yellow paper](https://ethereum.github.io/yellowpaper/paper.pdf) + * in big-endian format. Bytes 0...64 contain the `r` parameter, bytes + * 64...128 the `s` parameter, and the last byte the `v` parameter. Note + * that the `v` parameter includes the chain id as specified in [EIP-155](https://eips.ethereum.org/EIPS/eip-155). + * @example + * ```javascript + * const [account] = await provider.request({ method: "eth_accounts", params: [] }); + * const msg = "0x307866666666666666666666"; + * const signature = await provider.request({ method: "eth_sign", params: [account, msg] }); + * console.log(signature); + * ``` */ @assertArgLength(2) - async eth_sign(address: string | Buffer, message: string | Buffer) { + async eth_sign(address: DATA, message: DATA) { const account = Address.from(address).toString().toLowerCase(); const privateKey = this.#wallet.unlockedAccounts.get(account); @@ -1221,9 +1759,52 @@ export default class EthereumApi implements Api { * 64...128 the `s` parameter, and the last byte the `v` parameter. Note * that the `v` parameter includes the chain id as specified in [EIP-155](https://eips.ethereum.org/EIPS/eip-155). * @EIP [712](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md) + * @example + * ```javascript + * const [account] = await provider.request({ method: "eth_accounts", params: [] }); + * const typedData = { + * types: { + * EIP712Domain: [ + * { name: 'name', type: 'string' }, + * { name: 'version', type: 'string' }, + * { name: 'chainId', type: 'uint256' }, + * { name: 'verifyingContract', type: 'address' }, + * ], + * Person: [ + * { name: 'name', type: 'string' }, + * { name: 'wallet', type: 'address' } + * ], + * Mail: [ + * { name: 'from', type: 'Person' }, + * { name: 'to', type: 'Person' }, + * { name: 'contents', type: 'string' } + * ], + * }, + * primaryType: 'Mail', + * domain: { + * name: 'Ether Mail', + * version: '1', + * chainId: 1, + * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', + * }, + * message: { + * from: { + * name: 'Cow', + * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', + * }, + * to: { + * name: 'Bob', + * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + * }, + * contents: 'Hello, Bob!', + * }, + * }; + * const signature = await provider.request({ method: "eth_signTypedData", params: [account, typedData] }); + * console.log(signature); + * ``` */ @assertArgLength(2) - async eth_signTypedData(address: string | Buffer, typedData: TypedData) { + async eth_signTypedData(address: DATA, typedData: TypedData) { const account = Address.from(address).toString().toLowerCase(); const privateKey = this.#wallet.unlockedAccounts.get(account); @@ -1259,8 +1840,13 @@ export default class EthereumApi implements Api { * the subscription a JSON-RPC notification with event details and * subscription ID will be sent to a client. * - * @param subscriptionName + * @param subscriptionName Name for the subscription. * @returns A subscription id. + * @example + * ```javascript + * const subscriptionId = await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * console.log(subscriptionId); + * ``` */ eth_subscribe(subscriptionName: SubscriptionName): PromiEvent; /** @@ -1389,6 +1975,19 @@ export default class EthereumApi implements Api { } } + /** + * Cancel a subscription to a particular event. Returns a boolean indicating + * if the subscription was successfully cancelled. + * + * @param subscriptionId The ID of the subscription to unsubscribe to. + * @returns `true` if subscription was cancelled successfully, otherwise `false`. + * @example + * ```javascript + * const subscriptionId = await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const result = await provider.request({ method: "eth_unsubscribe", params: [subscriptionId] }); + * console.log(result); + * ``` + */ @assertArgLength(1) async eth_unsubscribe(subscriptionId: SubscriptionId) { const subscriptions = this.#subscriptions; @@ -1407,6 +2006,11 @@ export default class EthereumApi implements Api { * if the state has changed, call `eth_getFilterChanges`. * * @returns A filter id. + * @example + * ```javascript + * const filterId = await provider.request({ method: "eth_newBlockFilter", params: [] }); + * console.log(filterId); + * ``` */ @assertArgLength(0) async eth_newBlockFilter() { @@ -1429,6 +2033,11 @@ export default class EthereumApi implements Api { * arrive. To check if the state has changed, call `eth_getFilterChanges`. * * @returns A filter id. + * @example + * ```javascript + * const filterId = await provider.request({ method: "eth_newPendingTransactionFilter", params: [] }); + * console.log(filterId); + * ``` */ @assertArgLength(0) async eth_newPendingTransactionFilter() { @@ -1471,7 +2080,23 @@ export default class EthereumApi implements Api { * * `[[A, B], [A, B]]` “(A OR B) in first position AND (A OR B) in second * position (and anything after)” * - * @param filter - The filter options + * Filter options: + * * `fromBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string "latest", "earliest" + * or "pending". + * * `toBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string "latest", "earliest" + * or "pending". + * * `address`: `DATA | Array` (optional) - Contract address or a list of addresses from which the logs should originate. + * * `topics`: `Array of DATA` (optional) - Array of 32 Bytes `DATA` topcis. Topics are order-dependent. Each topic can also + * be an array of `DATA` with "or" options. + * + * @param filter The filter options as seen in source. + * + * @returns A filter id. + * @example + * ```javascript + * const filterId = await provider.request({ method: "eth_newFilter", params: [] }); + * console.log(filterId); + * ``` */ @assertArgLength(0, 1) async eth_newFilter(filter?: RangeFilterArgs) { @@ -1500,13 +2125,60 @@ export default class EthereumApi implements Api { * or transaction hashes, depending on the filter type, which occurred since * last poll. * - * @param filterId - the filter id. - * @returns an array of logs, block hashes, or transaction hashes, depending + * @param filterId The filter id. + * @returns An array of logs, block hashes, or transaction hashes, depending * on the filter type, which occurred since last poll. + * + * For filters created with `eth_newBlockFilter` the return are block hashes (`DATA`, 32 Bytes). + * + * For filters created with `eth_newPendingTransactionFilter` the return are transaction hashes (`DATA`, 32 Bytes). + * + * For filters created with `eth_newFilter` the return are log objects with the following parameters: + * * `removed`: `TAG` - `true` when the log was removed, `false` if its a valid log. + * * `logIndex`: `QUANTITY` - Integer of the log index position in the block. `null` when pending. + * * `transactionIndex`: `QUANTITY` - Integer of the transactions index position. `null` when pending. + * * `transactionHash`: `DATA`, 32 Bytes - Hash of the transaction where the log was. `null` when pending. + * * `blockHash`: `DATA`, 32 Bytes - Hash of the block where the log was. `null` when pending. + * * `blockNumber`: `QUANTITY` - The block number where the log was in. `null` when pending. + * * `address`: `DATA`, 20 Bytes - The address from which the log originated. + * * `data`: `DATA` - Contains one or more 32 Bytes non-indexed arguments of the log. + * * `topics`: `Array of DATA` - Array of 0 to 4 32 Bytes `DATA` of indexed log arguments. + * + * @example + * ```javascript + * // Logs.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // contract Logs { + * // event Event(uint256 indexed first, uint256 indexed second); + * // constructor() { + * // emit Event(1, 2); + * // } + * // + * // function logNTimes(uint8 n) public { + * // for (uint8 i = 0; i < n; i++) { + * // emit Event(i, i); + * // } + * // } + * // } + * + * const logsContract = "0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033"; + * const [from] = await provider.send("eth_accounts"); + * const filterId = await provider.send("eth_newFilter"); + * + * const subscriptionId = await provider.send("eth_subscribe", ["newHeads"]); + * await provider.send("eth_sendTransaction", [{ from, data: logsContract, gas: "0x5b8d80" }] ); + * await provider.once("message"); + * + * const changes = await provider.request({ method: "eth_getFilterChanges", params: [filterId] }); + * console.log(changes); + * + * await provider.send("eth_unsubscribe", [subscriptionId]); + * ``` */ @assertArgLength(1) - async eth_getFilterChanges(filterId: string) { - const filter = this.#filters.get(filterId); + async eth_getFilterChanges(filterId: QUANTITY) { + const filter = this.#filters.get(Quantity.from(filterId).toString()); if (filter) { const updates = filter.updates; filter.updates = []; @@ -1520,26 +2192,63 @@ export default class EthereumApi implements Api { * Uninstalls a filter with given id. Should always be called when watch is * no longer needed. * - * @param filterId - the filter id. + * @param filterId The filter id. * @returns `true` if the filter was successfully uninstalled, otherwise * `false`. + * @example + * ```javascript + * const filterId = await provider.request({ method: "eth_newFilter", params: [] }); + * const result = await provider.request({ method: "eth_uninstallFilter", params: [filterId] }); + * console.log(result); + * ``` */ @assertArgLength(1) - async eth_uninstallFilter(filterId: string) { - const filter = this.#filters.get(filterId); + async eth_uninstallFilter(filterId: QUANTITY) { + const id = Quantity.from(filterId).toString(); + const filter = this.#filters.get(id); if (!filter) return false; filter.unsubscribe(); - return this.#filters.delete(filterId); + return this.#filters.delete(id); } /** * Returns an array of all logs matching filter with given id. * + * @param filterId The filter id. * @returns Array of log objects, or an empty array. + * @example + * ```javascript + * // Logs.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // contract Logs { + * // event Event(uint256 indexed first, uint256 indexed second); + * // constructor() { + * // emit Event(1, 2); + * // } + * // + * // function logNTimes(uint8 n) public { + * // for (uint8 i = 0; i < n; i++) { + * // emit Event(i, i); + * // } + * // } + * // } + * + * const logsContract = "0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033"; + * const [from] = await provider.send("eth_accounts"); + * const filterId = await provider.send("eth_newFilter"); + * + * await provider.send("eth_subscribe", ["newHeads"]); + * await provider.send("eth_sendTransaction", [{ from, data: logsContract, gas: "0x5b8d80" }] ); + * await provider.once("message"); + * + * const logs = await provider.request({ method: "eth_getFilterLogs", params: [filterId] }); + * console.log(logs); + * ``` */ @assertArgLength(1) - async eth_getFilterLogs(filterId: string) { - const filter = this.#filters.get(filterId); + async eth_getFilterLogs(filterId: QUANTITY) { + const filter = this.#filters.get(Quantity.from(filterId).toString()); if (filter && filter.type === FilterTypes.log) { return this.eth_getLogs(filter.filter); } else { @@ -1550,8 +2259,49 @@ export default class EthereumApi implements Api { /** * Returns an array of all logs matching a given filter object. * - * @param filter - The filter options + * Filter options: + * * `fromBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string "latest", "earliest" + * or "pending". + * * `toBlock`: `QUANTITY | TAG` (optional) - Integer block number, or the string "latest", "earliest" + * or "pending". + * * `address`: `DATA | Array` (optional) - Contract address or a list of addresses from which the logs should originate. + * * `topics`: `Array of DATA` (optional) - Array of 32 Bytes `DATA` topcis. Topics are order-dependent. Each topic can also + * be an array of `DATA` with "or" options. + * * `blockHash`: `DATA`, 32 Bytes (optional) - Hash of the block to restrict logs from. If `blockHash` is present, + * then neither `fromBlock` or `toBlock` are allowed. + * + * @param filter The filter options as seen in source. * @returns Array of log objects, or an empty array. + * @example + * ```javascript + * // Logs.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // contract Logs { + * // event Event(uint256 indexed first, uint256 indexed second); + * // constructor() { + * // emit Event(1, 2); + * // } + * // + * // function logNTimes(uint8 n) public { + * // for (uint8 i = 0; i < n; i++) { + * // emit Event(i, i); + * // } + * // } + * // } + * + * const logsContract = "0x608060405234801561001057600080fd5b50600260017f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a360e58061004f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635e19e69f14602d575b600080fd5b605960048036036020811015604157600080fd5b81019080803560ff169060200190929190505050605b565b005b60005b8160ff168160ff16101560ab578060ff168160ff167f34e802e5ebd1f132e05852c5064046c1b535831ec52f1c4997fc6fdc4d5345b360405160405180910390a38080600101915050605e565b505056fea26469706673582212201af9c13c7b00e2b628c1258d45f9f62d2aad8cd32fc32fd9515d8ad1e792679064736f6c63430007040033"; + * const [from] = await provider.send("eth_accounts"); + * + * await provider.send("eth_subscribe", ["newHeads"]); + * const txHash = await provider.send("eth_sendTransaction", [{ from, data: logsContract, gas: "0x5b8d80" }] ); + * await provider.once("message"); + * + * const { contractAddress } = await provider.send("eth_getTransactionReceipt", [txHash] ); + * + * const logs = await provider.request({ method: "eth_getLogs", params: [{ address: contractAddress }] }); + * console.log(logs); + * ``` */ @assertArgLength(1) async eth_getLogs(filter: FilterArgs) { @@ -1561,15 +2311,25 @@ export default class EthereumApi implements Api { /** * Returns the number of transactions sent from an address. * - * @param address - address - * @param blockNumber - integer block number, or the string "latest", "earliest" - * or "pending", see the default block parameter - * @returns integer of the number of transactions sent from this address. + * @param address `DATA`, 20 Bytes - The address to get number of transactions sent from + * @param blockNumber Integer block number, or the string "latest", "earliest" + * or "pending". + * @returns Number of transactions sent from this address. + * @example + * ```javascript + * const [from, to] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * await provider.request({ method: "eth_sendTransaction", params: [{ from, to, gas: "0x5b8d80" }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * + * const txCount = await provider.request({ method: "eth_getTransactionCount", params: [ from, "latest" ] }); + * console.log(txCount); + * ``` */ @assertArgLength(1, 2) async eth_getTransactionCount( - address: string, - blockNumber: string | Tag = Tag.LATEST + address: DATA, + blockNumber: QUANTITY | Tag = Tag.LATEST ) { return this.#blockchain.accounts.getNonce( Address.from(address), @@ -1580,16 +2340,40 @@ export default class EthereumApi implements Api { /** * Executes a new message call immediately without creating a transaction on the block chain. * - * @param transaction - transaction - * @param blockNumber - blockNumber + * Transaction call object: + * * `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from. + * * `to`: `DATA`, 20 bytes - The address the transaction is sent to. + * * `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction. + * * `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei. + * * `value`: `QUANTITY` (optional) - Integer of the value in wei. + * * `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters. * - * @returns the return value of executed contract. + * @param transaction - The transaction call object as seen in source. + * @param blockNumber Integer block number, or the string "latest", "earliest" + * or "pending". + * + * @returns The return value of executed contract. + * @example + * ```javascript + * // Simple.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // + * // contract Simple { + * // uint256 public value; + * // constructor() payable { + * // value = 5; + * // } + * // } + * const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033"; + * const [from] = await provider.request({ method: "eth_accounts", params: [] }); + * const txObj = { from, gas: "0x5b8d80", gasPrice: "0x1dfd14000", value:"0x0", data: simpleSol }; + * const result = await provider.request({ method: "eth_call", params: [txObj, "latest"] }); + * console.log(result); + * ``` */ @assertArgLength(1, 2) - async eth_call( - transaction: any, - blockNumber: string | Buffer | Tag = Tag.LATEST - ) { + async eth_call(transaction: any, blockNumber: QUANTITY | Tag = Tag.LATEST) { const blockchain = this.#blockchain; const blocks = blockchain.blocks; const parentBlock = await blocks.get(blockNumber); @@ -1664,9 +2448,21 @@ export default class EthereumApi implements Api { * * `disableMemory`: \{boolean\} Setting this to `true` will disable memory capture (default = `false`). * * `disableStack`: \{boolean\} Setting this to `true` will disable stack capture (default = `false`). * - * @param transactionHash - transactionHash - * @param options - options - * @returns returns comment + * @param transactionHash Hash of the transaction to trace. + * @param options - See options in source. + * @returns Returns the `gas`, `structLogs`, and `returnValue` for the traced transaction. + * + * The `structLogs` are an array of logs, which contains the following fields: + * * `depth`: The execution depth. + * * `error`: Information about an error, if one occurred. + * * `gas`: The number of gas remaining. + * * `gasCost`: The cost of gas in wei. + * * `memory`: An array containing the contract's memory data. + * * `op`: The current opcode. + * * `pc`: The current program counter. + * * `stack`: The EVM execution stack. + * * `storage`: An object containing the contract's storage data. + * * @example * ```javascript * // Simple.sol @@ -1689,38 +2485,68 @@ export default class EthereumApi implements Api { * ``` */ async debug_traceTransaction( - transactionHash: string, + transactionHash: DATA, options?: TransactionTraceOptions - ) { + ): Promise { return this.#blockchain.traceTransaction(transactionHash, options || {}); } + // TODO: example doesn't return correct value /** * Attempts to replay the transaction as it was executed on the network and * return storage data given a starting key and max number of entries to return. * - * @param blockHash - DATA, 32 Bytes - hash of a block - * @param transactionIndex - QUANTITY - the index of the transaction in the block - * @param contractAddress - DATA, 20 Bytes - address of the contract - * @param startKey - hash of the start key for grabbing storage entries - * @param maxResult - integer of maximum number of storage entries to return - * @returns returns a storage object with the keys being keccak-256 hashes of the storage keys, - * and the values being the raw, un-hashed key and value for that specific storage slot. Also + * @param blockHash Hash of a block. + * @param transactionIndex Integer of the transaction index position. + * @param contractAddress Address of the contract. + * @param startKey Hash of the start key for grabbing storage entries. + * @param maxResult Integer of maximum number of storage entries to return. + * @returns Returns a storage object with the keys being keccak-256 hashes of the storage keys, + * and the values being the raw, unhashed key and value for that specific storage slot. Also * returns a next key which is the keccak-256 hash of the next key in storage for continuous downloading. + * @example + * ```javascript + * // Simple.sol + * // // SPDX-License-Identifier: MIT + * // pragma solidity ^0.7.4; + * // + * // contract Simple { + * // uint256 public value; + * // constructor() payable { + * // value = 5; + * // } + * // } + * const simpleSol = "0x6080604052600560008190555060858060196000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea26469706673582212200897f7766689bf7a145227297912838b19bcad29039258a293be78e3bf58e20264736f6c63430007040033"; + * const [from] = await provider.request({ method: "eth_accounts", params: [] }); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const initialTxHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, gas: "0x5b8d80", data: simpleSol }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * + * const {contractAddress} = await provider.request({ method: "eth_getTransactionReceipt", params: [initialTxHash] }); + * + * // set value to 19 + * const data = "0x552410770000000000000000000000000000000000000000000000000000000000000019"; + * const txHash = await provider.request({ method: "eth_sendTransaction", params: [{ from, to: contractAddress, data }] }); + * await provider.once("message"); // Note: `await provider.once` is non-standard + * + * const { blockHash, transactionIndex } = await provider.request({ method: "eth_getTransactionReceipt", params: [txHash] }); + * const storage = await provider.request({ method: "debug_storageRangeAt", params: [blockHash, transactionIndex, contractAddress, "0x01", 1] }); + * console.log(storage); + * ``` */ async debug_storageRangeAt( - blockHash: string | Buffer, + blockHash: DATA, transactionIndex: number, - contractAddress: string, - startKey: string | Buffer, + contractAddress: DATA, + startKey: DATA, maxResult: number ): Promise { return this.#blockchain.storageRangeAt( blockHash, - transactionIndex, + Quantity.from(transactionIndex).toNumber(), contractAddress, startKey, - maxResult + Quantity.from(maxResult).toNumber() ); } @@ -1730,18 +2556,29 @@ export default class EthereumApi implements Api { /** * Returns all the Ethereum account addresses of all keys that have been * added. - * @returns the Ethereum account addresses of all keys that have been added. + * @returns The Ethereum account addresses of all keys that have been added. + * @example + * ```javascript + * console.log(await provider.send("personal_listAccounts")); + * ``` */ @assertArgLength(0) async personal_listAccounts() { return this.#wallet.addresses; } + // TODO: example doesn't return correct value /** * Generates a new account with private key. Returns the address of the new * account. - * @param passphrase - passphrase - * @returns The new account's address + * @param passphrase The passphrase to encrypt the private key with. + * @returns The new account's address. + * @example + * ```javascript + * const passphrase = "passphrase"; + * const address = await provider.send("personal_newAccount", [passphrase] ); + * console.log(address); + * ``` */ @assertArgLength(1) async personal_newAccount(passphrase: string) { @@ -1766,12 +2603,20 @@ export default class EthereumApi implements Api { /** * Imports the given unencrypted private key (hex string) into the key store, encrypting it with the passphrase. * - * @param rawKey - rawKey - * @param passphrase - passphrase + * @param rawKey The raw, unencrypted private key to import. + * @param passphrase The passphrase to encrypt with. * @returns Returns the address of the new account. + * @example + * ```javascript + * const rawKey = "0x0123456789012345678901234567890123456789012345678901234567890123"; + * const passphrase = "passphrase"; + * + * const address = await provider.send("personal_importRawKey",[rawKey, passphrase] ); + * console.log(address); + * ``` */ @assertArgLength(2) - async personal_importRawKey(rawKey: string, passphrase: string) { + async personal_importRawKey(rawKey: DATA, passphrase: string) { if (typeof passphrase !== "string") { throw new Error("missing value for required argument `passphrase`"); } @@ -1792,13 +2637,21 @@ export default class EthereumApi implements Api { /** * Locks the account. The account can no longer be used to send transactions. - * @param address + * @param address The account address to be locked. + * @returns Returns `true` if the account was locked, otherwise `false`. + * @example + * ```javascript + * const [account] = await provider.send("personal_listAccounts"); + * const isLocked = await provider.send("personal_lockAccount", [account] ); + * console.log(isLocked); + * ``` */ @assertArgLength(1) - async personal_lockAccount(address: string) { + async personal_lockAccount(address: DATA) { return this.#wallet.lockAccount(address.toLowerCase()); } + // TODO: example doesn't return correct value /** * Unlocks the account for use. * @@ -1806,17 +2659,25 @@ export default class EthereumApi implements Api { * expires. The unlock duration defaults to 300 seconds. An explicit duration * of zero seconds unlocks the key until geth exits. * - * The account can be used with eth_sign and eth_sendTransaction while it is + * The account can be used with `eth_sign` and `eth_sendTransaction` while it is * unlocked. * @param address - 20 Bytes - The address of the account to unlock. * @param passphrase - Passphrase to unlock the account. * @param duration - (default: 300) Duration in seconds how long the account * should remain unlocked for. Set to 0 to disable automatic locking. - * @returns true if it worked. Throws an error if it did not. + * @returns `true` if it worked. Throws an error or returns `false` if it did not. + * @example + * ```javascript + * // generate an account + * const passphrase = "passphrase"; + * const newAccount = await provider.send("personal_newAccount", [passphrase] ); + * const isUnlocked = await provider.send("personal_unlockAccount", [newAccount, passphrase] ); + * console.log(isUnlocked); + * ``` */ @assertArgLength(2, 3) async personal_unlockAccount( - address: string, + address: DATA, passphrase: string, duration: number = 300 ) { @@ -1830,14 +2691,33 @@ export default class EthereumApi implements Api { /** * Validate the given passphrase and submit transaction. * - * The transaction is the same argument as for eth_sendTransaction and + * The transaction is the same argument as for `eth_sendTransaction` and * contains the from address. If the passphrase can be used to decrypt the - * private key belonging to tx.from the transaction is verified, signed and + * private key belonging to `tx.from` the transaction is verified, signed and * send onto the network. The account is not unlocked globally in the node * and cannot be used in other RPC calls. * - * @param txData - txData - * @param passphrase - passphrase + * Transaction call object: + * * `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from. + * * `to`: `DATA`, 20 bytes - The address the transaction is sent to. + * * `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction. + * * `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei. + * * `value`: `QUANTITY` (optional) - Integer of the value in wei. + * * `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters. + * + * @param txData - The transaction call object as seen in source. + * @param passphrase - The passphrase to decrpyt the private key belonging to `tx.from`. + * @returns The transaction hash or if unsuccessful an error. + * @example + * ```javascript + * const passphrase = "passphrase"; + * const newAccount = await provider.send("personal_newAccount", [passphrase] ); + * const [to] = await provider.send("personal_listAccounts"); + * + * // use account and passphrase to send the transaction + * const txHash = await provider.send("personal_sendTransaction", [{ from: newAccount, to, gasLimit: "0x5b8d80" }, passphrase] ); + * console.log(txHash); + * ``` */ @assertArgLength(2) async personal_sendTransaction(transaction: any, passphrase: string) { @@ -1863,9 +2743,69 @@ export default class EthereumApi implements Api { return blockchain.queueTransaction(tx); } + /** + * Validates the given passphrase and signs a transaction that can be + * submitted to the network at a later time using `eth_sendRawTransaction`. + * + * The transaction is the same argument as for `eth_signTransaction` and + * contains the from address. If the passphrase can be used to decrypt the + * private key belonging to `tx.from` the transaction is verified and signed. + * The account is not unlocked globally in the node and cannot be used in other RPC calls. + * + * Transaction call object: + * * `from`: `DATA`, 20 bytes (optional) - The address the transaction is sent from. + * * `to`: `DATA`, 20 bytes - The address the transaction is sent to. + * * `gas`: `QUANTITY` (optional) - Integer of the maximum gas allowance for the transaction. + * * `gasPrice`: `QUANTITY` (optional) - Integer of the price of gas in wei. + * * `value`: `QUANTITY` (optional) - Integer of the value in wei. + * * `data`: `DATA` (optional) - Hash of the method signature and the ABI encoded parameters. + * + * @param transaction - The transaction call object as seen in source. + * @returns The raw, signed transaction. + * @example + * ```javascript + * const [to] = await provider.request({ method: "eth_accounts", params: [] }); + * const passphrase = "passphrase"; + * const from = await provider.send("personal_newAccount", [passphrase] ); + * await provider.request({ method: "eth_subscribe", params: ["newHeads"] }); + * const signedTx = await provider.request({ method: "personal_signTransaction", params: [{ from, to }, passphrase] }); + * console.log(signedTx) + * ``` + */ + @assertArgLength(2) + async personal_signTransaction( + transaction: RpcTransaction, + passphrase: string + ) { + const blockchain = this.#blockchain; + const tx = new RuntimeTransaction(transaction, blockchain.common); + + if (tx.from == null) { + throw new Error("from not found; is required"); + } + const fromString = tx.from.toString(); + + const wallet = this.#wallet; + const encryptedKeyFile = wallet.encryptedKeyFiles.get(fromString); + if (encryptedKeyFile === undefined || encryptedKeyFile === null) { + throw new Error("no key for given address or file"); + } + + const secretKey = await wallet.decrypt(encryptedKeyFile, passphrase); + tx.signAndHash(secretKey); + return Data.from(tx.serialized).toString(); + } //#endregion //#region rpc + /** + * Returns object of RPC modules. + * @returns RPC modules. + * @example + * ```javascript + * console.log(await provider.send("rpc_modules")); + * ``` + */ @assertArgLength(0) async rpc_modules() { return RPC_MODULES; @@ -1877,7 +2817,11 @@ export default class EthereumApi implements Api { /** * Creates new whisper identity in the client. * - * @returns result - the address of the new identity. + * @returns - The address of the new identity. + * @example + * ```javascript + * console.log(await provider.send("shh_newIdentity")); + * ``` */ @assertArgLength(0) async shh_newIdentity() { @@ -1888,17 +2832,21 @@ export default class EthereumApi implements Api { * Checks if the client hold the private keys for a given identity. * * @param address - The identity address to check. - * @returns returns true if the client holds the privatekey for that identity, otherwise false. + * @returns Returns `true` if the client holds the private key for that identity, otherwise `false`. + * @example + * ```javascript + * console.log(await provider.send("shh_hasIdentity", ["0x0"] )); + * ``` */ @assertArgLength(1) - async shh_hasIdentity(address: string) { + async shh_hasIdentity(address: DATA) { return false; } /** * Creates a new group. * - * @returns the address of the new group. + * @returns The address of the new group. */ @assertArgLength(0) async shh_newGroup() { @@ -1906,39 +2854,50 @@ export default class EthereumApi implements Api { } /** - * Adds a whisper identity to the group + * Adds a whisper identity to the group. * * @param address - The identity address to add to a group. - * @returns true if the identity was successfully added to the group, otherwise false. + * @returns `true` if the identity was successfully added to the group, otherwise `false`. + * @example + * ```javascript + * console.log(await provider.send("shh_addToGroup", ["0x0"] )); + * ``` */ @assertArgLength(1) - async shh_addToGroup(address: string) { + async shh_addToGroup(address: DATA) { return false; } /** * Creates filter to notify, when client receives whisper message matching the filter options. * - * @param to - - * ^(optional) Identity of the receiver. When present it will try to decrypt any incoming message + * @param to - (optional) Identity of the receiver. When present it will try to decrypt any incoming message * if the client holds the private key to this identity. - * @param topics - Array of DATA topics which the incoming message's topics should match. - * @returns returns true if the identity was successfully added to the group, otherwise false. + * @param topics - Array of topics which the incoming message's topics should match. + * @returns Returns `true` if the identity was successfully added to the group, otherwise `false`. + * @example + * ```javascript + * console.log(await provider.send("shh_newFilter", ["0x0", []] )); + * ``` */ @assertArgLength(2) - async shh_newFilter(to: string, topics: any[]) { + async shh_newFilter(to: DATA, topics: DATA[]) { return false; } /** * Uninstalls a filter with given id. Should always be called when watch is no longer needed. - * Additionally Filters timeout when they aren't requested with shh_getFilterChanges for a period of time. + * Additionally filters timeout when they aren't requested with `shh_getFilterChanges` for a period of time. * * @param id - The filter id. Ex: "0x7" - * @returns true if the filter was successfully uninstalled, otherwise false. + * @returns `true` if the filter was successfully uninstalled, otherwise `false`. + * @example + * ```javascript + * console.log(await provider.send("shh_uninstallFilter", ["0x0"] )); + * ``` */ @assertArgLength(1) - async shh_uninstallFilter(id: string) { + async shh_uninstallFilter(id: QUANTITY) { return false; } @@ -1947,9 +2906,13 @@ export default class EthereumApi implements Api { * * @param id - The filter id. Ex: "0x7" * @returns More Info: https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_getfilterchanges + * @example + * ```javascript + * console.log(await provider.send("shh_getFilterChanges", ["0x0"] )); + * ``` */ @assertArgLength(1) - async shh_getFilterChanges(id: string) { + async shh_getFilterChanges(id: QUANTITY) { return []; } @@ -1957,10 +2920,14 @@ export default class EthereumApi implements Api { * Get all messages matching a filter. Unlike shh_getFilterChanges this returns all messages. * * @param id - The filter id. Ex: "0x7" - * @returns See: shh_getFilterChanges + * @returns See: `shh_getFilterChanges`. + * @example + * ```javascript + * console.log(await provider.send("shh_getMessages", ["0x0"] )); + * ``` */ @assertArgLength(1) - async shh_getMessages(id: string) { + async shh_getMessages(id: QUANTITY) { return false; } @@ -1968,7 +2935,11 @@ export default class EthereumApi implements Api { * Creates a whisper message and injects it into the network for distribution. * * @param postData - * @returns returns true if the message was sent, otherwise false. + * @returns Returns `true` if the message was sent, otherwise `false`. + * @example + * ```javascript + * console.log(await provider.send("shh_post", [{}] )); + * ``` */ @assertArgLength(1) async shh_post(postData: WhisperPostObject) { @@ -1978,7 +2949,11 @@ export default class EthereumApi implements Api { /** * Returns the current whisper protocol version. * - * @returns The current whisper protocol version + * @returns The current whisper protocol version. + * @example + * ```javascript + * console.log(await provider.send("shh_version")); + * ``` */ @assertArgLength(0) async shh_version() { diff --git a/src/chains/ethereum/ethereum/src/blockchain.ts b/src/chains/ethereum/ethereum/src/blockchain.ts index f8228a0422..e31ae628e3 100644 --- a/src/chains/ethereum/ethereum/src/blockchain.ts +++ b/src/chains/ethereum/ethereum/src/blockchain.ts @@ -15,7 +15,10 @@ import { StorageRangeResult, StorageRecords, RangedStorageKeys, - EthereumRawAccount + StructLog, + TransactionTraceOptions, + EthereumRawAccount, + TraceTransactionResult } from "@ganache/ethereum-utils"; import { decode } from "@ganache/rlp"; import { BN, KECCAK256_RLP } from "ethereumjs-util"; @@ -78,37 +81,6 @@ type BlockchainTypedEvents = { }; type BlockchainEvents = "ready" | "stop"; -export type TransactionTraceOptions = { - disableStorage?: boolean; - disableMemory?: boolean; - disableStack?: boolean; -}; - -export type StructLog = { - depth: number; - error: string; - gas: number; - gasCost: number; - memory: Array; - op: string; - pc: number; - stack: Array; - storage: TraceStorageMap; -}; - -export type TraceTransactionResult = { - gas: number; - structLogs: StructLog[]; - returnValue: string; - storage: Record< - string, - { - key: Data; - value: Data; - } - >; -}; - interface Logger { log(message?: any, ...optionalParams: any[]): void; } @@ -1301,14 +1273,15 @@ export default class Blockchain extends Emittery.Typed< ); // #3 - Rerun every transaction in block prior to and including the requested transaction - const { gas, structLogs, returnValue } = await this.#traceTransaction( - trie, - newBlock, - options - ); + const { + gas, + structLogs, + returnValue, + storage + } = await this.#traceTransaction(trie, newBlock, options); // #4 - Send results back - return { gas, structLogs, returnValue }; + return { gas, structLogs, returnValue, storage }; } /** @@ -1333,10 +1306,10 @@ export default class Blockchain extends Emittery.Typed< * @param maxResult */ public async storageRangeAt( - blockHash: string | Buffer, + blockHash: string, txIndex: number, contractAddress: string, - startKey: string | Buffer, + startKey: string, maxResult: number ): Promise { // #1 - get block information @@ -1344,7 +1317,7 @@ export default class Blockchain extends Emittery.Typed< // get transaction using txIndex const transactions = targetBlock.getTransactions(); - const transaction = transactions[Quantity.from(txIndex).toNumber()]; + const transaction = transactions[txIndex]; if (!transaction) { throw new Error( `transaction index ${txIndex} is out of range for block ${blockHash}` diff --git a/src/chains/ethereum/ethereum/src/data-managers/account-manager.ts b/src/chains/ethereum/ethereum/src/data-managers/account-manager.ts index c50a367506..18f21722ad 100644 --- a/src/chains/ethereum/ethereum/src/data-managers/account-manager.ts +++ b/src/chains/ethereum/ethereum/src/data-managers/account-manager.ts @@ -1,6 +1,11 @@ +import { + Account, + EthereumRawAccount, + QUANTITY, + Tag +} from "@ganache/ethereum-utils"; import { KECCAK256_NULL } from "ethereumjs-util"; -import { Account, EthereumRawAccount, Tag } from "@ganache/ethereum-utils"; -import { Quantity, Data, BUFFER_EMPTY, RPCQUANTITY_ZERO } from "@ganache/utils"; +import { Quantity, Data, RPCQUANTITY_ZERO, BUFFER_EMPTY } from "@ganache/utils"; import { Address } from "@ganache/ethereum-address"; import { decode } from "@ganache/rlp"; import Blockchain from "../blockchain"; @@ -53,7 +58,7 @@ export default class AccountManager { public async getNonce( address: Address, - blockNumber: string | Tag = Tag.LATEST + blockNumber: QUANTITY | Buffer | Tag = Tag.LATEST ): Promise { const data = await this.getRaw(address, blockNumber); @@ -65,7 +70,7 @@ export default class AccountManager { public async getBalance( address: Address, - blockNumber: string | Buffer | Tag = Tag.LATEST + blockNumber: QUANTITY | Buffer | Tag = Tag.LATEST ): Promise { const data = await this.getRaw(address, blockNumber); @@ -77,7 +82,7 @@ export default class AccountManager { public async getCode( address: Address, - blockNumber: string | Buffer | Tag = Tag.LATEST + blockNumber: QUANTITY | Buffer | Tag = Tag.LATEST ): Promise { const data = await this.getRaw(address, blockNumber); diff --git a/src/chains/ethereum/ethereum/src/data-managers/block-manager.ts b/src/chains/ethereum/ethereum/src/data-managers/block-manager.ts index 6185fb5fbe..e359207e7a 100644 --- a/src/chains/ethereum/ethereum/src/data-managers/block-manager.ts +++ b/src/chains/ethereum/ethereum/src/data-managers/block-manager.ts @@ -1,5 +1,5 @@ import Manager from "./manager"; -import { Tag } from "@ganache/ethereum-utils"; +import { Tag, QUANTITY } from "@ganache/ethereum-utils"; import { LevelUp } from "levelup"; import { Quantity, Data } from "@ganache/utils"; import type Common from "@ethereumjs/common"; @@ -88,9 +88,7 @@ export default class BlockManager extends Manager { } } - getEffectiveNumber( - tagOrBlockNumber: string | Buffer | Tag = Tag.LATEST - ): Quantity { + getEffectiveNumber(tagOrBlockNumber: QUANTITY | Buffer | Tag = Tag.LATEST): Quantity { if (typeof tagOrBlockNumber === "string") { const block = this.getBlockByTag(tagOrBlockNumber as Tag); if (block) { @@ -144,7 +142,7 @@ export default class BlockManager extends Manager { }); } - async get(tagOrBlockNumber: string | Buffer | Tag) { + async get(tagOrBlockNumber: QUANTITY | Buffer | Tag) { if (typeof tagOrBlockNumber === "string") { const block = this.getBlockByTag(tagOrBlockNumber as Tag); if (block) return block; diff --git a/src/chains/ethereum/ethereum/tests/api/debug/debug_storageRangeAt.test.ts b/src/chains/ethereum/ethereum/tests/api/debug/debug_storageRangeAt.test.ts index 189d88d3fb..83120ba274 100644 --- a/src/chains/ethereum/ethereum/tests/api/debug/debug_storageRangeAt.test.ts +++ b/src/chains/ethereum/ethereum/tests/api/debug/debug_storageRangeAt.test.ts @@ -10,8 +10,8 @@ describe("api", () => { let provider: EthereumProvider; let accounts: string[]; let contractAddress: string; - let blockHash: string | Buffer; - let deploymentBlockHash: string | Buffer; + let blockHash: string; + let deploymentBlockHash: string; let methods: { [methodName: string]: string; }; @@ -389,8 +389,7 @@ describe("api", () => { let provider: EthereumProvider; let accounts: string[]; let contractAddress: string; - let blockHash: string | Buffer; - let deploymentBlockHash: string | Buffer; + let blockHash: string; before(async () => { provider = await getProvider(); @@ -423,7 +422,6 @@ describe("api", () => { [deploymentHash.toString()] ); contractAddress = deploymentTxReceipt.contractAddress; - deploymentBlockHash = deploymentTxReceipt.blockHash; const methods = contract.contract.evm.methodIdentifiers; const initialValue = diff --git a/src/chains/ethereum/ethereum/tests/api/eth/sendRawTransaction.test.ts b/src/chains/ethereum/ethereum/tests/api/eth/sendRawTransaction.test.ts index 35a883c08a..4de867c28f 100644 --- a/src/chains/ethereum/ethereum/tests/api/eth/sendRawTransaction.test.ts +++ b/src/chains/ethereum/ethereum/tests/api/eth/sendRawTransaction.test.ts @@ -3,6 +3,9 @@ import assert from "assert"; import EthereumProvider from "../../../src/provider"; import Transaction from "@ethereumjs/tx/dist/legacyTransaction"; import Common from "@ethereumjs/common"; +import { join } from "path"; +import compile from "../../helpers/compile"; +import { EthereumProviderOptions } from "@ganache/ethereum-options"; import { Data } from "@ganache/utils"; describe("api", () => { @@ -22,7 +25,6 @@ describe("api", () => { }, "petersburg" ); - beforeEach(async () => { provider = await getProvider({ wallet: { @@ -32,17 +34,14 @@ describe("api", () => { }); accounts = await provider.send("eth_accounts"); }); - - it("processes a signed transaction", async () => { - const transaction = Transaction.fromTxData( - { - value: "0xff", - gasLimit: "0x33450", - to: accounts[0] - }, - { common } - ); - + async function signAndSendRaw( + tx: Object, + passedProvider?: EthereumProvider + ) { + if (passedProvider !== undefined) { + provider = passedProvider; + } + const transaction = Transaction.fromTxData(tx, { common }); const secretKeyBuffer = Buffer.from(secretKey.substr(2), "hex"); const signed = transaction.sign(secretKeyBuffer); @@ -55,7 +54,113 @@ describe("api", () => { const receipt = await provider.send("eth_getTransactionReceipt", [ txHash ]); - assert.strictEqual(receipt.transactionHash, txHash); + return { receipt, txHash }; + } + describe("options", () => { + it("processes a signed transaction", async () => { + const { receipt, txHash } = await signAndSendRaw({ + value: "0xff", + gasLimit: "0x33450", + to: accounts[0] + }); + assert.strictEqual(receipt.transactionHash, txHash); + }); + }); + + describe("contracts", () => { + const contractDir = join(__dirname, "contracts"); + describe("out of gas", () => { + it('returns `"0x0"` `status`, `null` `to`, and a non-empty `contractAddress` on OOG failure', async () => { + const { code: data } = compile(join(contractDir, "NoOp.sol")); + + const { receipt } = await signAndSendRaw({ + data, + gasLimit: 60000 + }); + assert.strictEqual(receipt.status, "0x0"); + // ensure that even though the status is `"0x0"` (failure), the + // `contractAddress` is included and the `to` prop is still `null`. + assert.strictEqual(receipt.to, null); + assert.notStrictEqual(receipt.contractAddress, null); + assert.strictEqual(receipt.contractAddress.length, 42); + }); + }); + describe("revert", () => { + async function deployContract( + provider: EthereumProvider, + accounts: string[] + ) { + const contract = compile(join(contractDir, "Reverts.sol")); + const { receipt } = await signAndSendRaw( + { + from: accounts[0], + data: contract.code, + gasLimit: 3141592 + }, + provider + ); + assert.strictEqual(receipt.blockNumber, "0x1"); + + const contractAddress = receipt.contractAddress; + return { + contract, + contractAddress + }; + } + + it("doesn't crash on badly encoded revert string", async () => { + async function test(opts: EthereumProviderOptions) { + const provider = await getProvider(opts); + const accounts = await provider.send("eth_accounts"); + const { contract, contractAddress } = await deployContract( + provider, + accounts + ); + const contractMethods = contract.contract.evm.methodIdentifiers; + const prom = provider.send("eth_call", [ + { + from: accounts[0], + to: contractAddress, + data: "0x" + contractMethods["invalidRevertReason()"] + } + ]); + + const revertString = + "0x08c379a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"; + if (opts.chain.vmErrorsOnRPCResponse) { + const result = await prom.catch(e => e); + assert.strictEqual( + result.code, + -32000, + "Error code should be -32000" + ); + assert.strictEqual( + result.data.reason, + null, + "The reason is undecodable, and thus should be null" + ); + assert.strictEqual( + result.data.message, + "revert", + "The message should not have a reason string included" + ); + assert.strictEqual( + result.data.result, + revertString, + "The revert reason should be encoded as hex" + ); + } else { + assert.strictEqual( + await prom, + revertString, + "The revert reason should be encoded as hex" + ); + } + } + await test({ chain: { vmErrorsOnRPCResponse: false } }); + await test({ chain: { vmErrorsOnRPCResponse: true } }); + }); + }); }); }); }); diff --git a/src/chains/ethereum/ethereum/tests/api/eth/signTransaction.test.ts b/src/chains/ethereum/ethereum/tests/api/eth/signTransaction.test.ts new file mode 100644 index 0000000000..0f01486d25 --- /dev/null +++ b/src/chains/ethereum/ethereum/tests/api/eth/signTransaction.test.ts @@ -0,0 +1,32 @@ +import getProvider from "../../helpers/getProvider"; +import assert from "assert"; + +describe("api", () => { + describe("eth", () => { + describe("eth_signTransaction", () => { + it("signs a transaction that can then be submitted to the network", async () => { + const provider = await getProvider(); + const [from, to] = await provider.send("eth_accounts"); + + const signedTx = await provider.send("eth_signTransaction", [ + { + from: from, + to: to, + gas: "0x5b8d80" + } + ]); + + await provider.send("eth_subscribe", ["newHeads"]); + const txHash = await provider.send("eth_sendRawTransaction", [ + signedTx + ]); + await provider.once("message"); + + const receipt = await provider.send("eth_getTransactionReceipt", [ + txHash + ]); + assert.strictEqual(receipt.transactionHash, txHash); + }); + }); + }); +}); diff --git a/src/chains/ethereum/ethereum/tests/api/personal/personal.test.ts b/src/chains/ethereum/ethereum/tests/api/personal/personal.test.ts index 0ddd8d36ad..17133d7533 100644 --- a/src/chains/ethereum/ethereum/tests/api/personal/personal.test.ts +++ b/src/chains/ethereum/ethereum/tests/api/personal/personal.test.ts @@ -2,6 +2,7 @@ import assert from "assert"; import getProvider from "../../helpers/getProvider"; import { Quantity } from "@ganache/utils"; import EthereumProvider from "../../../src/provider"; +import { RpcTransaction } from "@ganache/ethereum-transaction"; describe("api", () => { describe("personal", () => { @@ -173,6 +174,99 @@ describe("api", () => { "personal_sendTransaction should still be locked the after the transaction is processed" ); } + async function testLockedAccountWithPassphraseViaPersonal_SignTransaction( + provider: EthereumProvider, + newAccount: string, + passphrase: string + ) { + const transaction = { + from: newAccount, + to: newAccount, + gasLimit: Quantity.from(21000).toString(), + gasPrice: "0x0", + value: "0x0", + nonce: "0x0" + }; + + // make sure we can't use the account via personal_sendTransaction and no passphrase + await assert.rejects( + provider.send("personal_signTransaction", [transaction, undefined]), + { + message: "could not decrypt key with given password" + }, + "personal_sendTransaction should have rejected due to locked from account without its passphrase" + ); + + // make sure we can't use the account with bad passphrases + const invalidPassphrases = [ + "this is not my passphrase", + null, + undefined, + Buffer.allocUnsafe(0), + 1, + 0, + Infinity, + NaN + ]; + await Promise.all( + invalidPassphrases.map(invalidPassphrase => { + return assert.rejects( + provider.send("personal_signTransaction", [ + transaction, + invalidPassphrase as any + ]), + { + message: "could not decrypt key with given password" + }, + "Transaction should have rejected due to locked from account with wrong passphrase" + ); + }) + ); + + // use personal_sendTransaction with the valid passphrase + await provider.send("eth_subscribe", ["newHeads"]); + const signedTxPromise = provider.send("personal_signTransaction", [ + transaction, + passphrase + ]); + const msgPromise = signedTxPromise.then(() => provider.once("message")); + + await assert.rejects( + provider.send("eth_signTransaction", [ + Object.assign({}, transaction, { nonce: 1 }) + ]), + { + message: "authentication needed: password or unlock" + }, + "personal_signTransaction should not unlock the while transaction is bring processed" + ); + + const signedTx = await signedTxPromise; + const transactionHash = await provider.send("eth_sendRawTransaction", [ + signedTx + ]); + await msgPromise; + + const receipt = await provider.send("eth_getTransactionReceipt", [ + transactionHash + ]); + assert.strictEqual( + receipt.status, + "0x1", + "Transaction failed when it should have succeeded" + ); + + // ensure the account is still locked + await assert.rejects( + provider.send("eth_sendTransaction", [ + Object.assign({}, transaction, { nonce: "0x0" }) + ]), + { + message: "authentication needed: password or unlock" + }, + "personal_sendTransaction should still be locked the after the transaction is processed" + ); + } describe("newAccount", () => { it("generates deterministic accounts", async () => { @@ -282,6 +376,22 @@ describe("api", () => { ); }); }); + describe("personal_signTransaction", () => { + it("signs transaction from locked accounts with passphrase", async () => { + const provider = await getProvider({ miner: { gasPrice: 0 } }); + const passphrase = "this is my passphrase"; + // generate an account + const newAccount = await provider.send("personal_newAccount", [ + passphrase + ]); + + testLockedAccountWithPassphraseViaPersonal_SignTransaction( + provider, + newAccount, + passphrase + ); + }); + }); }); describe("personal_importRawKey", () => { @@ -336,6 +446,23 @@ describe("api", () => { ); }); }); + + describe("personal_signTransaction", () => { + it("signs transaction from locked accounts with passphrase", async () => { + const provider = await getProvider({ miner: { gasPrice: 0 } }); + // generate an account + const newAccount = await provider.send("personal_importRawKey", [ + secretKey, + passphrase + ]); + + await testLockedAccountWithPassphraseViaPersonal_SignTransaction( + provider, + newAccount, + passphrase + ); + }); + }); }); }); }); diff --git a/src/chains/ethereum/options/npm-shrinkwrap.json b/src/chains/ethereum/options/npm-shrinkwrap.json index 17735adbfa..2a61c5a082 100644 --- a/src/chains/ethereum/options/npm-shrinkwrap.json +++ b/src/chains/ethereum/options/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/ethereum-options", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/ethereum/transaction/npm-shrinkwrap.json b/src/chains/ethereum/transaction/npm-shrinkwrap.json index 2abab7b85c..fcc7302c1d 100644 --- a/src/chains/ethereum/transaction/npm-shrinkwrap.json +++ b/src/chains/ethereum/transaction/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/ethereum-transaction", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/ethereum/utils/npm-shrinkwrap.json b/src/chains/ethereum/utils/npm-shrinkwrap.json index 93e8cdb243..0103c82503 100644 --- a/src/chains/ethereum/utils/npm-shrinkwrap.json +++ b/src/chains/ethereum/utils/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/ethereum-utils", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/ethereum/utils/src/index.ts b/src/chains/ethereum/utils/src/index.ts index 0b24f10503..b3e533cfe3 100644 --- a/src/chains/ethereum/utils/src/index.ts +++ b/src/chains/ethereum/utils/src/index.ts @@ -9,10 +9,12 @@ export * from "./things/tags"; export * from "./things/trace-data"; export * from "./things/trace-storage-map"; +export * from "./types/debug-storage"; export * from "./types/extract-values-from-types"; export * from "./types/filters"; +export * from "./types/hex-datatypes"; export * from "./types/shh"; export * from "./types/step-event"; export * from "./types/subscriptions"; +export * from "./types/trace-transaction"; export * from "./types/tuple-from-union"; -export * from "./types/debug-storage"; diff --git a/src/chains/ethereum/utils/src/types/hex-datatypes.ts b/src/chains/ethereum/utils/src/types/hex-datatypes.ts new file mode 100644 index 0000000000..545a51c053 --- /dev/null +++ b/src/chains/ethereum/utils/src/types/hex-datatypes.ts @@ -0,0 +1,2 @@ +export type QUANTITY = string; +export type DATA = string; diff --git a/src/chains/ethereum/utils/src/types/trace-transaction.ts b/src/chains/ethereum/utils/src/types/trace-transaction.ts new file mode 100644 index 0000000000..9e6222ba25 --- /dev/null +++ b/src/chains/ethereum/utils/src/types/trace-transaction.ts @@ -0,0 +1,34 @@ +import { Data } from "@ganache/utils"; +import { ITraceData } from "../things/trace-data"; +import { TraceStorageMap } from "../things/trace-storage-map"; + +export type TransactionTraceOptions = { + disableStorage?: boolean; + disableMemory?: boolean; + disableStack?: boolean; +}; + +export type StructLog = { + depth: number; + error: string; + gas: number; + gasCost: number; + memory: Array; + op: string; + pc: number; + stack: Array; + storage: TraceStorageMap; +}; + +export type TraceTransactionResult = { + gas: number; + structLogs: StructLog[]; + returnValue: string; + storage: Record< + string, + { + key: Data; + value: Data; + } + >; +}; diff --git a/src/chains/filecoin/filecoin/npm-shrinkwrap.json b/src/chains/filecoin/filecoin/npm-shrinkwrap.json index 521a515e22..100a791d1e 100644 --- a/src/chains/filecoin/filecoin/npm-shrinkwrap.json +++ b/src/chains/filecoin/filecoin/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/filecoin", - "version": "0.1.6-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/filecoin/options/npm-shrinkwrap.json b/src/chains/filecoin/options/npm-shrinkwrap.json index 5047c69bee..dce496429c 100644 --- a/src/chains/filecoin/options/npm-shrinkwrap.json +++ b/src/chains/filecoin/options/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/filecoin-options", - "version": "0.1.4-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/chains/tezos/tezos/npm-shrinkwrap.json b/src/chains/tezos/tezos/npm-shrinkwrap.json index 45ebbe0f03..f0b2a9eb05 100644 --- a/src/chains/tezos/tezos/npm-shrinkwrap.json +++ b/src/chains/tezos/tezos/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/tezos", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/cli/npm-shrinkwrap.json b/src/packages/cli/npm-shrinkwrap.json index 1a07a27eb0..ac1f2948fa 100644 --- a/src/packages/cli/npm-shrinkwrap.json +++ b/src/packages/cli/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/cli", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/core/npm-shrinkwrap.json b/src/packages/core/npm-shrinkwrap.json index c9b564ab10..5b7c996223 100644 --- a/src/packages/core/npm-shrinkwrap.json +++ b/src/packages/core/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/core", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/flavors/npm-shrinkwrap.json b/src/packages/flavors/npm-shrinkwrap.json index 53f2fa6212..cbce8b77f5 100644 --- a/src/packages/flavors/npm-shrinkwrap.json +++ b/src/packages/flavors/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/flavors", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/ganache/npm-shrinkwrap.json b/src/packages/ganache/npm-shrinkwrap.json index 506650d290..84844a9ad7 100644 --- a/src/packages/ganache/npm-shrinkwrap.json +++ b/src/packages/ganache/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "ganache", - "version": "7.0.0-internal.1336", + "version": "7.0.0-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1867,6 +1867,12 @@ "ajv-keywords": "^3.5.2" } }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, "secp256k1": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", diff --git a/src/packages/ganache/package.json b/src/packages/ganache/package.json index 4bfb76183b..0179a8286b 100644 --- a/src/packages/ganache/package.json +++ b/src/packages/ganache/package.json @@ -56,6 +56,7 @@ "@ganache/flavors": "0.1.1-canary.2+bb3106bf", "@types/node": "14.14.6", "assert": "2.0.0", + "browserify-aes": "1.2.0", "buffer": "6.0.1", "crypto-browserify": "3.12.0", "events": "3.2.0", @@ -64,6 +65,7 @@ "os-browserify": "0.3.0", "path-browserify": "1.0.1", "process": "0.11.10", + "scrypt-js": "3.0.1", "shebang-loader": "0.0.1", "shx": "0.3.3", "stream-browserify": "3.0.0", diff --git a/src/packages/ganache/webpack/polyfills/browser-crypto.ts b/src/packages/ganache/webpack/polyfills/browser-crypto.ts new file mode 100644 index 0000000000..4e76db8ab8 --- /dev/null +++ b/src/packages/ganache/webpack/polyfills/browser-crypto.ts @@ -0,0 +1,49 @@ +import { createCipheriv, createDecipheriv } from "browserify-aes"; +import { scrypt as _scrypt } from "scrypt-js"; +const scrypt = ( + password: string, + salt: string, + keylen: number, + options: { N?: number; r?: number; p?: number }, + callback: (err: Error | null, derivedKey: Buffer) => void +) => { + _scrypt( + Buffer.from(password, "utf8"), + Buffer.from(salt, "utf8"), + options.N, + options.r, + options.p, + keylen + ) + .then(result => { + callback(null, Buffer.from(result)); + }) + .catch(e => callback(e, undefined)); +}; + +import { + createHmac, + createHash, + pseudoRandomBytes, + randomBytes +} from "crypto-browserify"; + +export default { + scrypt, + createHmac, + createHash, + pseudoRandomBytes, + randomBytes, + createCipheriv, + createDecipheriv +}; + +export { + scrypt, + createHmac, + createHash, + pseudoRandomBytes, + randomBytes, + createCipheriv, + createDecipheriv +}; diff --git a/src/packages/ganache/webpack/webpack.browser.config.ts b/src/packages/ganache/webpack/webpack.browser.config.ts index 3bd998fe38..c30651bbd2 100644 --- a/src/packages/ganache/webpack/webpack.browser.config.ts +++ b/src/packages/ganache/webpack/webpack.browser.config.ts @@ -9,7 +9,6 @@ const config: webpack.Configuration = merge({}, base, { fallback: { //#region node polyfills util: require.resolve("util/"), - crypto: require.resolve("crypto-browserify"), path: require.resolve("path-browserify"), assert: require.resolve("assert/"), stream: require.resolve("stream-browserify/"), @@ -25,6 +24,7 @@ const config: webpack.Configuration = merge({}, base, { alias: { "tmp-promise": require.resolve("./polyfills/browser-tmp-promise"), "bigint-buffer": require.resolve("./polyfills/browser-bigint-buffer"), + "crypto": require.resolve("./polyfills/browser-crypto"), // replace leveldown with a browser version leveldown: require.resolve("level-js/"), // browser version can't start a server, so just remove the websocket server since it can't work anyway diff --git a/src/packages/options/npm-shrinkwrap.json b/src/packages/options/npm-shrinkwrap.json index 474f28b0ee..5dd6505188 100644 --- a/src/packages/options/npm-shrinkwrap.json +++ b/src/packages/options/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/options", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/promise-queue/npm-shrinkwrap.json b/src/packages/promise-queue/npm-shrinkwrap.json index 5bd6de0f88..b22e445f25 100644 --- a/src/packages/promise-queue/npm-shrinkwrap.json +++ b/src/packages/promise-queue/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/promise-queue", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/rlp/npm-shrinkwrap.json b/src/packages/rlp/npm-shrinkwrap.json index e1c012be07..7e831fdf45 100644 --- a/src/packages/rlp/npm-shrinkwrap.json +++ b/src/packages/rlp/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/rlp", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/packages/utils/npm-shrinkwrap.json b/src/packages/utils/npm-shrinkwrap.json index e0c21453fd..c6ffff6b4c 100644 --- a/src/packages/utils/npm-shrinkwrap.json +++ b/src/packages/utils/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "@ganache/utils", - "version": "0.1.1-internal.1334+5f8ce0f7", + "version": "0.1.1-canary.2+bb3106bf", "lockfileVersion": 1, "requires": true, "dependencies": {