@xchainjs/xchain-doge 0.7.13 → 0.7.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/const.ts","../src/utils.ts","../src/client.ts","../src/clientKeystore.ts","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/brorand/index.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../../node_modules/safe-buffer/index.js","../../../node_modules/cipher-base/index.js","../../../node_modules/create-hmac/legacy.js","../../../node_modules/hash-base/index.js","../../../node_modules/md5.js/index.js","../../../node_modules/create-hash/md5.js","../../../node_modules/ripemd160/index.js","../../../node_modules/sha.js/hash.js","../../../node_modules/sha.js/sha.js","../../../node_modules/sha.js/sha1.js","../../../node_modules/sha.js/sha256.js","../../../node_modules/sha.js/sha224.js","../../../node_modules/sha.js/sha512.js","../../../node_modules/sha.js/sha384.js","../../../node_modules/sha.js/index.js","../../../node_modules/create-hmac/browser.js","../../../node_modules/tiny-secp256k1/rfc6979.js","../../../node_modules/tiny-secp256k1/js.js","../../../node_modules/bip32-path/index.js","../../../node_modules/create-hash/browser.js","../../../node_modules/base-x/src/index.js","../../../node_modules/bs58/index.js","../../../node_modules/bs58check/base.js","../../../node_modules/bs58check/index.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/bip32.js","../../../node_modules/varuint-bitcoin/index.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/buffertools.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/constants.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/hashPublicKey.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/accounttype.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/merkle.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/policy.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/psbtExtractor.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/psbtv2.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/psbtFinalizer.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/varint.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/serializeTransaction.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/BtcNew.js","../../../node_modules/@ledgerhq/hw-app-btc/node_modules/@ledgerhq/logs/lib-es/index.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/getWalletPublicKey.js","../../../node_modules/invariant/browser.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/getTrustedInput.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/startUntrustedHashTransactionInput.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/getTrustedInputBIP143.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/compressPublicKey.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/signTransaction.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/finalizeInput.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/getAppAndVersion.js","../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/yallist/iterator.js","../../../node_modules/yallist/yallist.js","../../../node_modules/lru-cache/index.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/shouldUseTrustedInputForSegwit.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/createTransaction.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/signMessage.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/BtcOld.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/merkleMap.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/merkelizedPsbt.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/clientCommands.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/newops/appClient.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/debug.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/splitTransaction.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/signP2SHTransaction.js","../../../node_modules/@ledgerhq/hw-app-btc/lib-es/Btc.js","../src/clientLedger.ts","../src/blockcypher-api.ts"],"sourcesContent":["import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset } from '@xchainjs/xchain-util'\nimport {\n BitgoProvider,\n BlockcypherNetwork,\n BlockcypherProvider,\n SochainNetwork,\n SochainProvider,\n UtxoOnlineDataProviders,\n} from '@xchainjs/xchain-utxo-providers'\n/**\n * Minimum transaction fee for Dogecoin transactions.\n * Defined as 100000 satoshi/kB.\n * @see https://github.com/dogecoin/dogecoin/blob/master/src/validation.h#L58\n */\nexport const MIN_TX_FEE = 100000\n\n/**\n * Decimal places for Dogecoin.\n */\nexport const DOGE_DECIMAL = 8\n\n/**\n * Lower fee bound for Dogecoin transactions.\n * Referenced from Dogecoin fee recommendation documentation.\n * @see https://github.com/dogecoin/dogecoin/blob/master/doc/fee-recommendation.md\n */\nexport const LOWER_FEE_BOUND = 100\n\n/**\n * Upper fee bound for Dogecoin transactions.\n * Referenced from Dogecoin fee recommendation documentation.\n * @see https://github.com/dogecoin/dogecoin/blob/master/doc/fee-recommendation.md\n */\nexport const UPPER_FEE_BOUND = 20_000_000\n\n/**\n * Chain identifier for Dogecoin.\n */\nexport const DOGEChain = 'DOGE' as const\n\n/**\n * Base asset object for Dogecoin.\n * Represents the Dogecoin asset in various contexts.\n */\nexport const AssetDOGE: Asset = { chain: DOGEChain, symbol: 'DOGE', ticker: 'DOGE', synth: false }\n\n/**\n * Explorer provider for Dogecoin mainnet and testnet.\n * Provides URLs for exploring Dogecoin transactions and addresses.\n */\nconst DOGE_MAINNET_EXPLORER = new ExplorerProvider(\n 'https://blockchair.com/dogecoin',\n 'https://blockchair.com/dogecoin/address/%%ADDRESS%%',\n 'https://blockchair.com/dogecoin/transaction/%%TX_ID%%',\n)\nconst DOGE_TESTNET_EXPLORER = new ExplorerProvider(\n 'https://blockexplorer.one/dogecoin/testnet',\n 'https://blockexplorer.one/dogecoin/testnet/address/%%ADDRESS%%',\n 'https://blockexplorer.one/dogecoin/testnet/tx/%%TX_ID%%',\n)\nexport const blockstreamExplorerProviders = {\n [Network.Testnet]: DOGE_TESTNET_EXPLORER,\n [Network.Stagenet]: DOGE_MAINNET_EXPLORER,\n [Network.Mainnet]: DOGE_MAINNET_EXPLORER,\n}\n\n/**\n * Sochain data providers for Dogecoin mainnet and testnet.\n * Provides API access to Sochain for Dogecoin.\n */\nconst testnetSochainProvider = new SochainProvider(\n 'https://sochain.com/api/v3',\n process.env.SOCHAIN_API_KEY || '',\n DOGEChain,\n AssetDOGE,\n 8,\n SochainNetwork.DOGETEST,\n)\nconst mainnetSochainProvider = new SochainProvider(\n 'https://sochain.com/api/v3',\n process.env.SOCHAIN_API_KEY || '',\n DOGEChain,\n AssetDOGE,\n 8,\n SochainNetwork.DOGE,\n)\nexport const sochainDataProviders = {\n [Network.Testnet]: testnetSochainProvider,\n [Network.Stagenet]: mainnetSochainProvider,\n [Network.Mainnet]: mainnetSochainProvider,\n}\n\n/**\n * Blockcypher data providers for Dogecoin mainnet and stagenet.\n * Provides API access to Blockcypher for Dogecoin.\n */\nconst mainnetBlockcypherProvider = new BlockcypherProvider(\n 'https://api.blockcypher.com/v1',\n DOGEChain,\n AssetDOGE,\n 8,\n BlockcypherNetwork.DOGE,\n process.env.BLOCKCYPHER_API_KEY || '',\n)\nexport const blockcypherDataProviders = {\n [Network.Testnet]: undefined, //no provider here\n [Network.Stagenet]: mainnetBlockcypherProvider,\n [Network.Mainnet]: mainnetBlockcypherProvider,\n}\n\n/**\n * Bitgo data providers for Dogecoin mainnet and stagenet.\n * Provides API access to Bitgo for Dogecoin.\n */\nconst mainnetBitgoProvider = new BitgoProvider({\n baseUrl: 'https://app.bitgo.com',\n chain: DOGEChain,\n})\n\nexport const BitgoProviders: UtxoOnlineDataProviders = {\n [Network.Testnet]: undefined,\n [Network.Stagenet]: mainnetBitgoProvider,\n [Network.Mainnet]: mainnetBitgoProvider,\n}\n","/**\n * Import statements for required modules and types.\n */\nimport { Network } from '@xchainjs/xchain-client'\nimport { Address } from '@xchainjs/xchain-util'\nimport * as Dogecoin from 'bitcoinjs-lib' // Importing bitcoinjs-lib for Dogecoin operations\nimport coininfo from 'coininfo' // Importing coininfo for cryptocurrency information retrieval\n\n/**\n * Constant values representing transaction sizes and lengths.\n */\nexport const TX_EMPTY_SIZE = 4 + 1 + 1 + 4 // 10\nexport const TX_INPUT_BASE = 32 + 4 + 1 + 4 // 41\nexport const TX_INPUT_PUBKEYHASH = 107\nexport const TX_OUTPUT_BASE = 8 + 1 // 9\nexport const TX_OUTPUT_PUBKEYHASH = 25\n\n/**\n * Calculate the number of bytes required for an input.\n *\n * @returns {number} The number of bytes required for an input.\n */\nexport function inputBytes(): number {\n return TX_INPUT_BASE + TX_INPUT_PUBKEYHASH\n}\n\n/**\n * Calculate the average value of an array.\n *\n * @param {number[]} array - The array of numbers.\n * @returns {number} The average value of the array.\n */\nexport function arrayAverage(array: number[]): number {\n let sum = 0\n array.forEach((value) => (sum += value))\n return sum / array.length\n}\n\n/**\n * Get the Dogecoin network configuration to be used with bitcoinjs.\n *\n * @param {Network} network - The network type.\n * @returns {Dogecoin.networks.Network} The Dogecoin network configuration.\n */\nexport const dogeNetwork = (network: Network): Dogecoin.networks.Network => {\n switch (network) {\n case Network.Mainnet:\n return coininfo.dogecoin.main.toBitcoinJS()\n case Network.Stagenet:\n return coininfo.dogecoin.main.toBitcoinJS()\n case Network.Testnet: {\n // Latest coininfo on NPM doesn't contain dogetest config information\n const bip32 = {\n private: 0x04358394,\n public: 0x043587cf,\n }\n const test = coininfo.dogecoin.test\n test.versions.bip32 = bip32\n return test.toBitcoinJS()\n }\n }\n}\n\n/**\n * Validate a Dogecoin address.\n *\n * @param {Address} address - The Dogecoin address to validate.\n * @param {Network} network - The network type.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\nexport const validateAddress = (address: Address, network: Network): boolean => {\n try {\n Dogecoin.address.toOutputScript(address, dogeNetwork(network))\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * Get the address prefix based on the network.\n *\n * @param {Network} network - The network type.\n * @returns {string} The address prefix based on the network.\n */\nexport const getPrefix = (network: Network) => {\n switch (network) {\n case Network.Mainnet:\n case Network.Stagenet:\n return ''\n case Network.Testnet:\n return 'n'\n }\n}\n","import { AssetInfo, FeeRate, Network, PreparedTx, TxParams } from '@xchainjs/xchain-client'\nimport { Address } from '@xchainjs/xchain-util'\nimport { Client as UTXOClient, UTXO, UtxoClientParams } from '@xchainjs/xchain-utxo'\nimport * as Dogecoin from 'bitcoinjs-lib'\nimport accumulative from 'coinselect/accumulative'\n\nimport {\n AssetDOGE,\n BitgoProviders,\n DOGEChain,\n DOGE_DECIMAL,\n LOWER_FEE_BOUND,\n MIN_TX_FEE,\n UPPER_FEE_BOUND,\n blockcypherDataProviders,\n blockstreamExplorerProviders,\n} from './const'\nimport { LedgerTxInfo, LedgerTxInfoParams } from './types/ledger'\nimport * as Utils from './utils'\n/**\n * Default parameters for Dogecoin UTXO client.\n * Contains default values for network, phrase, explorer providers, data providers, root derivation paths, and fee bounds.\n */\nexport const defaultDogeParams: UtxoClientParams = {\n network: Network.Mainnet, // Default network is Mainnet\n phrase: '', // Default empty phrase\n explorerProviders: blockstreamExplorerProviders, // Default explorer providers\n dataProviders: [BitgoProviders, blockcypherDataProviders], // Default data providers\n rootDerivationPaths: {\n [Network.Mainnet]: `m/44'/3'/0'/0/`, // Default root derivation path for Mainnet\n [Network.Stagenet]: `m/44'/3'/0'/0/`, // Default root derivation path for Stagenet\n [Network.Testnet]: `m/44'/1'/0'/0/`, // Default root derivation path for Testnet\n },\n feeBounds: {\n lower: LOWER_FEE_BOUND, // Default lower fee bound\n upper: UPPER_FEE_BOUND, // Default upper fee bound\n },\n}\n/**\n * Custom Dogecoin client extending UTXOClient.\n * Implements methods for Dogecoin-specific functionality.\n */\nabstract class Client extends UTXOClient {\n /**\n * Constructor for initializing the Dogecoin client.\n * Initializes the client with the provided parameters.\n *\n * @param {DogecoinClientParams} params Parameters for initializing the Dogecoin client.\n */\n constructor(params = defaultDogeParams) {\n super(DOGEChain, {\n // Call the superclass constructor with DOGEChain identifier and provided parameters\n network: params.network,\n rootDerivationPaths: params.rootDerivationPaths,\n phrase: params.phrase,\n feeBounds: params.feeBounds,\n explorerProviders: params.explorerProviders,\n dataProviders: params.dataProviders,\n })\n }\n\n /**\n * Get Dogecoin asset information.\n *\n * @returns {AssetInfo} Dogecoin asset information.\n */\n getAssetInfo(): AssetInfo {\n const assetInfo: AssetInfo = {\n asset: AssetDOGE,\n decimal: DOGE_DECIMAL,\n }\n return assetInfo\n }\n\n /**\n * Validate the given address.\n *\n * @param {Address} address The Dogecoin address to validate.\n * @returns {boolean} `true` if the address is valid, otherwise `false`.\n */\n validateAddress(address: string): boolean {\n return Utils.validateAddress(address, this.network)\n }\n\n /**\n * Builds a Dogecoin transaction (PSBT).\n *\n * Builds a Partially Signed Bitcoin Transaction (PSBT) with the specified parameters.\n * @param {BuildParams} params The transaction build options including sender, recipient, amount, memo, and fee rate.\n * @returns {Transaction} A promise that resolves to the built PSBT and the unspent transaction outputs (UTXOs) used in the transaction.\n * @deprecated This method is deprecated. Use the `transfer` method instead.\n */\n public buildTx = async ({\n amount,\n recipient,\n memo,\n feeRate,\n sender,\n }: TxParams & {\n feeRate: FeeRate\n sender: Address\n }): Promise<{ psbt: Dogecoin.Psbt; utxos: UTXO[] }> => {\n // Validate the recipient address\n if (!this.validateAddress(recipient)) throw new Error('Invalid address')\n\n // Scan unspent transaction outputs (UTXOs) for the sender's address\n const utxos = await this.scanUTXOs(sender, false)\n // Throw an error if no UTXOs are found\n if (utxos.length === 0) throw new Error('No UTXOs to send')\n\n // Round the fee rate to the nearest whole number\n const feeRateWhole = Number(feeRate.toFixed(0))\n // Compile the memo if provided\n const compiledMemo = memo ? this.compileMemo(memo) : null\n\n const targetOutputs = []\n //1. Add output for the recipient\n targetOutputs.push({\n address: recipient,\n value: amount.amount().toNumber(),\n })\n //2. Add output for the memo (if provided)\n if (compiledMemo) {\n targetOutputs.push({ script: compiledMemo, value: 0 })\n }\n // Calculate the inputs and outputs for the transaction\n const { inputs, outputs } = accumulative(utxos, targetOutputs, feeRateWhole)\n\n // Throw an error if no solution was found for inputs and outputs\n if (!inputs || !outputs) throw new Error('Balance insufficient for transaction')\n\n // Create a new PSBT for building the transaction\n const psbt = new Dogecoin.Psbt({ network: Utils.dogeNetwork(this.network) })\n // Set the maximum fee rate for the PSBT\n psbt.setMaximumFeeRate(7500000)\n\n // Add inputs to the PSBT\n for (const utxo of inputs) {\n psbt.addInput({\n hash: utxo.hash,\n index: utxo.index,\n nonWitnessUtxo: Buffer.from(utxo.txHex, 'hex'),\n })\n }\n // Outputs\n outputs.forEach((output: Dogecoin.PsbtTxOutput) => {\n if (!output.address) {\n //an empty address means this is the change address\n output.address = sender\n }\n if (!output.script) {\n psbt.addOutput(output)\n } else {\n //we need to add the compiled memo this way to\n //avoid dust error tx when accumulating memo output with 0 value\n if (compiledMemo) {\n psbt.addOutput({ script: compiledMemo, value: 0 })\n }\n }\n })\n\n return { psbt, utxos }\n }\n\n /**\n * Asynchronously creates transaction information for ledger sign.\n *\n * Builds a transaction (PSBT) and prepares necessary information for ledger signing.\n *\n * @param {LedgerTxInfoParams} params The parameters for creating transaction information.\n * @returns {LedgerTxInfo} A promise that resolves to the transaction information used for ledger sign.\n */\n public async createTxInfo(params: LedgerTxInfoParams): Promise<LedgerTxInfo> {\n // Build the transaction (PSBT) and obtain the unspent transaction outputs (UTXOs)\n const { psbt, utxos } = await this.buildTx(params)\n // Construct the ledger transaction information object\n const ledgerTxInfo: LedgerTxInfo = {\n utxos,\n newTxHex: psbt.data.globalMap.unsignedTx.toBuffer().toString('hex'), // Convert unsigned transaction to hexadecimal string\n }\n return ledgerTxInfo\n }\n\n /**\n * Asynchronously prepares a transaction for transfer.\n *\n * Builds a transaction (PSBT) with the specified transfer options.\n * @param {TxParams & { sender: Address; feeRate: FeeRate; spendPendingUTXO?: boolean }} params The transfer options including sender address, fee rate, and optional flag for spending pending UTXOs.\n * @returns {Promise<PreparedTx>} A promise that resolves to the raw unsigned transaction (PSBT).\n */\n async prepareTx({\n sender,\n memo,\n amount,\n recipient,\n feeRate,\n }: TxParams & {\n sender: Address\n feeRate: FeeRate\n spendPendingUTXO?: boolean\n }): Promise<PreparedTx> {\n // Build the transaction (PSBT) with the specified transfer options\n const { psbt } = await this.buildTx({\n sender,\n recipient,\n amount,\n feeRate,\n memo,\n })\n\n // Return the raw unsigned transaction (PSBT)\n return { rawUnsignedTx: psbt.toBase64() }\n }\n\n /**\n * Compiles the memo into a buffer for inclusion in a Dogecoin transaction.\n *\n * @param {string} memo The memo to be compiled.\n * @returns {Buffer} The compiled memo as a buffer.\n */\n protected compileMemo(memo: string): Buffer {\n // Convert the memo to a buffer\n const data = Buffer.from(memo, 'utf8')\n // Compile the OP_RETURN script with the memo data\n return Dogecoin.script.compile([Dogecoin.opcodes.OP_RETURN, data])\n }\n\n /**\n * Calculates the transaction fee based on the provided UTXOs, fee rate, and optional data.\n *\n * @param {UTXO[]} inputs The unspent transaction outputs (UTXOs) used as inputs.\n * @param {FeeRate} feeRate The fee rate for the transaction.\n * @param {Buffer | null} data The compiled memo (optional).\n * @returns {number} The calculated transaction fee.\n */\n protected getFeeFromUtxos(inputs: UTXO[], feeRate: FeeRate, data: Buffer | null = null): number {\n // Calculate the size of the transaction\n const inputSizeBasedOnInputs =\n inputs.length > 0\n ? inputs.reduce((a) => a + Utils.inputBytes(), 0) + inputs.length // +1 byte for each input signature\n : 0\n // Calculate the sum of transaction size\n let sum =\n Utils.TX_EMPTY_SIZE +\n inputSizeBasedOnInputs +\n Utils.TX_OUTPUT_BASE +\n Utils.TX_OUTPUT_PUBKEYHASH +\n Utils.TX_OUTPUT_BASE +\n Utils.TX_OUTPUT_PUBKEYHASH\n\n // Add additional output size if data is provided\n if (data) {\n sum += Utils.TX_OUTPUT_BASE + data.length\n }\n // Calculate the fee based on the sum of transaction size and the fee rate\n const fee = sum * feeRate\n // Ensure the fee is not less than the minimum transaction fee\n return fee > MIN_TX_FEE ? fee : MIN_TX_FEE\n }\n}\n\nexport { Client }\n","import { FeeOption, FeeRate, TxHash, TxParams, checkFeeBounds } from '@xchainjs/xchain-client'\nimport { getSeed } from '@xchainjs/xchain-crypto'\nimport { Address } from '@xchainjs/xchain-util'\nimport * as Dogecoin from 'bitcoinjs-lib' // Importing the base Doge client\n\nimport { Client } from './client' // Importing utility functions\nimport * as Utils from './utils'\n/**\n * Custom Doge client extended to support keystore functionality\n */\nclass ClientKeystore extends Client {\n /**\n * Get the Dogecoin address.\n *\n * Generates a Dogecoin address using the provided phrase and index.\n * @param {number} index The index of the address to retrieve. Default is 0.\n * @returns {Address} The Dogecoin address.\n * @throws {\"index must be greater than zero\"} Thrown if the index is less than zero.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase is not provided.\n * @throws {\"Address not defined\"} Thrown if failed to create the address from the phrase.\n */\n getAddress(index = 0): Address {\n if (index < 0) {\n throw new Error('index must be greater than zero')\n }\n if (this.phrase) {\n // Get Dogecoin network and keys\n const dogeNetwork = Utils.dogeNetwork(this.network)\n const dogeKeys = this.getDogeKeys(this.phrase, index)\n // Generate Dogecoin address\n const { address } = Dogecoin.payments.p2pkh({\n pubkey: dogeKeys.publicKey,\n network: dogeNetwork,\n })\n if (!address) {\n throw new Error('Address not defined')\n }\n return address\n }\n throw new Error('Phrase must be provided')\n }\n /**\n * @private\n * Get private key.\n *\n * Private function to get keyPair from the this.phrase\n *\n * @param {string} phrase The phrase to be used for generating privkey\n * @returns {ECPairInterface} The privkey generated from the given phrase\n *\n * @throws {\"Could not get private key from phrase\"} Throws an error if failed creating Doge keys from the given phrase\n * */\n private getDogeKeys(phrase: string, index = 0): Dogecoin.ECPairInterface {\n const dogeNetwork = Utils.dogeNetwork(this.network)\n\n const seed = getSeed(phrase)\n const master = Dogecoin.bip32.fromSeed(seed, dogeNetwork).derivePath(this.getFullDerivationPath(index))\n\n if (!master.privateKey) {\n throw new Error('Could not get private key from phrase')\n }\n\n return Dogecoin.ECPair.fromPrivateKey(master.privateKey, { network: dogeNetwork })\n }\n\n /**\n * Get the current address.\n * Asynchronous version of getAddress method.\n * Generates a network-specific key-pair by first converting the buffer to a Wallet-Import-Format (WIF)\n * The address is then decoded into type P2WPKH and returned.\n * @returns {Address} The current address.\n *\n * @throws {\"Phrase must be provided\"} Thrown if phrase has not been set before.\n * @throws {\"Address not defined\"} Thrown if failed creating account from phrase.\n */\n async getAddressAsync(index = 0): Promise<string> {\n return this.getAddress(index)\n }\n\n /**\n * Asynchronously transfers Dogecoin.\n *\n * Builds, signs, and broadcasts a Dogecoin transaction with the specified parameters.\n * @param {TxParams & { feeRate?: FeeRate }} params The transfer parameters including transaction details and optional fee rate.\n * @returns {TxHash} A promise that resolves to the transaction hash once the transfer is completed.\n */\n async transfer(params: TxParams & { feeRate?: FeeRate }): Promise<TxHash> {\n // Determine the fee rate for the transaction, using provided fee rate or fetching it from the network\n const feeRate = params.feeRate || (await this.getFeeRates())[FeeOption.Fast]\n // Check if the fee rate is within the specified fee bounds\n checkFeeBounds(this.feeBounds, feeRate)\n\n // Get the index of the sender's address or use the default index (0)\n const fromAddressIndex = params?.walletIndex || 0\n // Prepare the transaction by building it with the specified parameters\n const { rawUnsignedTx } = await this.prepareTx({\n ...params,\n feeRate,\n sender: await this.getAddressAsync(fromAddressIndex),\n })\n // Get the Dogecoin keys for signing the transaction\n const dogeKeys = this.getDogeKeys(this.phrase, fromAddressIndex)\n // Create a Partially Signed Bitcoin Transaction (PSBT) from the raw unsigned transaction\n const psbt = Dogecoin.Psbt.fromBase64(rawUnsignedTx, { maximumFeeRate: 7500000 })\n // Sign all inputs of the transaction with the Dogecoin keys\n psbt.signAllInputs(dogeKeys)\n // Finalize all inputs of the transaction\n psbt.finalizeAllInputs()\n // Extract the signed transaction and format it to hexadecimal\n const txHex = psbt.extractTransaction().toHex()\n // Broadcast the signed transaction to the Dogecoin network and return the transaction hash\n return await this.roundRobinBroadcastTx(txHex)\n }\n}\nexport { ClientKeystore }\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","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 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","'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","'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","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\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 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","/*\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 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","/**\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 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 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 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'\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","const createHmac = require('create-hmac')\n\nconst ONE1 = Buffer.alloc(1, 1)\nconst ZERO1 = Buffer.alloc(1, 0)\n\n// https://tools.ietf.org/html/rfc6979#section-3.2\nfunction deterministicGenerateK (hash, x, checkSig, isPrivate, extraEntropy) {\n // Step A, ignored as hash already provided\n // Step B\n // Step C\n let k = Buffer.alloc(32, 0)\n let v = Buffer.alloc(32, 1)\n\n // Step D\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step E\n v = createHmac('sha256', k).update(v).digest()\n\n // Step F\n k = createHmac('sha256', k)\n .update(v)\n .update(ONE1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step G\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, ignored as tlen === qlen (256 bit)\n // Step H2b\n v = createHmac('sha256', k).update(v).digest()\n\n let T = v\n\n // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA\n while (!isPrivate(T) || !checkSig(T)) {\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .digest()\n\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n // Step H2b again\n v = createHmac('sha256', k).update(v).digest()\n T = v\n }\n\n return T\n}\n\nmodule.exports = deterministicGenerateK\n","const BN = require('bn.js')\nconst EC = require('elliptic').ec\nconst secp256k1 = new EC('secp256k1')\nconst deterministicGenerateK = require('./rfc6979')\n\nconst ZERO32 = Buffer.alloc(32, 0)\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex')\nconst EC_P = Buffer.from('fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f', 'hex')\n\nconst n = secp256k1.curve.n\nconst nDiv2 = n.shrn(1)\nconst G = secp256k1.curve.g\n\nconst THROW_BAD_PRIVATE = 'Expected Private'\nconst THROW_BAD_POINT = 'Expected Point'\nconst THROW_BAD_TWEAK = 'Expected Tweak'\nconst THROW_BAD_HASH = 'Expected Hash'\nconst THROW_BAD_SIGNATURE = 'Expected Signature'\nconst THROW_BAD_EXTRA_DATA = 'Expected Extra Data (32 bytes)'\n\nfunction isScalar (x) {\n return Buffer.isBuffer(x) && x.length === 32\n}\n\nfunction isOrderScalar (x) {\n if (!isScalar(x)) return false\n return x.compare(EC_GROUP_ORDER) < 0 // < G\n}\n\nfunction isPoint (p) {\n if (!Buffer.isBuffer(p)) return false\n if (p.length < 33) return false\n\n const t = p[0]\n const x = p.slice(1, 33)\n if (x.compare(ZERO32) === 0) return false\n if (x.compare(EC_P) >= 0) return false\n if ((t === 0x02 || t === 0x03) && p.length === 33) {\n try { decodeFrom(p) } catch (e) { return false } // TODO: temporary\n return true\n }\n\n const y = p.slice(33)\n if (y.compare(ZERO32) === 0) return false\n if (y.compare(EC_P) >= 0) return false\n if (t === 0x04 && p.length === 65) return true\n return false\n}\n\nfunction __isPointCompressed (p) {\n return p[0] !== 0x04\n}\n\nfunction isPointCompressed (p) {\n if (!isPoint(p)) return false\n return __isPointCompressed(p)\n}\n\nfunction isPrivate (x) {\n if (!isScalar(x)) return false\n return x.compare(ZERO32) > 0 && // > 0\n x.compare(EC_GROUP_ORDER) < 0 // < G\n}\n\nfunction isSignature (value) {\n const r = value.slice(0, 32)\n const s = value.slice(32, 64)\n return Buffer.isBuffer(value) && value.length === 64 &&\n r.compare(EC_GROUP_ORDER) < 0 &&\n s.compare(EC_GROUP_ORDER) < 0\n}\n\nfunction assumeCompression (value, pubkey) {\n if (value === undefined && pubkey !== undefined) return __isPointCompressed(pubkey)\n if (value === undefined) return true\n return value\n}\n\nfunction fromBuffer (d) { return new BN(d) }\nfunction toBuffer (d) { return d.toArrayLike(Buffer, 'be', 32) }\nfunction decodeFrom (P) { return secp256k1.curve.decodePoint(P) }\nfunction getEncoded (P, compressed) { return Buffer.from(P._encode(compressed)) }\n\nfunction pointAdd (pA, pB, __compressed) {\n if (!isPoint(pA)) throw new TypeError(THROW_BAD_POINT)\n if (!isPoint(pB)) throw new TypeError(THROW_BAD_POINT)\n\n const a = decodeFrom(pA)\n const b = decodeFrom(pB)\n const pp = a.add(b)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed, pA)\n return getEncoded(pp, compressed)\n}\n\nfunction pointAddScalar (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n if (tweak.compare(ZERO32) === 0) return getEncoded(pp, compressed)\n\n const tt = fromBuffer(tweak)\n const qq = G.mul(tt)\n const uu = pp.add(qq)\n if (uu.isInfinity()) return null\n\n return getEncoded(uu, compressed)\n}\n\nfunction pointCompress (p, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n\n const pp = decodeFrom(p)\n if (pp.isInfinity()) throw new TypeError(THROW_BAD_POINT)\n\n const compressed = assumeCompression(__compressed, p)\n\n return getEncoded(pp, compressed)\n}\n\nfunction pointFromScalar (d, __compressed) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n\n const dd = fromBuffer(d)\n const pp = G.mul(dd)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed)\n return getEncoded(pp, compressed)\n}\n\nfunction pointMultiply (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n const tt = fromBuffer(tweak)\n const qq = pp.mul(tt)\n if (qq.isInfinity()) return null\n\n return getEncoded(qq, compressed)\n}\n\nfunction privateAdd (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.add(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction privateSub (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.sub(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction sign (hash, x) {\n return __sign(hash, x)\n}\n\nfunction signWithEntropy (hash, x, addData) {\n return __sign(hash, x, addData)\n}\n\nfunction __sign (hash, x, addData) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPrivate(x)) throw new TypeError(THROW_BAD_PRIVATE)\n if (addData !== undefined && !isScalar(addData)) throw new TypeError(THROW_BAD_EXTRA_DATA)\n\n const d = fromBuffer(x)\n const e = fromBuffer(hash)\n\n let r, s\n const checkSig = function (k) {\n const kI = fromBuffer(k)\n const Q = G.mul(kI)\n\n if (Q.isInfinity()) return false\n\n r = Q.x.umod(n)\n if (r.isZero() === 0) return false\n\n s = kI\n .invm(n)\n .mul(e.add(d.mul(r)))\n .umod(n)\n if (s.isZero() === 0) return false\n\n return true\n }\n\n deterministicGenerateK(hash, x, checkSig, isPrivate, addData)\n\n // enforce low S values, see bip62: 'low s values in signatures'\n if (s.cmp(nDiv2) > 0) {\n s = n.sub(s)\n }\n\n const buffer = Buffer.allocUnsafe(64)\n toBuffer(r).copy(buffer, 0)\n toBuffer(s).copy(buffer, 32)\n return buffer\n}\n\nfunction verify (hash, q, signature, strict) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPoint(q)) throw new TypeError(THROW_BAD_POINT)\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1] (1, isSignature enforces '< n - 1')\n if (!isSignature(signature)) throw new TypeError(THROW_BAD_SIGNATURE)\n\n const Q = decodeFrom(q)\n const r = fromBuffer(signature.slice(0, 32))\n const s = fromBuffer(signature.slice(32, 64))\n\n if (strict && s.cmp(nDiv2) > 0) {\n return false\n }\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1] (2, enforces '> 0')\n if (r.gtn(0) <= 0 /* || r.compareTo(n) >= 0 */) return false\n if (s.gtn(0) <= 0 /* || s.compareTo(n) >= 0 */) return false\n\n // 1.4.2 H = Hash(M), already done by the user\n // 1.4.3 e = H\n const e = fromBuffer(hash)\n\n // Compute s^-1\n const sInv = s.invm(n)\n\n // 1.4.4 Compute u1 = es^−1 mod n\n // u2 = rs^−1 mod n\n const u1 = e.mul(sInv).umod(n)\n const u2 = r.mul(sInv).umod(n)\n\n // 1.4.5 Compute R = (xR, yR)\n // R = u1G + u2Q\n const R = G.mulAdd(u1, Q, u2)\n\n // 1.4.5 (cont.) Enforce R is not at infinity\n if (R.isInfinity()) return false\n\n // 1.4.6 Convert the field element R.x to an integer\n const xR = R.x\n\n // 1.4.7 Set v = xR mod n\n const v = xR.umod(n)\n\n // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n return v.eq(r)\n}\n\nmodule.exports = {\n isPoint,\n isPointCompressed,\n isPrivate,\n pointAdd,\n pointAddScalar,\n pointCompress,\n pointFromScalar,\n pointMultiply,\n privateAdd,\n privateSub,\n sign,\n signWithEntropy,\n verify\n}\n","/*\n * Bitcoin BIP32 path helpers\n * (C) 2016 Alex Beregszaszi\n */\n\nconst HARDENED = 0x80000000\n\nvar BIPPath = function (path) {\n if (!Array.isArray(path)) {\n throw new Error('Input must be an Array')\n }\n if (path.length === 0) {\n throw new Error('Path must contain at least one level')\n }\n for (var i = 0; i < path.length; i++) {\n if (typeof path[i] !== 'number') {\n throw new Error('Path element is not a number')\n }\n }\n this.path = path\n}\n\nBIPPath.validatePathArray = function (path) {\n try {\n BIPPath.fromPathArray(path)\n return true\n } catch (e) {\n return false\n }\n}\n\nBIPPath.validateString = function (text, reqRoot) {\n try {\n BIPPath.fromString(text, reqRoot)\n return true\n } catch (e) {\n return false\n }\n}\n\nBIPPath.fromPathArray = function (path) {\n return new BIPPath(path)\n}\n\nBIPPath.fromString = function (text, reqRoot) {\n // skip the root\n if (/^m\\//i.test(text)) {\n text = text.slice(2)\n } else if (reqRoot) {\n throw new Error('Root element is required')\n }\n\n var path = text.split('/')\n var ret = new Array(path.length)\n for (var i = 0; i < path.length; i++) {\n var tmp = /(\\d+)([hH\\']?)/.exec(path[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= HARDENED) {\n throw new Error('Invalid child index')\n }\n\n if (tmp[2] === 'h' || tmp[2] === 'H' || tmp[2] === '\\'') {\n ret[i] += HARDENED\n } else if (tmp[2].length != 0) {\n throw new Error('Invalid modifier')\n }\n }\n return new BIPPath(ret)\n}\n\nBIPPath.prototype.toPathArray = function () {\n return this.path\n}\n\nBIPPath.prototype.toString = function (noRoot, oldStyle) {\n var ret = new Array(this.path.length)\n for (var i = 0; i < this.path.length; i++) {\n var tmp = this.path[i]\n if (tmp & HARDENED) {\n ret[i] = (tmp & ~HARDENED) + (oldStyle ? 'h' : '\\'')\n } else {\n ret[i] = tmp\n }\n }\n return (noRoot ? '' : 'm/') + ret.join('/')\n}\n\nBIPPath.prototype.inspect = function () {\n return 'BIPPath <' + this.toString() + '>'\n}\n\nmodule.exports = BIPPath\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'\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 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 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","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\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","'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","import bippath from \"bip32-path\";\nimport bs58check from \"bs58check\";\nexport function pathElementsToBuffer(paths) {\n const buffer = Buffer.alloc(1 + paths.length * 4);\n buffer[0] = paths.length;\n paths.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n return buffer;\n}\nexport function bip32asBuffer(path) {\n const pathElements = !path ? [] : pathStringToArray(path);\n return pathElementsToBuffer(pathElements);\n}\nexport function pathArrayToString(pathElements) {\n // Limitation: bippath can't handle and empty path. It shouldn't affect us\n // right now, but might in the future.\n // TODO: Fix support for empty path.\n return bippath.fromPathArray(pathElements).toString();\n}\nexport function pathStringToArray(path) {\n return bippath.fromString(path).toPathArray();\n}\nexport function pubkeyFromXpub(xpub) {\n const xpubBuf = bs58check.decode(xpub);\n return xpubBuf.slice(xpubBuf.length - 33);\n}\nexport function getXpubComponents(xpub) {\n const xpubBuf = bs58check.decode(xpub);\n return {\n chaincode: xpubBuf.slice(13, 13 + 32),\n pubkey: xpubBuf.slice(xpubBuf.length - 33),\n version: xpubBuf.readUInt32BE(0),\n };\n}\nexport function hardenedPathOf(pathElements) {\n for (let i = pathElements.length - 1; i >= 0; i--) {\n if (pathElements[i] >= 0x80000000) {\n return pathElements.slice(0, i + 1);\n }\n }\n return [];\n}\n//# sourceMappingURL=bip32.js.map","'use strict'\nvar Buffer = require('safe-buffer').Buffer\n\n// Number.MAX_SAFE_INTEGER\nvar MAX_SAFE_INTEGER = 9007199254740991\n\nfunction checkUInt53 (n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')\n}\n\nfunction encode (number, buffer, offset) {\n checkUInt53(number)\n\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(number))\n if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')\n if (!offset) offset = 0\n\n // 8 bit\n if (number < 0xfd) {\n buffer.writeUInt8(number, offset)\n encode.bytes = 1\n\n // 16 bit\n } else if (number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset)\n buffer.writeUInt16LE(number, offset + 1)\n encode.bytes = 3\n\n // 32 bit\n } else if (number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset)\n buffer.writeUInt32LE(number, offset + 1)\n encode.bytes = 5\n\n // 64 bit\n } else {\n buffer.writeUInt8(0xff, offset)\n buffer.writeUInt32LE(number >>> 0, offset + 1)\n buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)\n encode.bytes = 9\n }\n\n return buffer\n}\n\nfunction decode (buffer, offset) {\n if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')\n if (!offset) offset = 0\n\n var first = buffer.readUInt8(offset)\n\n // 8 bit\n if (first < 0xfd) {\n decode.bytes = 1\n return first\n\n // 16 bit\n } else if (first === 0xfd) {\n decode.bytes = 3\n return buffer.readUInt16LE(offset + 1)\n\n // 32 bit\n } else if (first === 0xfe) {\n decode.bytes = 5\n return buffer.readUInt32LE(offset + 1)\n\n // 64 bit\n } else {\n decode.bytes = 9\n var lo = buffer.readUInt32LE(offset + 1)\n var hi = buffer.readUInt32LE(offset + 5)\n var number = hi * 0x0100000000 + lo\n checkUInt53(number)\n\n return number\n }\n}\n\nfunction encodingLength (number) {\n checkUInt53(number)\n\n return (\n number < 0xfd ? 1\n : number <= 0xffff ? 3\n : number <= 0xffffffff ? 5\n : 9\n )\n}\n\nmodule.exports = { encode: encode, decode: decode, encodingLength: encodingLength }\n","import varuint from \"varuint-bitcoin\";\nexport function unsafeTo64bitLE(n) {\n // we want to represent the input as a 8-bytes array\n if (n > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Can't convert numbers > MAX_SAFE_INT\");\n }\n const byteArray = Buffer.alloc(8, 0);\n for (let index = 0; index < byteArray.length; index++) {\n const byte = n & 0xff;\n byteArray[index] = byte;\n n = (n - byte) / 256;\n }\n return byteArray;\n}\nexport function unsafeFrom64bitLE(byteArray) {\n let value = 0;\n if (byteArray.length != 8) {\n throw new Error(\"Expected Bufffer of lenght 8\");\n }\n if (byteArray[7] != 0) {\n throw new Error(\"Can't encode numbers > MAX_SAFE_INT\");\n }\n if (byteArray[6] > 0x1f) {\n throw new Error(\"Can't encode numbers > MAX_SAFE_INT\");\n }\n for (let i = byteArray.length - 1; i >= 0; i--) {\n value = value * 256 + byteArray[i];\n }\n return value;\n}\nexport class BufferWriter {\n constructor() {\n this.bufs = [];\n }\n write(alloc, fn) {\n const b = Buffer.alloc(alloc);\n fn(b);\n this.bufs.push(b);\n }\n writeUInt8(i) {\n this.write(1, b => b.writeUInt8(i, 0));\n }\n writeInt32(i) {\n this.write(4, b => b.writeInt32LE(i, 0));\n }\n writeUInt32(i) {\n this.write(4, b => b.writeUInt32LE(i, 0));\n }\n writeUInt64(i) {\n const bytes = unsafeTo64bitLE(i);\n this.writeSlice(bytes);\n }\n writeVarInt(i) {\n this.bufs.push(varuint.encode(i));\n }\n writeSlice(slice) {\n this.bufs.push(Buffer.from(slice));\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n buffer() {\n return Buffer.concat(this.bufs);\n }\n}\nexport class BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n }\n available() {\n return this.buffer.length - this.offset;\n }\n readUInt8() {\n const result = this.buffer.readUInt8(this.offset);\n this.offset++;\n return result;\n }\n readInt32() {\n const result = this.buffer.readInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt32() {\n const result = this.buffer.readUInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt64() {\n const buf = this.readSlice(8);\n const n = unsafeFrom64bitLE(buf);\n return n;\n }\n readVarInt() {\n const vi = varuint.decode(this.buffer, this.offset);\n this.offset += varuint.decode.bytes;\n return vi;\n }\n readSlice(n) {\n if (this.buffer.length < this.offset + n) {\n throw new Error(\"Cannot read slice out of bounds\");\n }\n const result = this.buffer.slice(this.offset, this.offset + n);\n this.offset += n;\n return result;\n }\n readVarSlice() {\n return this.readSlice(this.readVarInt());\n }\n readVector() {\n const count = this.readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++)\n vector.push(this.readVarSlice());\n return vector;\n }\n}\n//# sourceMappingURL=buffertools.js.map","// flow\nexport const MAX_SCRIPT_BLOCK = 50;\nexport const DEFAULT_VERSION = 1;\nexport const DEFAULT_LOCKTIME = 0;\nexport const DEFAULT_SEQUENCE = 0xffffffff;\nexport const SIGHASH_ALL = 1;\nexport const OP_DUP = 0x76;\nexport const OP_HASH160 = 0xa9;\nexport const HASH_SIZE = 0x14;\nexport const OP_EQUAL = 0x87;\nexport const OP_EQUALVERIFY = 0x88;\nexport const OP_CHECKSIG = 0xac;\nexport const OP_RETURN = 0x6a;\n//# sourceMappingURL=constants.js.map","import RIPEMD160 from \"ripemd160\";\nimport sha from \"sha.js\";\nexport function hashPublicKey(buffer) {\n return new RIPEMD160().update(sha(\"sha256\").update(buffer).digest()).digest();\n}\n//# sourceMappingURL=hashPublicKey.js.map","import { crypto } from \"bitcoinjs-lib\";\nimport { pointAddScalar } from \"tiny-secp256k1\";\nimport { BufferWriter } from \"../buffertools\";\nimport { HASH_SIZE, OP_CHECKSIG, OP_DUP, OP_EQUAL, OP_EQUALVERIFY, OP_HASH160 } from \"../constants\";\nimport { hashPublicKey } from \"../hashPublicKey\";\nclass BaseAccount {\n constructor(psbt, masterFp) {\n this.psbt = psbt;\n this.masterFp = masterFp;\n }\n}\n/**\n * Superclass for single signature accounts. This will make sure that the pubkey\n * arrays and path arrays in the method arguments contains exactly one element\n * and calls an abstract method to do the actual work.\n */\nclass SingleKeyAccount extends BaseAccount {\n spendingCondition(pubkeys) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n return this.singleKeyCondition(pubkeys[0]);\n }\n setInput(i, inputTx, spentOutput, pubkeys, pathElems) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n if (pathElems.length != 1) {\n throw new Error(\"Expected single path, got \" + pathElems.length);\n }\n this.setSingleKeyInput(i, inputTx, spentOutput, pubkeys[0], pathElems[0]);\n }\n setOwnOutput(i, cond, pubkeys, paths) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n if (paths.length != 1) {\n throw new Error(\"Expected single path, got \" + paths.length);\n }\n this.setSingleKeyOutput(i, cond, pubkeys[0], paths[0]);\n }\n}\nexport class p2pkh extends SingleKeyAccount {\n singleKeyCondition(pubkey) {\n const buf = new BufferWriter();\n const pubkeyHash = hashPublicKey(pubkey);\n buf.writeSlice(Buffer.from([OP_DUP, OP_HASH160, HASH_SIZE]));\n buf.writeSlice(pubkeyHash);\n buf.writeSlice(Buffer.from([OP_EQUALVERIFY, OP_CHECKSIG]));\n return { scriptPubKey: buf.buffer() };\n }\n setSingleKeyInput(i, inputTx, _spentOutput, pubkey, path) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n setSingleKeyOutput(i, cond, pubkey, path) {\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n getDescriptorTemplate() {\n return \"pkh(@0)\";\n }\n}\nexport class p2tr extends SingleKeyAccount {\n singleKeyCondition(pubkey) {\n const xonlyPubkey = pubkey.slice(1); // x-only pubkey\n const buf = new BufferWriter();\n const outputKey = this.getTaprootOutputKey(xonlyPubkey);\n buf.writeSlice(Buffer.from([0x51, 32])); // push1, pubkeylen\n buf.writeSlice(outputKey);\n return { scriptPubKey: buf.buffer() };\n }\n setSingleKeyInput(i, _inputTx, spentOutput, pubkey, path) {\n const xonly = pubkey.slice(1);\n this.psbt.setInputTapBip32Derivation(i, xonly, [], this.masterFp, path);\n this.psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.cond.scriptPubKey);\n }\n setSingleKeyOutput(i, cond, pubkey, path) {\n const xonly = pubkey.slice(1);\n this.psbt.setOutputTapBip32Derivation(i, xonly, [], this.masterFp, path);\n }\n getDescriptorTemplate() {\n return \"tr(@0)\";\n }\n /*\n The following two functions are copied from wallet-btc and adapted.\n They should be moved to a library to avoid code reuse.\n */\n hashTapTweak(x) {\n // hash_tag(x) = SHA256(SHA256(tag) || SHA256(tag) || x), see BIP340\n // See https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#specification\n const h = crypto.sha256(Buffer.from(\"TapTweak\", \"utf-8\"));\n return crypto.sha256(Buffer.concat([h, h, x]));\n }\n /**\n * Calculates a taproot output key from an internal key. This output key will be\n * used as witness program in a taproot output. The internal key is tweaked\n * according to recommendation in BIP341:\n * https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0\n *\n * @param internalPubkey A 32 byte x-only taproot internal key\n * @returns The output key\n */\n getTaprootOutputKey(internalPubkey) {\n if (internalPubkey.length != 32) {\n throw new Error(\"Expected 32 byte pubkey. Got \" + internalPubkey.length);\n }\n // A BIP32 derived key can be converted to a schnorr pubkey by dropping\n // the first byte, which represent the oddness/evenness. In schnorr all\n // pubkeys are even.\n // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#public-key-conversion\n const evenEcdsaPubkey = Buffer.concat([Buffer.from([0x02]), internalPubkey]);\n const tweak = this.hashTapTweak(internalPubkey);\n // Q = P + int(hash_TapTweak(bytes(P)))G\n const outputEcdsaKey = Buffer.from(pointAddScalar(evenEcdsaPubkey, tweak));\n // Convert to schnorr.\n const outputSchnorrKey = outputEcdsaKey.slice(1);\n // Create address\n return outputSchnorrKey;\n }\n}\nexport class p2wpkhWrapped extends SingleKeyAccount {\n singleKeyCondition(pubkey) {\n const buf = new BufferWriter();\n const redeemScript = this.createRedeemScript(pubkey);\n const scriptHash = hashPublicKey(redeemScript);\n buf.writeSlice(Buffer.from([OP_HASH160, HASH_SIZE]));\n buf.writeSlice(scriptHash);\n buf.writeUInt8(OP_EQUAL);\n return { scriptPubKey: buf.buffer(), redeemScript: redeemScript };\n }\n setSingleKeyInput(i, inputTx, spentOutput, pubkey, path) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n const userSuppliedRedeemScript = spentOutput.cond.redeemScript;\n const expectedRedeemScript = this.createRedeemScript(pubkey);\n if (userSuppliedRedeemScript && !expectedRedeemScript.equals(userSuppliedRedeemScript)) {\n // At what point might a user set the redeemScript on its own?\n throw new Error(`User-supplied redeemScript ${userSuppliedRedeemScript.toString(\"hex\")} doesn't\n match expected ${expectedRedeemScript.toString(\"hex\")} for input ${i}`);\n }\n this.psbt.setInputRedeemScript(i, expectedRedeemScript);\n this.psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.cond.scriptPubKey);\n }\n setSingleKeyOutput(i, cond, pubkey, path) {\n this.psbt.setOutputRedeemScript(i, cond.redeemScript);\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n getDescriptorTemplate() {\n return \"sh(wpkh(@0))\";\n }\n createRedeemScript(pubkey) {\n const pubkeyHash = hashPublicKey(pubkey);\n return Buffer.concat([Buffer.from(\"0014\", \"hex\"), pubkeyHash]);\n }\n}\nexport class p2wpkh extends SingleKeyAccount {\n singleKeyCondition(pubkey) {\n const buf = new BufferWriter();\n const pubkeyHash = hashPublicKey(pubkey);\n buf.writeSlice(Buffer.from([0, HASH_SIZE]));\n buf.writeSlice(pubkeyHash);\n return { scriptPubKey: buf.buffer() };\n }\n setSingleKeyInput(i, inputTx, spentOutput, pubkey, path) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n this.psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.cond.scriptPubKey);\n }\n setSingleKeyOutput(i, cond, pubkey, path) {\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n getDescriptorTemplate() {\n return \"wpkh(@0)\";\n }\n}\n//# sourceMappingURL=accounttype.js.map","import { crypto } from \"bitcoinjs-lib\";\n/**\n * This class implements the merkle tree used by Ledger Bitcoin app v2+,\n * which is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md\n */\nexport class Merkle {\n constructor(leaves, hasher = crypto.sha256) {\n this.leaves = leaves;\n this.h = hasher;\n const nodes = this.calculateRoot(leaves);\n this.rootNode = nodes.root;\n this.leafNodes = nodes.leaves;\n }\n getRoot() {\n return this.rootNode.hash;\n }\n size() {\n return this.leaves.length;\n }\n getLeaves() {\n return this.leaves;\n }\n getLeafHash(index) {\n return this.leafNodes[index].hash;\n }\n getProof(index) {\n if (index >= this.leaves.length)\n throw Error(\"Index out of bounds\");\n return proveNode(this.leafNodes[index]);\n }\n calculateRoot(leaves) {\n const n = leaves.length;\n if (n == 0) {\n return {\n root: new Node(undefined, undefined, Buffer.alloc(32, 0)),\n leaves: [],\n };\n }\n if (n == 1) {\n const newNode = new Node(undefined, undefined, leaves[0]);\n return { root: newNode, leaves: [newNode] };\n }\n const leftCount = highestPowerOf2LessThan(n);\n const leftBranch = this.calculateRoot(leaves.slice(0, leftCount));\n const rightBranch = this.calculateRoot(leaves.slice(leftCount));\n const leftChild = leftBranch.root;\n const rightChild = rightBranch.root;\n const hash = this.hashNode(leftChild.hash, rightChild.hash);\n const node = new Node(leftChild, rightChild, hash);\n leftChild.parent = node;\n rightChild.parent = node;\n return { root: node, leaves: leftBranch.leaves.concat(rightBranch.leaves) };\n }\n hashNode(left, right) {\n return this.h(Buffer.concat([Buffer.from([1]), left, right]));\n }\n}\nexport function hashLeaf(buf, hashFunction = crypto.sha256) {\n return hashConcat(Buffer.from([0]), buf, hashFunction);\n}\nfunction hashConcat(bufA, bufB, hashFunction) {\n return hashFunction(Buffer.concat([bufA, bufB]));\n}\nclass Node {\n constructor(left, right, hash) {\n this.leftChild = left;\n this.rightChild = right;\n this.hash = hash;\n }\n isLeaf() {\n return this.leftChild == undefined;\n }\n}\nfunction proveNode(node) {\n if (!node.parent) {\n return [];\n }\n if (node.parent.leftChild == node) {\n if (!node.parent.rightChild) {\n throw new Error(\"Expected right child to exist\");\n }\n return [node.parent.rightChild.hash, ...proveNode(node.parent)];\n }\n else {\n if (!node.parent.leftChild) {\n throw new Error(\"Expected left child to exist\");\n }\n return [node.parent.leftChild.hash, ...proveNode(node.parent)];\n }\n}\nfunction highestPowerOf2LessThan(n) {\n if (n < 2) {\n throw Error(\"Expected n >= 2\");\n }\n if (isPowerOf2(n)) {\n return n / 2;\n }\n return 1 << Math.floor(Math.log2(n));\n}\nfunction isPowerOf2(n) {\n return (n & (n - 1)) == 0;\n}\n//# sourceMappingURL=merkle.js.map","import { crypto } from \"bitcoinjs-lib\";\nimport { pathArrayToString } from \"../bip32\";\nimport { BufferWriter } from \"../buffertools\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n/**\n * The Bitcon hardware app uses a descriptors-like thing to describe\n * how to construct output scripts from keys. A \"Wallet Policy\" consists\n * of a \"Descriptor Template\" and a list of \"keys\". A key is basically\n * a serialized BIP32 extended public key with some added derivation path\n * information. This is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md\n */\nexport class WalletPolicy {\n /**\n * For now, we only support default descriptor templates.\n */\n constructor(descriptorTemplate, key) {\n this.descriptorTemplate = descriptorTemplate;\n this.keys = [key];\n }\n getWalletId() {\n // wallet_id (sha256 of the wallet serialization),\n return crypto.sha256(this.serialize());\n }\n serialize() {\n const keyBuffers = this.keys.map(k => {\n return Buffer.from(k, \"ascii\");\n });\n const m = new Merkle(keyBuffers.map(k => hashLeaf(k)));\n const buf = new BufferWriter();\n buf.writeUInt8(0x01); // wallet type (policy map)\n buf.writeUInt8(0); // length of wallet name (empty string for default wallets)\n buf.writeVarSlice(Buffer.from(this.descriptorTemplate, \"ascii\"));\n buf.writeVarInt(this.keys.length), buf.writeSlice(m.getRoot());\n return buf.buffer();\n }\n}\nexport function createKey(masterFingerprint, path, xpub) {\n const accountPath = pathArrayToString(path);\n return `[${masterFingerprint.toString(\"hex\")}${accountPath.substring(1)}]${xpub}/**`;\n}\n//# sourceMappingURL=policy.js.map","import { BufferWriter } from \"../buffertools\";\n/**\n * This implements the \"Transaction Extractor\" role of BIP370 (PSBTv2\n * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However\n * the role is partially documented in BIP174 (PSBTv0\n * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor).\n */\nexport function extract(psbt) {\n var _a, _b;\n const tx = new BufferWriter();\n tx.writeUInt32(psbt.getGlobalTxVersion());\n const isSegwit = !!psbt.getInputWitnessUtxo(0);\n if (isSegwit) {\n tx.writeSlice(Buffer.from([0, 1]));\n }\n const inputCount = psbt.getGlobalInputCount();\n tx.writeVarInt(inputCount);\n const witnessWriter = new BufferWriter();\n for (let i = 0; i < inputCount; i++) {\n tx.writeSlice(psbt.getInputPreviousTxid(i));\n tx.writeUInt32(psbt.getInputOutputIndex(i));\n tx.writeVarSlice((_a = psbt.getInputFinalScriptsig(i)) !== null && _a !== void 0 ? _a : Buffer.from([]));\n tx.writeUInt32(psbt.getInputSequence(i));\n if (isSegwit) {\n witnessWriter.writeSlice(psbt.getInputFinalScriptwitness(i));\n }\n }\n const outputCount = psbt.getGlobalOutputCount();\n tx.writeVarInt(outputCount);\n for (let i = 0; i < outputCount; i++) {\n tx.writeUInt64(psbt.getOutputAmount(i));\n tx.writeVarSlice(psbt.getOutputScript(i));\n }\n tx.writeSlice(witnessWriter.buffer());\n tx.writeUInt32((_b = psbt.getGlobalFallbackLocktime()) !== null && _b !== void 0 ? _b : 0);\n return tx.buffer();\n}\n//# sourceMappingURL=psbtExtractor.js.map","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { BufferReader, BufferWriter, unsafeFrom64bitLE, unsafeTo64bitLE } from \"../buffertools\";\nexport var psbtGlobal;\n(function (psbtGlobal) {\n psbtGlobal[psbtGlobal[\"TX_VERSION\"] = 2] = \"TX_VERSION\";\n psbtGlobal[psbtGlobal[\"FALLBACK_LOCKTIME\"] = 3] = \"FALLBACK_LOCKTIME\";\n psbtGlobal[psbtGlobal[\"INPUT_COUNT\"] = 4] = \"INPUT_COUNT\";\n psbtGlobal[psbtGlobal[\"OUTPUT_COUNT\"] = 5] = \"OUTPUT_COUNT\";\n psbtGlobal[psbtGlobal[\"TX_MODIFIABLE\"] = 6] = \"TX_MODIFIABLE\";\n psbtGlobal[psbtGlobal[\"VERSION\"] = 251] = \"VERSION\";\n})(psbtGlobal || (psbtGlobal = {}));\nexport var psbtIn;\n(function (psbtIn) {\n psbtIn[psbtIn[\"NON_WITNESS_UTXO\"] = 0] = \"NON_WITNESS_UTXO\";\n psbtIn[psbtIn[\"WITNESS_UTXO\"] = 1] = \"WITNESS_UTXO\";\n psbtIn[psbtIn[\"PARTIAL_SIG\"] = 2] = \"PARTIAL_SIG\";\n psbtIn[psbtIn[\"SIGHASH_TYPE\"] = 3] = \"SIGHASH_TYPE\";\n psbtIn[psbtIn[\"REDEEM_SCRIPT\"] = 4] = \"REDEEM_SCRIPT\";\n psbtIn[psbtIn[\"BIP32_DERIVATION\"] = 6] = \"BIP32_DERIVATION\";\n psbtIn[psbtIn[\"FINAL_SCRIPTSIG\"] = 7] = \"FINAL_SCRIPTSIG\";\n psbtIn[psbtIn[\"FINAL_SCRIPTWITNESS\"] = 8] = \"FINAL_SCRIPTWITNESS\";\n psbtIn[psbtIn[\"PREVIOUS_TXID\"] = 14] = \"PREVIOUS_TXID\";\n psbtIn[psbtIn[\"OUTPUT_INDEX\"] = 15] = \"OUTPUT_INDEX\";\n psbtIn[psbtIn[\"SEQUENCE\"] = 16] = \"SEQUENCE\";\n psbtIn[psbtIn[\"TAP_KEY_SIG\"] = 19] = \"TAP_KEY_SIG\";\n psbtIn[psbtIn[\"TAP_BIP32_DERIVATION\"] = 22] = \"TAP_BIP32_DERIVATION\";\n})(psbtIn || (psbtIn = {}));\nexport var psbtOut;\n(function (psbtOut) {\n psbtOut[psbtOut[\"REDEEM_SCRIPT\"] = 0] = \"REDEEM_SCRIPT\";\n psbtOut[psbtOut[\"BIP_32_DERIVATION\"] = 2] = \"BIP_32_DERIVATION\";\n psbtOut[psbtOut[\"AMOUNT\"] = 3] = \"AMOUNT\";\n psbtOut[psbtOut[\"SCRIPT\"] = 4] = \"SCRIPT\";\n psbtOut[psbtOut[\"TAP_BIP32_DERIVATION\"] = 7] = \"TAP_BIP32_DERIVATION\";\n})(psbtOut || (psbtOut = {}));\nconst PSBT_MAGIC_BYTES = Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]);\nexport class NoSuchEntry extends Error {\n}\n/**\n * Implements Partially Signed Bitcoin Transaction version 2, BIP370, as\n * documented at https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki\n * and https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki\n *\n * A psbt is a data structure that can carry all relevant information about a\n * transaction through all stages of the signing process. From constructing an\n * unsigned transaction to extracting the final serialized transaction ready for\n * broadcast.\n *\n * This implementation is limited to what's needed in ledgerjs to carry out its\n * duties, which means that support for features like multisig or taproot script\n * path spending are not implemented. Specifically, it supports p2pkh,\n * p2wpkhWrappedInP2sh, p2wpkh and p2tr key path spending.\n *\n * This class is made purposefully dumb, so it's easy to add support for\n * complemantary fields as needed in the future.\n */\nexport class PsbtV2 {\n constructor() {\n this.globalMap = new Map();\n this.inputMaps = [];\n this.outputMaps = [];\n }\n setGlobalTxVersion(version) {\n this.setGlobal(psbtGlobal.TX_VERSION, uint32LE(version));\n }\n getGlobalTxVersion() {\n return this.getGlobal(psbtGlobal.TX_VERSION).readUInt32LE(0);\n }\n setGlobalFallbackLocktime(locktime) {\n this.setGlobal(psbtGlobal.FALLBACK_LOCKTIME, uint32LE(locktime));\n }\n getGlobalFallbackLocktime() {\n var _a;\n return (_a = this.getGlobalOptional(psbtGlobal.FALLBACK_LOCKTIME)) === null || _a === void 0 ? void 0 : _a.readUInt32LE(0);\n }\n setGlobalInputCount(inputCount) {\n this.setGlobal(psbtGlobal.INPUT_COUNT, varint(inputCount));\n }\n getGlobalInputCount() {\n return fromVarint(this.getGlobal(psbtGlobal.INPUT_COUNT));\n }\n setGlobalOutputCount(outputCount) {\n this.setGlobal(psbtGlobal.OUTPUT_COUNT, varint(outputCount));\n }\n getGlobalOutputCount() {\n return fromVarint(this.getGlobal(psbtGlobal.OUTPUT_COUNT));\n }\n setGlobalTxModifiable(byte) {\n this.setGlobal(psbtGlobal.TX_MODIFIABLE, byte);\n }\n getGlobalTxModifiable() {\n return this.getGlobalOptional(psbtGlobal.TX_MODIFIABLE);\n }\n setGlobalPsbtVersion(psbtVersion) {\n this.setGlobal(psbtGlobal.VERSION, uint32LE(psbtVersion));\n }\n getGlobalPsbtVersion() {\n return this.getGlobal(psbtGlobal.VERSION).readUInt32LE(0);\n }\n setInputNonWitnessUtxo(inputIndex, transaction) {\n this.setInput(inputIndex, psbtIn.NON_WITNESS_UTXO, b(), transaction);\n }\n getInputNonWitnessUtxo(inputIndex) {\n return this.getInputOptional(inputIndex, psbtIn.NON_WITNESS_UTXO, b());\n }\n setInputWitnessUtxo(inputIndex, amount, scriptPubKey) {\n const buf = new BufferWriter();\n buf.writeSlice(amount);\n buf.writeVarSlice(scriptPubKey);\n this.setInput(inputIndex, psbtIn.WITNESS_UTXO, b(), buf.buffer());\n }\n getInputWitnessUtxo(inputIndex) {\n const utxo = this.getInputOptional(inputIndex, psbtIn.WITNESS_UTXO, b());\n if (!utxo)\n return undefined;\n const buf = new BufferReader(utxo);\n return { amount: buf.readSlice(8), scriptPubKey: buf.readVarSlice() };\n }\n setInputPartialSig(inputIndex, pubkey, signature) {\n this.setInput(inputIndex, psbtIn.PARTIAL_SIG, pubkey, signature);\n }\n getInputPartialSig(inputIndex, pubkey) {\n return this.getInputOptional(inputIndex, psbtIn.PARTIAL_SIG, pubkey);\n }\n setInputSighashType(inputIndex, sigHashtype) {\n this.setInput(inputIndex, psbtIn.SIGHASH_TYPE, b(), uint32LE(sigHashtype));\n }\n getInputSighashType(inputIndex) {\n const result = this.getInputOptional(inputIndex, psbtIn.SIGHASH_TYPE, b());\n if (!result)\n return undefined;\n return result.readUInt32LE(0);\n }\n setInputRedeemScript(inputIndex, redeemScript) {\n this.setInput(inputIndex, psbtIn.REDEEM_SCRIPT, b(), redeemScript);\n }\n getInputRedeemScript(inputIndex) {\n return this.getInputOptional(inputIndex, psbtIn.REDEEM_SCRIPT, b());\n }\n setInputBip32Derivation(inputIndex, pubkey, masterFingerprint, path) {\n if (pubkey.length != 33)\n throw new Error(\"Invalid pubkey length: \" + pubkey.length);\n this.setInput(inputIndex, psbtIn.BIP32_DERIVATION, pubkey, this.encodeBip32Derivation(masterFingerprint, path));\n }\n getInputBip32Derivation(inputIndex, pubkey) {\n const buf = this.getInputOptional(inputIndex, psbtIn.BIP32_DERIVATION, pubkey);\n if (!buf)\n return undefined;\n return this.decodeBip32Derivation(buf);\n }\n setInputFinalScriptsig(inputIndex, scriptSig) {\n this.setInput(inputIndex, psbtIn.FINAL_SCRIPTSIG, b(), scriptSig);\n }\n getInputFinalScriptsig(inputIndex) {\n return this.getInputOptional(inputIndex, psbtIn.FINAL_SCRIPTSIG, b());\n }\n setInputFinalScriptwitness(inputIndex, scriptWitness) {\n this.setInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b(), scriptWitness);\n }\n getInputFinalScriptwitness(inputIndex) {\n return this.getInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b());\n }\n setInputPreviousTxId(inputIndex, txid) {\n this.setInput(inputIndex, psbtIn.PREVIOUS_TXID, b(), txid);\n }\n getInputPreviousTxid(inputIndex) {\n return this.getInput(inputIndex, psbtIn.PREVIOUS_TXID, b());\n }\n setInputOutputIndex(inputIndex, outputIndex) {\n this.setInput(inputIndex, psbtIn.OUTPUT_INDEX, b(), uint32LE(outputIndex));\n }\n getInputOutputIndex(inputIndex) {\n return this.getInput(inputIndex, psbtIn.OUTPUT_INDEX, b()).readUInt32LE(0);\n }\n setInputSequence(inputIndex, sequence) {\n this.setInput(inputIndex, psbtIn.SEQUENCE, b(), uint32LE(sequence));\n }\n getInputSequence(inputIndex) {\n var _a, _b;\n return (_b = (_a = this.getInputOptional(inputIndex, psbtIn.SEQUENCE, b())) === null || _a === void 0 ? void 0 : _a.readUInt32LE(0)) !== null && _b !== void 0 ? _b : 0xffffffff;\n }\n setInputTapKeySig(inputIndex, sig) {\n this.setInput(inputIndex, psbtIn.TAP_KEY_SIG, b(), sig);\n }\n getInputTapKeySig(inputIndex) {\n return this.getInputOptional(inputIndex, psbtIn.TAP_KEY_SIG, b());\n }\n setInputTapBip32Derivation(inputIndex, pubkey, hashes, masterFingerprint, path) {\n if (pubkey.length != 32)\n throw new Error(\"Invalid pubkey length: \" + pubkey.length);\n const buf = this.encodeTapBip32Derivation(hashes, masterFingerprint, path);\n this.setInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey, buf);\n }\n getInputTapBip32Derivation(inputIndex, pubkey) {\n const buf = this.getInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey);\n return this.decodeTapBip32Derivation(buf);\n }\n getInputKeyDatas(inputIndex, keyType) {\n return this.getKeyDatas(this.inputMaps[inputIndex], keyType);\n }\n setOutputRedeemScript(outputIndex, redeemScript) {\n this.setOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b(), redeemScript);\n }\n getOutputRedeemScript(outputIndex) {\n return this.getOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b());\n }\n setOutputBip32Derivation(outputIndex, pubkey, masterFingerprint, path) {\n this.setOutput(outputIndex, psbtOut.BIP_32_DERIVATION, pubkey, this.encodeBip32Derivation(masterFingerprint, path));\n }\n getOutputBip32Derivation(outputIndex, pubkey) {\n const buf = this.getOutput(outputIndex, psbtOut.BIP_32_DERIVATION, pubkey);\n return this.decodeBip32Derivation(buf);\n }\n setOutputAmount(outputIndex, amount) {\n this.setOutput(outputIndex, psbtOut.AMOUNT, b(), uint64LE(amount));\n }\n getOutputAmount(outputIndex) {\n const buf = this.getOutput(outputIndex, psbtOut.AMOUNT, b());\n return unsafeFrom64bitLE(buf);\n }\n setOutputScript(outputIndex, scriptPubKey) {\n this.setOutput(outputIndex, psbtOut.SCRIPT, b(), scriptPubKey);\n }\n getOutputScript(outputIndex) {\n return this.getOutput(outputIndex, psbtOut.SCRIPT, b());\n }\n setOutputTapBip32Derivation(outputIndex, pubkey, hashes, fingerprint, path) {\n const buf = this.encodeTapBip32Derivation(hashes, fingerprint, path);\n this.setOutput(outputIndex, psbtOut.TAP_BIP32_DERIVATION, pubkey, buf);\n }\n getOutputTapBip32Derivation(outputIndex, pubkey) {\n const buf = this.getOutput(outputIndex, psbtOut.TAP_BIP32_DERIVATION, pubkey);\n return this.decodeTapBip32Derivation(buf);\n }\n deleteInputEntries(inputIndex, keyTypes) {\n const map = this.inputMaps[inputIndex];\n map.forEach((_v, k, m) => {\n if (this.isKeyType(k, keyTypes)) {\n m.delete(k);\n }\n });\n }\n copy(to) {\n this.copyMap(this.globalMap, to.globalMap);\n this.copyMaps(this.inputMaps, to.inputMaps);\n this.copyMaps(this.outputMaps, to.outputMaps);\n }\n copyMaps(from, to) {\n from.forEach((m, index) => {\n const to_index = new Map();\n this.copyMap(m, to_index);\n to[index] = to_index;\n });\n }\n copyMap(from, to) {\n from.forEach((v, k) => to.set(k, Buffer.from(v)));\n }\n serialize() {\n const buf = new BufferWriter();\n buf.writeSlice(Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]));\n serializeMap(buf, this.globalMap);\n this.inputMaps.forEach(map => {\n serializeMap(buf, map);\n });\n this.outputMaps.forEach(map => {\n serializeMap(buf, map);\n });\n return buf.buffer();\n }\n deserialize(psbt) {\n const buf = new BufferReader(psbt);\n if (!buf.readSlice(5).equals(PSBT_MAGIC_BYTES)) {\n throw new Error(\"Invalid magic bytes\");\n }\n while (this.readKeyPair(this.globalMap, buf))\n ;\n for (let i = 0; i < this.getGlobalInputCount(); i++) {\n this.inputMaps[i] = new Map();\n while (this.readKeyPair(this.inputMaps[i], buf))\n ;\n }\n for (let i = 0; i < this.getGlobalOutputCount(); i++) {\n this.outputMaps[i] = new Map();\n while (this.readKeyPair(this.outputMaps[i], buf))\n ;\n }\n }\n readKeyPair(map, buf) {\n const keyLen = buf.readVarInt();\n if (keyLen == 0) {\n return false;\n }\n const keyType = buf.readUInt8();\n const keyData = buf.readSlice(keyLen - 1);\n const value = buf.readVarSlice();\n set(map, keyType, keyData, value);\n return true;\n }\n getKeyDatas(map, keyType) {\n const result = [];\n map.forEach((_v, k) => {\n if (this.isKeyType(k, [keyType])) {\n result.push(Buffer.from(k.substring(2), \"hex\"));\n }\n });\n return result;\n }\n isKeyType(hexKey, keyTypes) {\n const keyType = Buffer.from(hexKey.substring(0, 2), \"hex\").readUInt8(0);\n return keyTypes.some(k => k == keyType);\n }\n setGlobal(keyType, value) {\n const key = new Key(keyType, Buffer.from([]));\n this.globalMap.set(key.toString(), value);\n }\n getGlobal(keyType) {\n return get(this.globalMap, keyType, b(), false);\n }\n getGlobalOptional(keyType) {\n return get(this.globalMap, keyType, b(), true);\n }\n setInput(index, keyType, keyData, value) {\n set(this.getMap(index, this.inputMaps), keyType, keyData, value);\n }\n getInput(index, keyType, keyData) {\n return get(this.inputMaps[index], keyType, keyData, false);\n }\n getInputOptional(index, keyType, keyData) {\n return get(this.inputMaps[index], keyType, keyData, true);\n }\n setOutput(index, keyType, keyData, value) {\n set(this.getMap(index, this.outputMaps), keyType, keyData, value);\n }\n getOutput(index, keyType, keyData) {\n return get(this.outputMaps[index], keyType, keyData, false);\n }\n getMap(index, maps) {\n if (maps[index]) {\n return maps[index];\n }\n return (maps[index] = new Map());\n }\n encodeBip32Derivation(masterFingerprint, path) {\n const buf = new BufferWriter();\n this.writeBip32Derivation(buf, masterFingerprint, path);\n return buf.buffer();\n }\n decodeBip32Derivation(buffer) {\n const buf = new BufferReader(buffer);\n return this.readBip32Derivation(buf);\n }\n writeBip32Derivation(buf, masterFingerprint, path) {\n buf.writeSlice(masterFingerprint);\n path.forEach(element => {\n buf.writeUInt32(element);\n });\n }\n readBip32Derivation(buf) {\n const masterFingerprint = buf.readSlice(4);\n const path = [];\n while (buf.offset < buf.buffer.length) {\n path.push(buf.readUInt32());\n }\n return { masterFingerprint, path };\n }\n encodeTapBip32Derivation(hashes, masterFingerprint, path) {\n const buf = new BufferWriter();\n buf.writeVarInt(hashes.length);\n hashes.forEach(h => {\n buf.writeSlice(h);\n });\n this.writeBip32Derivation(buf, masterFingerprint, path);\n return buf.buffer();\n }\n decodeTapBip32Derivation(buffer) {\n const buf = new BufferReader(buffer);\n const hashCount = buf.readVarInt();\n const hashes = [];\n for (let i = 0; i < hashCount; i++) {\n hashes.push(buf.readSlice(32));\n }\n const deriv = this.readBip32Derivation(buf);\n return Object.assign({ hashes }, deriv);\n }\n}\nfunction get(map, keyType, keyData, acceptUndefined) {\n if (!map)\n throw Error(\"No such map\");\n const key = new Key(keyType, keyData);\n const value = map.get(key.toString());\n if (!value) {\n if (acceptUndefined) {\n return undefined;\n }\n throw new NoSuchEntry(key.toString());\n }\n // Make sure to return a copy, to protect the underlying data.\n return Buffer.from(value);\n}\nclass Key {\n constructor(keyType, keyData) {\n this.keyType = keyType;\n this.keyData = keyData;\n }\n toString() {\n const buf = new BufferWriter();\n this.toBuffer(buf);\n return buf.buffer().toString(\"hex\");\n }\n serialize(buf) {\n buf.writeVarInt(1 + this.keyData.length);\n this.toBuffer(buf);\n }\n toBuffer(buf) {\n buf.writeUInt8(this.keyType);\n buf.writeSlice(this.keyData);\n }\n}\nclass KeyPair {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n }\n serialize(buf) {\n this.key.serialize(buf);\n buf.writeVarSlice(this.value);\n }\n}\nfunction createKey(buf) {\n return new Key(buf.readUInt8(0), buf.slice(1));\n}\nfunction serializeMap(buf, map) {\n for (const k of map.keys()) {\n const value = map.get(k);\n const keyPair = new KeyPair(createKey(Buffer.from(k, \"hex\")), value);\n keyPair.serialize(buf);\n }\n buf.writeUInt8(0);\n}\nfunction b() {\n return Buffer.from([]);\n}\nfunction set(map, keyType, keyData, value) {\n const key = new Key(keyType, keyData);\n map.set(key.toString(), value);\n}\nfunction uint32LE(n) {\n const b = Buffer.alloc(4);\n b.writeUInt32LE(n, 0);\n return b;\n}\nfunction uint64LE(n) {\n return unsafeTo64bitLE(n);\n}\nfunction varint(n) {\n const b = new BufferWriter();\n b.writeVarInt(n);\n return b.buffer();\n}\nfunction fromVarint(buf) {\n return new BufferReader(buf).readVarInt();\n}\n//# sourceMappingURL=psbtv2.js.map","import { BufferWriter } from \"../buffertools\";\nimport { psbtIn } from \"./psbtv2\";\n/**\n * This roughly implements the \"input finalizer\" role of BIP370 (PSBTv2\n * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However\n * the role is documented in BIP174 (PSBTv0\n * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).\n *\n * Verify that all inputs have a signature, and set inputFinalScriptwitness\n * and/or inputFinalScriptSig depending on the type of the spent outputs. Clean\n * fields that aren't useful anymore, partial signatures, redeem script and\n * derivation paths.\n *\n * @param psbt The psbt with all signatures added as partial sigs, either\n * through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG\n */\nexport function finalize(psbt) {\n // First check that each input has a signature\n const inputCount = psbt.getGlobalInputCount();\n for (let i = 0; i < inputCount; i++) {\n const legacyPubkeys = psbt.getInputKeyDatas(i, psbtIn.PARTIAL_SIG);\n const taprootSig = psbt.getInputTapKeySig(i);\n if (legacyPubkeys.length == 0 && !taprootSig) {\n throw Error(`No signature for input ${i} present`);\n }\n if (legacyPubkeys.length > 0) {\n if (legacyPubkeys.length > 1) {\n throw Error(`Expected exactly one signature, got ${legacyPubkeys.length}`);\n }\n if (taprootSig) {\n throw Error(\"Both taproot and non-taproot signatures present.\");\n }\n const isSegwitV0 = !!psbt.getInputWitnessUtxo(i);\n const redeemScript = psbt.getInputRedeemScript(i);\n const isWrappedSegwit = !!redeemScript;\n const signature = psbt.getInputPartialSig(i, legacyPubkeys[0]);\n if (!signature)\n throw new Error(\"Expected partial signature for input \" + i);\n if (isSegwitV0) {\n const witnessBuf = new BufferWriter();\n witnessBuf.writeVarInt(2);\n witnessBuf.writeVarInt(signature.length);\n witnessBuf.writeSlice(signature);\n witnessBuf.writeVarInt(legacyPubkeys[0].length);\n witnessBuf.writeSlice(legacyPubkeys[0]);\n psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());\n if (isWrappedSegwit) {\n if (!redeemScript || redeemScript.length == 0) {\n throw new Error(\"Expected non-empty redeemscript. Can't finalize intput \" + i);\n }\n const scriptSigBuf = new BufferWriter();\n // Push redeemScript length\n scriptSigBuf.writeUInt8(redeemScript.length);\n scriptSigBuf.writeSlice(redeemScript);\n psbt.setInputFinalScriptsig(i, scriptSigBuf.buffer());\n }\n }\n else {\n // Legacy input\n const scriptSig = new BufferWriter();\n writePush(scriptSig, signature);\n writePush(scriptSig, legacyPubkeys[0]);\n psbt.setInputFinalScriptsig(i, scriptSig.buffer());\n }\n }\n else {\n // Taproot input\n const signature = psbt.getInputTapKeySig(i);\n if (!signature) {\n throw Error(\"No taproot signature found\");\n }\n if (signature.length != 64 && signature.length != 65) {\n throw Error(\"Unexpected length of schnorr signature.\");\n }\n const witnessBuf = new BufferWriter();\n witnessBuf.writeVarInt(1);\n witnessBuf.writeVarSlice(signature);\n psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());\n }\n clearFinalizedInput(psbt, i);\n }\n}\n/**\n * Deletes fields that are no longer neccesary from the psbt.\n *\n * Note, the spec doesn't say anything about removing ouput fields\n * like PSBT_OUT_BIP32_DERIVATION_PATH and others, so we keep them\n * without actually knowing why. I think we should remove them too.\n */\nfunction clearFinalizedInput(psbt, inputIndex) {\n const keyTypes = [\n psbtIn.BIP32_DERIVATION,\n psbtIn.PARTIAL_SIG,\n psbtIn.TAP_BIP32_DERIVATION,\n psbtIn.TAP_KEY_SIG,\n ];\n const witnessUtxoAvailable = !!psbt.getInputWitnessUtxo(inputIndex);\n const nonWitnessUtxoAvailable = !!psbt.getInputNonWitnessUtxo(inputIndex);\n if (witnessUtxoAvailable && nonWitnessUtxoAvailable) {\n // Remove NON_WITNESS_UTXO for segwit v0 as it's only needed while signing.\n // Segwit v1 doesn't have NON_WITNESS_UTXO set.\n // See https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#cite_note-7\n keyTypes.push(psbtIn.NON_WITNESS_UTXO);\n }\n psbt.deleteInputEntries(inputIndex, keyTypes);\n}\n/**\n * Writes a script push operation to buf, which looks different\n * depending on the size of the data. See\n * https://en.bitcoin.it/wiki/Script#Constants\n *\n * @param buf the BufferWriter to write to\n * @param data the Buffer to be pushed.\n */\nfunction writePush(buf, data) {\n if (data.length <= 75) {\n buf.writeUInt8(data.length);\n }\n else if (data.length <= 256) {\n buf.writeUInt8(76);\n buf.writeUInt8(data.length);\n }\n else if (data.length <= 256 * 256) {\n buf.writeUInt8(77);\n const b = Buffer.alloc(2);\n b.writeUInt16LE(data.length, 0);\n buf.writeSlice(b);\n }\n buf.writeSlice(data);\n}\n//# sourceMappingURL=psbtFinalizer.js.map","export function getVarint(data, offset) {\n if (data[offset] < 0xfd) {\n return [data[offset], 1];\n }\n if (data[offset] === 0xfd) {\n return [(data[offset + 2] << 8) + data[offset + 1], 3];\n }\n if (data[offset] === 0xfe) {\n return [\n (data[offset + 4] << 24) +\n (data[offset + 3] << 16) +\n (data[offset + 2] << 8) +\n data[offset + 1],\n 5,\n ];\n }\n throw new Error(\"getVarint called with unexpected parameters\");\n}\nexport function createVarint(value) {\n if (value < 0xfd) {\n const buffer = Buffer.alloc(1);\n buffer[0] = value;\n return buffer;\n }\n if (value <= 0xffff) {\n const buffer = Buffer.alloc(3);\n buffer[0] = 0xfd;\n buffer[1] = value & 0xff;\n buffer[2] = (value >> 8) & 0xff;\n return buffer;\n }\n const buffer = Buffer.alloc(5);\n buffer[0] = 0xfe;\n buffer[1] = value & 0xff;\n buffer[2] = (value >> 8) & 0xff;\n buffer[3] = (value >> 16) & 0xff;\n buffer[4] = (value >> 24) & 0xff;\n return buffer;\n}\n//# sourceMappingURL=varint.js.map","import { createVarint } from \"./varint\";\n/**\n @example\nconst tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\nconst outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');\n */\nexport function serializeTransactionOutputs({ outputs }) {\n let outputBuffer = Buffer.alloc(0);\n if (typeof outputs !== \"undefined\") {\n outputBuffer = Buffer.concat([outputBuffer, createVarint(outputs.length)]);\n outputs.forEach(output => {\n outputBuffer = Buffer.concat([\n outputBuffer,\n output.amount,\n createVarint(output.script.length),\n output.script,\n ]);\n });\n }\n return outputBuffer;\n}\nexport function serializeTransaction(transaction, skipWitness, timestamp, additionals = []) {\n const isDecred = additionals.includes(\"decred\");\n const isZcash = additionals.includes(\"zcash\");\n const isBech32 = additionals.includes(\"bech32\");\n let inputBuffer = Buffer.alloc(0);\n const useWitness = typeof transaction[\"witness\"] != \"undefined\" && !skipWitness;\n transaction.inputs.forEach(input => {\n inputBuffer =\n isDecred || isBech32\n ? Buffer.concat([\n inputBuffer,\n input.prevout,\n Buffer.from([0x00]),\n input.sequence,\n ])\n : Buffer.concat([\n inputBuffer,\n input.prevout,\n createVarint(input.script.length),\n input.script,\n input.sequence,\n ]);\n });\n let outputBuffer = serializeTransactionOutputs(transaction);\n if (typeof transaction.outputs !== \"undefined\" && typeof transaction.locktime !== \"undefined\") {\n outputBuffer = Buffer.concat([\n outputBuffer,\n (useWitness && transaction.witness) || Buffer.alloc(0),\n transaction.locktime,\n transaction.nExpiryHeight || Buffer.alloc(0),\n transaction.extraData || Buffer.alloc(0),\n ]);\n }\n // from to https://zips.z.cash/zip-0225, zcash is different with other coins, the lock_time and nExpiryHeight fields are before the inputs and outputs\n if (isZcash) {\n return Buffer.concat([\n transaction.version,\n transaction.nVersionGroupId || Buffer.alloc(0),\n Buffer.from([0xb4, 0xd0, 0xd6, 0xc2]),\n transaction.locktime || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n transaction.nExpiryHeight || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n useWitness ? Buffer.from(\"0001\", \"hex\") : Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n inputBuffer,\n outputBuffer,\n ]);\n }\n return Buffer.concat([\n transaction.version,\n timestamp ? timestamp : Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n useWitness ? Buffer.from(\"0001\", \"hex\") : Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n inputBuffer,\n outputBuffer,\n ]);\n}\n//# sourceMappingURL=serializeTransaction.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { crypto } from \"bitcoinjs-lib\";\nimport { pointCompress } from \"tiny-secp256k1\";\nimport { getXpubComponents, hardenedPathOf, pathArrayToString, pathStringToArray, pubkeyFromXpub, } from \"./bip32\";\nimport { BufferReader } from \"./buffertools\";\nimport { p2pkh, p2tr, p2wpkh, p2wpkhWrapped, } from \"./newops/accounttype\";\nimport { createKey, WalletPolicy } from \"./newops/policy\";\nimport { extract } from \"./newops/psbtExtractor\";\nimport { finalize } from \"./newops/psbtFinalizer\";\nimport { psbtIn, PsbtV2 } from \"./newops/psbtv2\";\nimport { serializeTransaction } from \"./serializeTransaction\";\n/**\n * This class implements the same interface as BtcOld (formerly\n * named Btc), but interacts with Bitcoin hardware app version 2+\n * which uses a totally new APDU protocol. This new\n * protocol is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md\n *\n * Since the interface must remain compatible with BtcOld, the methods\n * of this class are quite clunky, because it needs to adapt legacy\n * input data into the PSBT process. In the future, a new interface should\n * be developed that exposes PSBT to the outer world, which would render\n * a much cleaner implementation.\n */\nexport default class BtcNew {\n constructor(client) {\n this.client = client;\n }\n /**\n * This is a new method that allow users to get an xpub at a standard path.\n * Standard paths are described at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#description\n *\n * This boils down to paths (N=0 for Bitcoin, N=1 for Testnet):\n * M/44'/N'/x'/**\n * M/48'/N'/x'/y'/**\n * M/49'/N'/x'/**\n * M/84'/N'/x'/**\n * M/86'/N'/x'/**\n *\n * The method was added because of added security in the hardware app v2+. The\n * new hardware app will allow export of any xpub up to and including the\n * deepest hardened key of standard derivation paths, whereas the old app\n * would allow export of any key.\n *\n * This caused an issue for callers of this class, who only had\n * getWalletPublicKey() to call which means they have to constuct xpub\n * themselves:\n *\n * Suppose a user of this class wants to create an account xpub on a standard\n * path, M/44'/0'/Z'. The user must get the parent key fingerprint (see BIP32)\n * by requesting the parent key M/44'/0'. The new app won't allow that, because\n * it only allows exporting deepest level hardened path. So the options are to\n * allow requesting M/44'/0' from the app, or to add a new function\n * \"getWalletXpub\".\n *\n * We opted for adding a new function, which can greatly simplify client code.\n */\n getWalletXpub({ path, xpubVersion, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const pathElements = pathStringToArray(path);\n const xpub = yield this.client.getExtendedPubkey(false, pathElements);\n const xpubComponents = getXpubComponents(xpub);\n if (xpubComponents.version != xpubVersion) {\n throw new Error(`Expected xpub version ${xpubVersion} doesn't match the xpub version from the device ${xpubComponents.version}`);\n }\n return xpub;\n });\n }\n /**\n * This method returns a public key, a bitcoin address, and and a chaincode\n * for a specific derivation path.\n *\n * Limitation: If the path is not a leaf node of a standard path, the address\n * will be the empty string \"\", see this.getWalletAddress() for details.\n */\n getWalletPublicKey(path, opts) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (!isPathNormal(path)) {\n throw Error(`non-standard path: ${path}`);\n }\n const pathElements = pathStringToArray(path);\n const xpub = yield this.client.getExtendedPubkey(false, pathElements);\n const display = (_a = opts === null || opts === void 0 ? void 0 : opts.verify) !== null && _a !== void 0 ? _a : false;\n const address = yield this.getWalletAddress(pathElements, descrTemplFrom((_b = opts === null || opts === void 0 ? void 0 : opts.format) !== null && _b !== void 0 ? _b : \"legacy\"), display);\n const components = getXpubComponents(xpub);\n const uncompressedPubkey = Buffer.from(pointCompress(components.pubkey, false));\n return {\n publicKey: uncompressedPubkey.toString(\"hex\"),\n bitcoinAddress: address,\n chainCode: components.chaincode.toString(\"hex\"),\n };\n });\n }\n /**\n * Get an address for the specified path.\n *\n * If display is true, we must get the address from the device, which would require\n * us to determine WalletPolicy. This requires two *extra* queries to the device, one\n * for the account xpub and one for master key fingerprint.\n *\n * If display is false we *could* generate the address ourselves, but chose to\n * get it from the device to save development time. However, it shouldn't take\n * too much time to implement local address generation.\n *\n * Moreover, if the path is not for a leaf, ie accountPath+/X/Y, there is no\n * way to get the address from the device. In this case we have to create it\n * ourselves, but we don't at this time, and instead return an empty (\"\") address.\n */\n getWalletAddress(pathElements, descrTempl, display) {\n return __awaiter(this, void 0, void 0, function* () {\n const accountPath = hardenedPathOf(pathElements);\n if (accountPath.length + 2 != pathElements.length) {\n return \"\";\n }\n const accountXpub = yield this.client.getExtendedPubkey(false, accountPath);\n const masterFingerprint = yield this.client.getMasterFingerprint();\n const policy = new WalletPolicy(descrTempl, createKey(masterFingerprint, accountPath, accountXpub));\n const changeAndIndex = pathElements.slice(-2, pathElements.length);\n return this.client.getWalletAddress(policy, Buffer.alloc(32, 0), changeAndIndex[0], changeAndIndex[1], display);\n });\n }\n /**\n * Build and sign a transaction. See Btc.createPaymentTransaction for\n * details on how to use this method.\n *\n * This method will convert the legacy arguments, CreateTransactionArg, into\n * a psbt which is finally signed and finalized, and the extracted fully signed\n * transaction is returned.\n */\n createPaymentTransaction(arg) {\n return __awaiter(this, void 0, void 0, function* () {\n const inputCount = arg.inputs.length;\n if (inputCount == 0) {\n throw Error(\"No inputs\");\n }\n const psbt = new PsbtV2();\n // The master fingerprint is needed when adding BIP32 derivation paths on\n // the psbt.\n const masterFp = yield this.client.getMasterFingerprint();\n const accountType = accountTypeFromArg(arg, psbt, masterFp);\n if (arg.lockTime != undefined) {\n // The signer will assume locktime 0 if unset\n psbt.setGlobalFallbackLocktime(arg.lockTime);\n }\n psbt.setGlobalInputCount(inputCount);\n psbt.setGlobalPsbtVersion(2);\n psbt.setGlobalTxVersion(2);\n let notifyCount = 0;\n const progress = () => {\n if (!arg.onDeviceStreaming)\n return;\n arg.onDeviceStreaming({\n total: 2 * inputCount,\n index: notifyCount,\n progress: ++notifyCount / (2 * inputCount),\n });\n };\n let accountXpub = \"\";\n let accountPath = [];\n for (let i = 0; i < inputCount; i++) {\n progress();\n const pathElems = pathStringToArray(arg.associatedKeysets[i]);\n if (accountXpub == \"\") {\n // We assume all inputs belong to the same account so we set\n // the account xpub and path based on the first input.\n accountPath = pathElems.slice(0, -2);\n accountXpub = yield this.client.getExtendedPubkey(false, accountPath);\n }\n yield this.setInput(psbt, i, arg.inputs[i], pathElems, accountType, masterFp, arg.sigHashType);\n }\n const outputsConcat = Buffer.from(arg.outputScriptHex, \"hex\");\n const outputsBufferReader = new BufferReader(outputsConcat);\n const outputCount = outputsBufferReader.readVarInt();\n psbt.setGlobalOutputCount(outputCount);\n const changeData = yield this.outputScriptAt(accountPath, accountType, arg.changePath);\n // If the caller supplied a changePath, we must make sure there actually is\n // a change output. If no change output found, we'll throw an error.\n let changeFound = !changeData;\n for (let i = 0; i < outputCount; i++) {\n const amount = Number(outputsBufferReader.readUInt64());\n const outputScript = outputsBufferReader.readVarSlice();\n psbt.setOutputAmount(i, amount);\n psbt.setOutputScript(i, outputScript);\n // We won't know if we're paying to ourselves, because there's no\n // information in arg to support multiple \"change paths\". One exception is\n // if there are multiple outputs to the change address.\n const isChange = changeData && outputScript.equals(changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey);\n if (isChange) {\n changeFound = true;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const changePath = pathStringToArray(arg.changePath);\n const pubkey = changeData.pubkey;\n accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);\n }\n }\n if (!changeFound) {\n throw new Error(\"Change script not found among outputs! \" + (changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey.toString(\"hex\")));\n }\n const key = createKey(masterFp, accountPath, accountXpub);\n const p = new WalletPolicy(accountType.getDescriptorTemplate(), key);\n // This is cheating, because it's not actually requested on the\n // device yet, but it will be, soonish.\n if (arg.onDeviceSignatureRequested)\n arg.onDeviceSignatureRequested();\n let firstSigned = false;\n // This callback will be called once for each signature yielded.\n const progressCallback = () => {\n if (!firstSigned) {\n firstSigned = true;\n arg.onDeviceSignatureGranted && arg.onDeviceSignatureGranted();\n }\n progress();\n };\n yield this.signPsbt(psbt, p, progressCallback);\n finalize(psbt);\n const serializedTx = extract(psbt);\n return serializedTx.toString(\"hex\");\n });\n }\n /**\n * Signs an arbitrary hex-formatted message with the private key at\n * the provided derivation path according to the Bitcoin Signature format\n * and returns v, r, s.\n */\n signMessage({ path, messageHex }) {\n return __awaiter(this, void 0, void 0, function* () {\n const pathElements = pathStringToArray(path);\n const message = Buffer.from(messageHex, \"hex\");\n const sig = yield this.client.signMessage(message, pathElements);\n const buf = Buffer.from(sig, \"base64\");\n const v = buf.readUInt8() - 27 - 4;\n const r = buf.slice(1, 33).toString(\"hex\");\n const s = buf.slice(33, 65).toString(\"hex\");\n return {\n v,\n r,\n s,\n };\n });\n }\n /**\n * Calculates an output script along with public key and possible redeemScript\n * from a path and accountType. The accountPath must be a prefix of path.\n *\n * @returns an object with output script (property \"script\"), redeemScript (if\n * wrapped p2wpkh), and pubkey at provided path. The values of these three\n * properties depend on the accountType used.\n */\n outputScriptAt(accountPath, accountType, path) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!path)\n return undefined;\n const pathElems = pathStringToArray(path);\n // Make sure path is in our account, otherwise something fishy is probably\n // going on.\n for (let i = 0; i < accountPath.length; i++) {\n if (accountPath[i] != pathElems[i]) {\n throw new Error(`Path ${path} not in account ${pathArrayToString(accountPath)}`);\n }\n }\n const xpub = yield this.client.getExtendedPubkey(false, pathElems);\n const pubkey = pubkeyFromXpub(xpub);\n const cond = accountType.spendingCondition([pubkey]);\n return { cond, pubkey };\n });\n }\n /**\n * Adds relevant data about an input to the psbt. This includes sequence,\n * previous txid, output index, spent UTXO, redeem script for wrapped p2wpkh,\n * public key and its derivation path.\n */\n setInput(psbt, i, input, pathElements, accountType, masterFP, sigHashType) {\n return __awaiter(this, void 0, void 0, function* () {\n const inputTx = input[0];\n const spentOutputIndex = input[1];\n // redeemScript will be null for wrapped p2wpkh, we need to create it\n // ourselves. But if set, it should be used.\n const redeemScript = input[2] ? Buffer.from(input[2], \"hex\") : undefined;\n const sequence = input[3];\n if (sequence != undefined) {\n psbt.setInputSequence(i, sequence);\n }\n if (sigHashType != undefined) {\n psbt.setInputSighashType(i, sigHashType);\n }\n const inputTxBuffer = serializeTransaction(inputTx, true);\n const inputTxid = crypto.hash256(inputTxBuffer);\n const xpubBase58 = yield this.client.getExtendedPubkey(false, pathElements);\n const pubkey = pubkeyFromXpub(xpubBase58);\n if (!inputTx.outputs)\n throw Error(\"Missing outputs array in transaction to sign\");\n const spentTxOutput = inputTx.outputs[spentOutputIndex];\n const spendCondition = {\n scriptPubKey: spentTxOutput.script,\n redeemScript: redeemScript,\n };\n const spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };\n accountType.setInput(i, inputTxBuffer, spentOutput, [pubkey], [pathElements]);\n psbt.setInputPreviousTxId(i, inputTxid);\n psbt.setInputOutputIndex(i, spentOutputIndex);\n });\n }\n /**\n * This implements the \"Signer\" role of the BIP370 transaction signing\n * process.\n *\n * It ssks the hardware device to sign the a psbt using the specified wallet\n * policy. This method assumes BIP32 derived keys are used for all inputs, see\n * comment in-line. The signatures returned from the hardware device is added\n * to the appropriate input fields of the PSBT.\n */\n signPsbt(psbt, walletPolicy, progressCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const sigs = yield this.client.signPsbt(psbt, walletPolicy, Buffer.alloc(32, 0), progressCallback);\n sigs.forEach((v, k) => {\n // Note: Looking at BIP32 derivation does not work in the generic case,\n // since some inputs might not have a BIP32-derived pubkey.\n const pubkeys = psbt.getInputKeyDatas(k, psbtIn.BIP32_DERIVATION);\n let pubkey;\n if (pubkeys.length != 1) {\n // No legacy BIP32_DERIVATION, assume we're using taproot.\n pubkey = psbt.getInputKeyDatas(k, psbtIn.TAP_BIP32_DERIVATION);\n if (pubkey.length == 0) {\n throw Error(`Missing pubkey derivation for input ${k}`);\n }\n psbt.setInputTapKeySig(k, v);\n }\n else {\n pubkey = pubkeys[0];\n psbt.setInputPartialSig(k, pubkey, v);\n }\n });\n });\n }\n}\nfunction descrTemplFrom(addressFormat) {\n if (addressFormat == \"legacy\")\n return \"pkh(@0)\";\n if (addressFormat == \"p2sh\")\n return \"sh(wpkh(@0))\";\n if (addressFormat == \"bech32\")\n return \"wpkh(@0)\";\n if (addressFormat == \"bech32m\")\n return \"tr(@0)\";\n throw new Error(\"Unsupported address format \" + addressFormat);\n}\nfunction accountTypeFromArg(arg, psbt, masterFp) {\n if (arg.additionals.includes(\"bech32m\"))\n return new p2tr(psbt, masterFp);\n if (arg.additionals.includes(\"bech32\"))\n return new p2wpkh(psbt, masterFp);\n if (arg.segwit)\n return new p2wpkhWrapped(psbt, masterFp);\n return new p2pkh(psbt, masterFp);\n}\n/*\n The new protocol only allows standard path.\n Standard paths are (currently):\n M/44'/(1|0)'/X'\n M/49'/(1|0)'/X'\n M/84'/(1|0)'/X'\n M/86'/(1|0)'/X'\n M/48'/(1|0)'/X'/Y'\n followed by \"\", \"(0|1)\", or \"(0|1)/b\", where a and b are\n non-hardened. For example, the following paths are standard\n M/48'/1'/99'/7'\n M/86'/1'/99'/0\n M/48'/0'/99'/7'/1/17\n The following paths are non-standard\n M/48'/0'/99' // Not deepest hardened path\n M/48'/0'/99'/7'/1/17/2 // Too many non-hardened derivation steps\n M/199'/0'/1'/0/88 // Not a known purpose 199\n M/86'/1'/99'/2 // Change path item must be 0 or 1\n*/\nfunction isPathNormal(path) {\n //path is not deepest hardened node of a standard path or deeper, use BtcOld\n const h = 0x80000000; //HARDENED from bip32\n const pathElems = pathStringToArray(path);\n const hard = (n) => n >= h;\n const soft = (n) => n === undefined || n < h;\n const change = (n) => n === undefined || n === 0 || n === 1;\n if (pathElems.length >= 3 &&\n pathElems.length <= 5 &&\n [44 + h, 49 + h, 84 + h, 86 + h].some(v => v == pathElems[0]) &&\n [0 + h, 1 + h].some(v => v == pathElems[1]) &&\n hard(pathElems[2]) &&\n change(pathElems[3]) &&\n soft(pathElems[4])) {\n return true;\n }\n if (pathElems.length >= 4 &&\n pathElems.length <= 6 &&\n 48 + h == pathElems[0] &&\n [0 + h, 1 + h].some(v => v == pathElems[1]) &&\n hard(pathElems[2]) &&\n hard(pathElems[3]) &&\n change(pathElems[4]) &&\n soft(pathElems[5])) {\n return true;\n }\n return false;\n}\n//# sourceMappingURL=BtcNew.js.map","let id = 0;\nconst subscribers = [];\n/**\n * Logs something\n *\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nexport const log = (type, message, data) => {\n const obj = {\n type,\n id: String(++id),\n date: new Date(),\n };\n if (message)\n obj.message = message;\n if (data)\n obj.data = data;\n dispatch(obj);\n};\n/**\n * A simple tracer function, only expanding the existing log function\n *\n * Its goal is to capture more context than a log function.\n * This is simple for now, but can be improved later.\n *\n * @param context Anything representing the context where the log occurred\n */\nexport const trace = ({ type, message, data, context, }) => {\n const obj = {\n type,\n id: String(++id),\n date: new Date(),\n };\n if (message)\n obj.message = message;\n if (data)\n obj.data = data;\n if (context)\n obj.context = context;\n dispatch(obj);\n};\n/**\n * A simple tracer class, that can be used to avoid repetition when using the `trace` function\n *\n * Its goal is to capture more context than a log function.\n * This is simple for now, but can be improved later.\n *\n * @param type A given type (not level) for the current local tracer (\"hw\", \"withDevice\", etc.)\n * @param context Anything representing the context where the log occurred\n */\nexport class LocalTracer {\n constructor(type, context) {\n this.type = type;\n this.context = context;\n }\n trace(message, data) {\n trace({\n type: this.type,\n message,\n data,\n context: this.context,\n });\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n }\n updateContext(contextToAdd) {\n this.context = Object.assign(Object.assign({}, this.context), contextToAdd);\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = type;\n }\n /**\n * Create a new instance of the LocalTracer with an updated `type`\n *\n * It does not mutate the calling instance, but returns a new LocalTracer,\n * following a simple builder pattern.\n */\n withType(type) {\n return new LocalTracer(type, this.context);\n }\n /**\n * Create a new instance of the LocalTracer with a new `context`\n *\n * It does not mutate the calling instance, but returns a new LocalTracer,\n * following a simple builder pattern.\n *\n * @param context A TraceContext, that can undefined to reset the context\n */\n withContext(context) {\n return new LocalTracer(this.type, context);\n }\n /**\n * Create a new instance of the LocalTracer with an updated `context`,\n * on which an additional context is merged with the existing one.\n *\n * It does not mutate the calling instance, but returns a new LocalTracer,\n * following a simple builder pattern.\n */\n withUpdatedContext(contextToAdd) {\n return new LocalTracer(this.type, Object.assign(Object.assign({}, this.context), contextToAdd));\n }\n}\n/**\n * Adds a subscribers to the emitted logs.\n *\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nexport const listen = (cb) => {\n subscribers.push(cb);\n return () => {\n const i = subscribers.indexOf(cb);\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\nfunction dispatch(log) {\n for (let i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n }\n catch (e) {\n console.error(e);\n }\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { bip32asBuffer } from \"./bip32\";\nconst addressFormatMap = {\n legacy: 0,\n p2sh: 1,\n bech32: 2,\n cashaddr: 3,\n};\nexport function getWalletPublicKey(transport, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const { path, verify, format } = Object.assign({ verify: false, format: \"legacy\" }, options);\n if (!(format in addressFormatMap)) {\n throw new Error(\"btc.getWalletPublicKey invalid format=\" + format);\n }\n const buffer = bip32asBuffer(path);\n const p1 = verify ? 1 : 0;\n const p2 = addressFormatMap[format];\n const response = yield transport.send(0xe0, 0x40, p1, p2, buffer);\n const publicKeyLength = response[0];\n const addressLength = response[1 + publicKeyLength];\n const publicKey = response.slice(1, 1 + publicKeyLength).toString(\"hex\");\n const bitcoinAddress = response\n .slice(1 + publicKeyLength + 1, 1 + publicKeyLength + 1 + addressLength)\n .toString(\"ascii\");\n const chainCode = response\n .slice(1 + publicKeyLength + 1 + addressLength, 1 + publicKeyLength + 1 + addressLength + 32)\n .toString(\"hex\");\n return {\n publicKey,\n bitcoinAddress,\n chainCode,\n };\n });\n}\n//# sourceMappingURL=getWalletPublicKey.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport invariant from \"invariant\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nimport { createVarint } from \"./varint\";\nexport function getTrustedInputRaw(transport, transactionData, indexLookup) {\n return __awaiter(this, void 0, void 0, function* () {\n let data;\n let firstRound = false;\n if (typeof indexLookup === \"number\") {\n firstRound = true;\n const prefix = Buffer.alloc(4);\n prefix.writeUInt32BE(indexLookup, 0);\n data = Buffer.concat([prefix, transactionData], transactionData.length + 4);\n }\n else {\n data = transactionData;\n }\n const trustedInput = yield transport.send(0xe0, 0x42, firstRound ? 0x00 : 0x80, 0x00, data);\n const res = trustedInput.slice(0, trustedInput.length - 2).toString(\"hex\");\n return res;\n });\n}\nexport function getTrustedInput(transport, indexLookup, transaction, additionals = []) {\n return __awaiter(this, void 0, void 0, function* () {\n const { version, inputs, outputs, locktime, nExpiryHeight, extraData } = transaction;\n if (!outputs || !locktime) {\n throw new Error(\"getTrustedInput: locktime & outputs is expected\");\n }\n const isDecred = additionals.includes(\"decred\");\n const isXST = additionals.includes(\"stealthcoin\");\n const processScriptBlocks = (script, sequence) => __awaiter(this, void 0, void 0, function* () {\n const seq = sequence || Buffer.alloc(0);\n const scriptBlocks = [];\n let offset = 0;\n while (offset !== script.length) {\n const blockSize = script.length - offset > MAX_SCRIPT_BLOCK ? MAX_SCRIPT_BLOCK : script.length - offset;\n if (offset + blockSize !== script.length) {\n scriptBlocks.push(script.slice(offset, offset + blockSize));\n }\n else {\n scriptBlocks.push(Buffer.concat([script.slice(offset, offset + blockSize), seq]));\n }\n offset += blockSize;\n }\n // Handle case when no script length: we still want to pass the sequence\n // relatable: https://github.com/LedgerHQ/ledger-live-desktop/issues/1386\n if (script.length === 0) {\n scriptBlocks.push(seq);\n }\n let res;\n for (const scriptBlock of scriptBlocks) {\n res = yield getTrustedInputRaw(transport, scriptBlock);\n }\n return res;\n });\n const processWholeScriptBlock = block => getTrustedInputRaw(transport, block);\n yield getTrustedInputRaw(transport, Buffer.concat([\n transaction.version,\n transaction.timestamp || Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n createVarint(inputs.length),\n ]), indexLookup);\n for (const input of inputs) {\n const isXSTV2 = isXST && Buffer.compare(version, Buffer.from([0x02, 0x00, 0x00, 0x00])) === 0;\n const treeField = isDecred ? input.tree || Buffer.from([0x00]) : Buffer.alloc(0);\n const data = Buffer.concat([\n input.prevout,\n treeField,\n isXSTV2 ? Buffer.from([0x00]) : createVarint(input.script.length),\n ]);\n yield getTrustedInputRaw(transport, data);\n // iteration (eachSeries) ended\n // TODO notify progress\n // deferred.notify(\"input\");\n // Reference: https://github.com/StealthSend/Stealth/commit/5be35d6c2c500b32ed82e5d6913d66d18a4b0a7f#diff-e8db9b851adc2422aadfffca88f14c91R566\n yield (isDecred\n ? processWholeScriptBlock(Buffer.concat([input.script, input.sequence]))\n : isXSTV2\n ? processWholeScriptBlock(input.sequence)\n : processScriptBlocks(input.script, input.sequence));\n }\n yield getTrustedInputRaw(transport, createVarint(outputs.length));\n for (const output of outputs) {\n const data = Buffer.concat([\n output.amount,\n isDecred ? Buffer.from([0x00, 0x00]) : Buffer.alloc(0),\n createVarint(output.script.length),\n output.script,\n ]);\n yield getTrustedInputRaw(transport, data);\n }\n const endData = [];\n if (nExpiryHeight && nExpiryHeight.length > 0) {\n endData.push(nExpiryHeight);\n }\n if (extraData && extraData.length > 0) {\n endData.push(extraData);\n }\n let extraPart;\n if (endData.length) {\n const data = Buffer.concat(endData);\n extraPart = isDecred ? data : Buffer.concat([createVarint(data.length), data]);\n }\n const res = yield processScriptBlocks(Buffer.concat([locktime, extraPart || Buffer.alloc(0)]));\n invariant(res, \"missing result in processScriptBlocks\");\n return res;\n });\n}\n//# sourceMappingURL=getTrustedInput.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createVarint } from \"./varint\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function startUntrustedHashTransactionInputRaw(transport, newTransaction, firstRound, transactionData, bip143 = false, overwinter = false, additionals = []) {\n const p2 = additionals.includes(\"cashaddr\")\n ? 0x03\n : bip143\n ? additionals.includes(\"sapling\")\n ? 0x05\n : overwinter\n ? 0x04\n : 0x02\n : 0x00;\n return transport.send(0xe0, 0x44, firstRound ? 0x00 : 0x80, newTransaction ? p2 : 0x80, transactionData);\n}\nexport function startUntrustedHashTransactionInput(transport, newTransaction, transaction, inputs, bip143 = false, overwinter = false, additionals = [], useTrustedInputForSegwit = false) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = Buffer.concat([\n transaction.version,\n transaction.timestamp || Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n ]);\n yield startUntrustedHashTransactionInputRaw(transport, newTransaction, true, data, bip143, overwinter, additionals);\n let i = 0;\n const isDecred = additionals.includes(\"decred\");\n for (const input of transaction.inputs) {\n let prefix;\n const inputValue = inputs[i].value;\n if (bip143) {\n if (useTrustedInputForSegwit && inputs[i].trustedInput) {\n prefix = Buffer.from([0x01, inputValue.length]);\n }\n else {\n prefix = Buffer.from([0x02]);\n }\n }\n else {\n if (inputs[i].trustedInput) {\n prefix = Buffer.from([0x01, inputs[i].value.length]);\n }\n else {\n prefix = Buffer.from([0x00]);\n }\n }\n data = Buffer.concat([\n prefix,\n inputValue,\n isDecred ? Buffer.from([0x00]) : Buffer.alloc(0),\n createVarint(input.script.length),\n ]);\n yield startUntrustedHashTransactionInputRaw(transport, newTransaction, false, data, bip143, overwinter, additionals);\n const scriptBlocks = [];\n let offset = 0;\n if (input.script.length === 0) {\n scriptBlocks.push(input.sequence);\n }\n else {\n while (offset !== input.script.length) {\n const blockSize = input.script.length - offset > MAX_SCRIPT_BLOCK\n ? MAX_SCRIPT_BLOCK\n : input.script.length - offset;\n if (offset + blockSize !== input.script.length) {\n scriptBlocks.push(input.script.slice(offset, offset + blockSize));\n }\n else {\n scriptBlocks.push(Buffer.concat([input.script.slice(offset, offset + blockSize), input.sequence]));\n }\n offset += blockSize;\n }\n }\n for (const scriptBlock of scriptBlocks) {\n yield startUntrustedHashTransactionInputRaw(transport, newTransaction, false, scriptBlock, bip143, overwinter, additionals);\n }\n i++;\n }\n });\n}\n//# sourceMappingURL=startUntrustedHashTransactionInput.js.map","import shajs from \"sha.js\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nexport function getTrustedInputBIP143(transport, indexLookup, transaction, additionals = []) {\n if (!transaction) {\n throw new Error(\"getTrustedInputBIP143: missing tx\");\n }\n const isDecred = additionals.includes(\"decred\");\n if (isDecred) {\n throw new Error(\"Decred does not implement BIP143\");\n }\n let hash = shajs(\"sha256\")\n .update(shajs(\"sha256\").update(serializeTransaction(transaction, true)).digest())\n .digest();\n const data = Buffer.alloc(4);\n data.writeUInt32LE(indexLookup, 0);\n const { outputs, locktime } = transaction;\n if (!outputs || !locktime) {\n throw new Error(\"getTrustedInputBIP143: locktime & outputs is expected\");\n }\n if (!outputs[indexLookup]) {\n throw new Error(\"getTrustedInputBIP143: wrong index\");\n }\n hash = Buffer.concat([hash, data, outputs[indexLookup].amount]);\n return hash.toString(\"hex\");\n}\n//# sourceMappingURL=getTrustedInputBIP143.js.map","export function compressPublicKey(publicKey) {\n const prefix = (publicKey[64] & 1) !== 0 ? 0x03 : 0x02;\n const prefixBuffer = Buffer.alloc(1);\n prefixBuffer[0] = prefix;\n return Buffer.concat([prefixBuffer, publicKey.slice(1, 1 + 32)]);\n}\n//# sourceMappingURL=compressPublicKey.js.map","import { bip32asBuffer } from \"./bip32\";\nexport function signTransaction(transport, path, lockTime, sigHashType, expiryHeight, additionals = []) {\n const isDecred = additionals.includes(\"decred\");\n const pathsBuffer = bip32asBuffer(path);\n const lockTimeBuffer = Buffer.alloc(4);\n lockTimeBuffer.writeUInt32BE(lockTime, 0);\n let buffer = isDecred\n ? Buffer.concat([\n pathsBuffer,\n lockTimeBuffer,\n expiryHeight || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n Buffer.from([sigHashType]),\n ])\n : Buffer.concat([pathsBuffer, Buffer.from([0x00]), lockTimeBuffer, Buffer.from([sigHashType])]);\n if (expiryHeight && !isDecred) {\n buffer = Buffer.concat([buffer, expiryHeight]);\n }\n return transport.send(0xe0, 0x48, 0x00, 0x00, buffer).then(result => {\n if (result.length > 0) {\n result[0] = 0x30;\n return result.slice(0, result.length - 2);\n }\n return result;\n });\n}\n//# sourceMappingURL=signTransaction.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { bip32asBuffer } from \"./bip32\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function provideOutputFullChangePath(transport, path) {\n const buffer = bip32asBuffer(path);\n return transport.send(0xe0, 0x4a, 0xff, 0x00, buffer);\n}\nexport function hashOutputFull(transport, outputScript, additionals = []) {\n return __awaiter(this, void 0, void 0, function* () {\n let offset = 0;\n const p1 = Number(0x80);\n const isDecred = additionals.includes(\"decred\");\n ///WARNING: Decred works only with one call (without chunking)\n //TODO: test without this for Decred\n if (isDecred) {\n return transport.send(0xe0, 0x4a, p1, 0x00, outputScript);\n }\n while (offset < outputScript.length) {\n const blockSize = offset + MAX_SCRIPT_BLOCK >= outputScript.length\n ? outputScript.length - offset\n : MAX_SCRIPT_BLOCK;\n const p1 = offset + blockSize === outputScript.length ? 0x80 : 0x00;\n const data = outputScript.slice(offset, offset + blockSize);\n yield transport.send(0xe0, 0x4a, p1, 0x00, data);\n offset += blockSize;\n }\n });\n}\n//# sourceMappingURL=finalizeInput.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport invariant from \"invariant\";\nexport const getAppAndVersion = (transport) => __awaiter(void 0, void 0, void 0, function* () {\n const r = yield transport.send(0xb0, 0x01, 0x00, 0x00);\n let i = 0;\n const format = r[i++];\n invariant(format === 1, \"getAppAndVersion: format not supported\");\n const nameLength = r[i++];\n const name = r.slice(i, (i += nameLength)).toString(\"ascii\");\n const versionLength = r[i++];\n const version = r.slice(i, (i += versionLength)).toString(\"ascii\");\n const flagLength = r[i++];\n const flags = r.slice(i, (i += flagLength));\n return {\n name,\n version,\n flags,\n };\n});\nexport const checkIsBtcLegacy = (transport) => __awaiter(void 0, void 0, void 0, function* () {\n try {\n // Call old btc API, it will throw an exception with new btc app. It is a workaround to differentiate new/old btc nano app\n yield transport.send(0xe0, 0xc4, 0, 0);\n }\n catch (e) {\n return false;\n }\n return true;\n});\n//# sourceMappingURL=getAppAndVersion.js.map","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${require('util').inspect(version)}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // at this point we know stable versions match but overall versions are not equal,\n // so either they are both prereleases, or the lower version is a prerelease\n\n if (highHasPre) {\n // high and low are preleases\n return 'prerelease'\n }\n\n if (lowVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (lowVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\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'\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 = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[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'\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","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","import semver from \"semver\";\nexport function shouldUseTrustedInputForSegwit({ version, name, }) {\n if (name === \"Decred\")\n return false;\n if (name === \"Exchange\")\n return true;\n return semver.gte(version, \"1.4.0\");\n}\n//# sourceMappingURL=shouldUseTrustedInputForSegwit.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { log } from \"@ledgerhq/logs\";\nimport { hashPublicKey } from \"./hashPublicKey\";\nimport { getWalletPublicKey } from \"./getWalletPublicKey\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { startUntrustedHashTransactionInput } from \"./startUntrustedHashTransactionInput\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { compressPublicKey } from \"./compressPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { hashOutputFull, provideOutputFullChangePath } from \"./finalizeInput\";\nimport { getAppAndVersion } from \"./getAppAndVersion\";\nimport { DEFAULT_LOCKTIME, DEFAULT_SEQUENCE, SIGHASH_ALL, OP_DUP, OP_HASH160, HASH_SIZE, OP_EQUALVERIFY, OP_CHECKSIG, } from \"./constants\";\nimport { shouldUseTrustedInputForSegwit } from \"./shouldUseTrustedInputForSegwit\";\nconst defaultsSignTransaction = {\n lockTime: DEFAULT_LOCKTIME,\n sigHashType: SIGHASH_ALL,\n segwit: false,\n additionals: [],\n onDeviceStreaming: _e => { },\n onDeviceSignatureGranted: () => { },\n onDeviceSignatureRequested: () => { },\n};\nexport function createTransaction(transport, arg) {\n return __awaiter(this, void 0, void 0, function* () {\n const signTx = Object.assign(Object.assign({}, defaultsSignTransaction), arg);\n const { inputs, associatedKeysets, changePath, outputScriptHex, lockTime, sigHashType, segwit, initialTimestamp, additionals, expiryHeight, onDeviceStreaming, onDeviceSignatureGranted, onDeviceSignatureRequested, } = signTx;\n let useTrustedInputForSegwit = signTx.useTrustedInputForSegwit;\n if (useTrustedInputForSegwit === undefined) {\n try {\n const a = yield getAppAndVersion(transport);\n useTrustedInputForSegwit = shouldUseTrustedInputForSegwit(a);\n }\n catch (e) {\n if (e.statusCode === 0x6d00) {\n useTrustedInputForSegwit = false;\n }\n else {\n throw e;\n }\n }\n }\n // loop: 0 or 1 (before and after)\n // i: index of the input being streamed\n // i goes on 0...n, inluding n. in order for the progress value to go to 1\n // we normalize the 2 loops to make a global percentage\n const notify = (loop, i) => {\n const { length } = inputs;\n if (length < 3)\n return; // there is not enough significant event to worth notifying (aka just use a spinner)\n const index = length * loop + i;\n const total = 2 * length;\n const progress = index / total;\n onDeviceStreaming({\n progress,\n total,\n index,\n });\n };\n const isDecred = additionals.includes(\"decred\");\n const isZcash = additionals.includes(\"zcash\");\n const isXST = additionals.includes(\"stealthcoin\");\n const startTime = Date.now();\n const sapling = additionals.includes(\"sapling\");\n const bech32 = segwit && additionals.includes(\"bech32\");\n const useBip143 = segwit ||\n (!!additionals &&\n (additionals.includes(\"abc\") ||\n additionals.includes(\"gold\") ||\n additionals.includes(\"bip143\"))) ||\n (!!expiryHeight && !isDecred);\n // Inputs are provided as arrays of [transaction, output_index, optional redeem script, optional sequence]\n // associatedKeysets are provided as arrays of [path]\n const lockTimeBuffer = Buffer.alloc(4);\n lockTimeBuffer.writeUInt32LE(lockTime, 0);\n const nullScript = Buffer.alloc(0);\n const nullPrevout = Buffer.alloc(0);\n const defaultVersion = Buffer.alloc(4);\n !!expiryHeight && !isDecred\n ? defaultVersion.writeUInt32LE(isZcash ? 0x80000005 : sapling ? 0x80000004 : 0x80000003, 0) // v5 format for zcash refer to https://zips.z.cash/zip-0225\n : isXST\n ? defaultVersion.writeUInt32LE(2, 0)\n : defaultVersion.writeUInt32LE(1, 0);\n // Default version to 2 for XST not to have timestamp\n const trustedInputs = [];\n const regularOutputs = [];\n const signatures = [];\n const publicKeys = [];\n let firstRun = true;\n const resuming = false;\n const targetTransaction = {\n inputs: [],\n version: defaultVersion,\n timestamp: Buffer.alloc(0),\n };\n const getTrustedInputCall = useBip143 && !useTrustedInputForSegwit ? getTrustedInputBIP143 : getTrustedInput;\n const outputScript = Buffer.from(outputScriptHex, \"hex\");\n notify(0, 0);\n // first pass on inputs to get trusted inputs\n for (const input of inputs) {\n if (!resuming) {\n const trustedInput = yield getTrustedInputCall(transport, input[1], input[0], additionals);\n log(\"hw\", \"got trustedInput=\" + trustedInput);\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(input.length >= 4 && typeof input[3] === \"number\" ? input[3] : DEFAULT_SEQUENCE, 0);\n trustedInputs.push({\n trustedInput: true,\n value: Buffer.from(trustedInput, \"hex\"),\n sequence,\n });\n }\n const { outputs } = input[0];\n const index = input[1];\n if (outputs && index <= outputs.length - 1) {\n regularOutputs.push(outputs[index]);\n }\n if (expiryHeight && !isDecred) {\n targetTransaction.nVersionGroupId = Buffer.from(\n // nVersionGroupId is 0x26A7270A for zcash from https://z.cash/upgrade/nu5/\n isZcash\n ? [0x0a, 0x27, 0xa7, 0x26]\n : sapling\n ? [0x85, 0x20, 0x2f, 0x89]\n : [0x70, 0x82, 0xc4, 0x03]);\n targetTransaction.nExpiryHeight = expiryHeight;\n // For sapling : valueBalance (8), nShieldedSpend (1), nShieldedOutput (1), nJoinSplit (1)\n // Overwinter : use nJoinSplit (1)\n targetTransaction.extraData = Buffer.from(sapling ? [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] : [0x00]);\n }\n else if (isDecred) {\n targetTransaction.nExpiryHeight = expiryHeight;\n }\n }\n targetTransaction.inputs = inputs.map((input, idx) => {\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(input.length >= 4 && typeof input[3] === \"number\" ? input[3] : DEFAULT_SEQUENCE, 0);\n return {\n script: isZcash ? regularOutputs[idx].script : nullScript,\n prevout: nullPrevout,\n sequence,\n };\n });\n if (!resuming) {\n // Collect public keys\n const result = [];\n for (let i = 0; i < inputs.length; i++) {\n const r = yield getWalletPublicKey(transport, {\n path: associatedKeysets[i],\n });\n notify(0, i + 1);\n result.push(r);\n }\n for (let i = 0; i < result.length; i++) {\n publicKeys.push(compressPublicKey(Buffer.from(result[i].publicKey, \"hex\")));\n }\n }\n if (initialTimestamp !== undefined) {\n targetTransaction.timestamp = Buffer.alloc(4);\n targetTransaction.timestamp.writeUInt32LE(Math.floor(initialTimestamp + (Date.now() - startTime) / 1000), 0);\n }\n onDeviceSignatureRequested();\n if (useBip143) {\n // Do the first run with all inputs\n yield startUntrustedHashTransactionInput(transport, true, targetTransaction, trustedInputs, true, !!expiryHeight, additionals, useTrustedInputForSegwit);\n if (!resuming && changePath) {\n yield provideOutputFullChangePath(transport, changePath);\n }\n yield hashOutputFull(transport, outputScript);\n }\n if (!!expiryHeight && !isDecred) {\n yield signTransaction(transport, \"\", lockTime, SIGHASH_ALL, expiryHeight);\n }\n // Do the second run with the individual transaction\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const script = inputs[i].length >= 3 && typeof input[2] === \"string\"\n ? Buffer.from(input[2], \"hex\")\n : !segwit\n ? regularOutputs[i].script\n : Buffer.concat([\n Buffer.from([OP_DUP, OP_HASH160, HASH_SIZE]),\n hashPublicKey(publicKeys[i]),\n Buffer.from([OP_EQUALVERIFY, OP_CHECKSIG]),\n ]);\n const pseudoTX = Object.assign({}, targetTransaction);\n const pseudoTrustedInputs = useBip143 ? [trustedInputs[i]] : trustedInputs;\n if (useBip143) {\n pseudoTX.inputs = [Object.assign(Object.assign({}, pseudoTX.inputs[i]), { script })];\n }\n else {\n pseudoTX.inputs[i].script = script;\n }\n yield startUntrustedHashTransactionInput(transport, !useBip143 && firstRun, pseudoTX, pseudoTrustedInputs, useBip143, !!expiryHeight && !isDecred, additionals, useTrustedInputForSegwit);\n if (!useBip143) {\n if (!resuming && changePath) {\n yield provideOutputFullChangePath(transport, changePath);\n }\n yield hashOutputFull(transport, outputScript, additionals);\n }\n if (firstRun) {\n onDeviceSignatureGranted();\n notify(1, 0);\n }\n const signature = yield signTransaction(transport, associatedKeysets[i], lockTime, sigHashType, expiryHeight, additionals);\n notify(1, i + 1);\n signatures.push(signature);\n targetTransaction.inputs[i].script = nullScript;\n if (firstRun) {\n firstRun = false;\n }\n }\n // Populate the final input scripts\n for (let i = 0; i < inputs.length; i++) {\n if (segwit) {\n targetTransaction.witness = Buffer.alloc(0);\n if (!bech32) {\n targetTransaction.inputs[i].script = Buffer.concat([\n Buffer.from(\"160014\", \"hex\"),\n hashPublicKey(publicKeys[i]),\n ]);\n }\n }\n else {\n const signatureSize = Buffer.alloc(1);\n const keySize = Buffer.alloc(1);\n signatureSize[0] = signatures[i].length;\n keySize[0] = publicKeys[i].length;\n targetTransaction.inputs[i].script = Buffer.concat([\n signatureSize,\n signatures[i],\n keySize,\n publicKeys[i],\n ]);\n }\n const offset = useBip143 && !useTrustedInputForSegwit ? 0 : 4;\n targetTransaction.inputs[i].prevout = trustedInputs[i].value.slice(offset, offset + 0x24);\n }\n targetTransaction.locktime = lockTimeBuffer;\n let result = Buffer.concat([\n serializeTransaction(targetTransaction, false, targetTransaction.timestamp, additionals),\n outputScript,\n ]);\n if (segwit && !isDecred) {\n let witness = Buffer.alloc(0);\n for (let i = 0; i < inputs.length; i++) {\n const tmpScriptData = Buffer.concat([\n Buffer.from(\"02\", \"hex\"),\n Buffer.from([signatures[i].length]),\n signatures[i],\n Buffer.from([publicKeys[i].length]),\n publicKeys[i],\n ]);\n witness = Buffer.concat([witness, tmpScriptData]);\n }\n result = Buffer.concat([result, witness]);\n }\n // from to https://zips.z.cash/zip-0225, zcash is different with other coins, the lock_time and nExpiryHeight fields are before the inputs and outputs\n if (!isZcash) {\n result = Buffer.concat([result, lockTimeBuffer]);\n if (expiryHeight) {\n result = Buffer.concat([\n result,\n targetTransaction.nExpiryHeight || Buffer.alloc(0),\n targetTransaction.extraData || Buffer.alloc(0),\n ]);\n }\n }\n if (isDecred) {\n let decredWitness = Buffer.from([targetTransaction.inputs.length]);\n inputs.forEach((input, inputIndex) => {\n decredWitness = Buffer.concat([\n decredWitness,\n Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),\n Buffer.from([0x00, 0x00, 0x00, 0x00]),\n Buffer.from([0xff, 0xff, 0xff, 0xff]),\n Buffer.from([targetTransaction.inputs[inputIndex].script.length]),\n targetTransaction.inputs[inputIndex].script,\n ]);\n });\n result = Buffer.concat([result, decredWitness]);\n }\n if (isZcash) {\n result = Buffer.concat([result, Buffer.from([0x00, 0x00, 0x00])]);\n }\n return result.toString(\"hex\");\n });\n}\n//# sourceMappingURL=createTransaction.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport bippath from \"bip32-path\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function signMessage(transport, { path, messageHex, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const paths = bippath.fromString(path).toPathArray();\n const message = Buffer.from(messageHex, \"hex\");\n let offset = 0;\n while (offset !== message.length) {\n const maxChunkSize = offset === 0 ? MAX_SCRIPT_BLOCK - 1 - paths.length * 4 - 4 : MAX_SCRIPT_BLOCK;\n const chunkSize = offset + maxChunkSize > message.length ? message.length - offset : maxChunkSize;\n const buffer = Buffer.alloc(offset === 0 ? 1 + paths.length * 4 + 2 + chunkSize : chunkSize);\n if (offset === 0) {\n buffer[0] = paths.length;\n paths.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n buffer.writeUInt16BE(message.length, 1 + 4 * paths.length);\n message.copy(buffer, 1 + 4 * paths.length + 2, offset, offset + chunkSize);\n }\n else {\n message.copy(buffer, 0, offset, offset + chunkSize);\n }\n yield transport.send(0xe0, 0x4e, 0x00, offset === 0 ? 0x01 : 0x80, buffer);\n offset += chunkSize;\n }\n const res = yield transport.send(0xe0, 0x4e, 0x80, 0x00, Buffer.from([0x00]));\n const v = res[0] - 0x30;\n let r = res.slice(4, 4 + res[3]);\n if (r[0] === 0) {\n r = r.slice(1);\n }\n r = r.toString(\"hex\");\n offset = 4 + res[3] + 2;\n let s = res.slice(offset, offset + res[offset - 1]);\n if (s[0] === 0) {\n s = s.slice(1);\n }\n s = s.toString(\"hex\");\n return {\n v,\n r,\n s,\n };\n });\n}\n//# sourceMappingURL=signMessage.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport bs58 from \"bs58\";\nimport RIPEMD160 from \"ripemd160\";\nimport sha from \"sha.js\";\nimport { createTransaction } from \"./createTransaction\";\nimport { getWalletPublicKey } from \"./getWalletPublicKey\";\nimport { pathArrayToString, pathStringToArray } from \"./bip32\";\nimport { signMessage } from \"./signMessage\";\n/**\n * Bitcoin API.\n *\n * @example\n * import Btc from \"@ledgerhq/hw-app-btc\";\n * const btc = new Btc({ transport, currency: \"zcash\" });\n */\nexport default class BtcOld {\n constructor(transport) {\n this.transport = transport;\n this.derivationsCache = {};\n }\n derivatePath(path) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.derivationsCache[path])\n return this.derivationsCache[path];\n const res = yield getWalletPublicKey(this.transport, {\n path,\n });\n this.derivationsCache[path] = res;\n return res;\n });\n }\n getWalletXpub({ path, xpubVersion, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const pathElements = pathStringToArray(path);\n const parentPath = pathElements.slice(0, -1);\n const parentDerivation = yield this.derivatePath(pathArrayToString(parentPath));\n const accountDerivation = yield this.derivatePath(path);\n const fingerprint = makeFingerprint(compressPublicKeySECP256(Buffer.from(parentDerivation.publicKey, \"hex\")));\n const xpub = makeXpub(xpubVersion, pathElements.length, fingerprint, pathElements[pathElements.length - 1], Buffer.from(accountDerivation.chainCode, \"hex\"), compressPublicKeySECP256(Buffer.from(accountDerivation.publicKey, \"hex\")));\n return xpub;\n });\n }\n /**\n * @param path a BIP 32 path\n * @param options an object with optional these fields:\n *\n * - verify (boolean) will ask user to confirm the address on the device\n *\n * - format (\"legacy\" | \"p2sh\" | \"bech32\" | \"cashaddr\") to use different bitcoin address formatter.\n *\n * NB The normal usage is to use:\n *\n * - legacy format with 44' paths\n *\n * - p2sh format with 49' paths\n *\n * - bech32 format with 173' paths\n *\n * - cashaddr in case of Bitcoin Cash\n *\n * @example\n * btc.getWalletPublicKey(\"44'/0'/0'/0/0\").then(o => o.bitcoinAddress)\n * btc.getWalletPublicKey(\"49'/0'/0'/0/0\", { format: \"p2sh\" }).then(o => o.bitcoinAddress)\n */\n getWalletPublicKey(path, opts) {\n if ((opts === null || opts === void 0 ? void 0 : opts.format) === \"bech32m\") {\n throw new Error(\"Unsupported address format bech32m\");\n }\n return getWalletPublicKey(this.transport, Object.assign(Object.assign({}, opts), { path }));\n }\n /**\n * To sign a transaction involving standard (P2PKH) inputs, call createTransaction with the following parameters\n * @param inputs is an array of [ transaction, output_index, optional redeem script, optional sequence ] where\n *\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the optional redeem script to use when consuming a Segregated Witness input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @param segwit is an optional boolean indicating wether to use segwit or not\n * @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)\n * @param additionals list of additionnal options\n *\n * - \"bech32\" for spending native segwit outputs\n * - \"abc\" for bch\n * - \"gold\" for btg\n * - \"bipxxx\" for using BIPxxx\n * - \"sapling\" to indicate a zec transaction is supporting sapling (to be set over block 419200)\n * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs\n * @param useTrustedInputForSegwit trust inputs for segwit transactions\n * @return the signed transaction ready to be broadcast\n * @example\n btc.createTransaction({\n inputs: [ [tx1, 1] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(res => ...);\n */\n createPaymentTransaction(arg) {\n if (arguments.length > 1) {\n throw new Error(\"@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.\");\n }\n return createTransaction(this.transport, arg);\n }\n signMessage({ path, messageHex }) {\n return __awaiter(this, void 0, void 0, function* () {\n return signMessage(this.transport, {\n path,\n messageHex,\n });\n });\n }\n}\nfunction makeFingerprint(compressedPubKey) {\n return hash160(compressedPubKey).slice(0, 4);\n}\nfunction asBufferUInt32BE(n) {\n const buf = Buffer.allocUnsafe(4);\n buf.writeUInt32BE(n, 0);\n return buf;\n}\nconst compressPublicKeySECP256 = (publicKey) => Buffer.concat([Buffer.from([0x02 + (publicKey[64] & 0x01)]), publicKey.slice(1, 33)]);\nfunction makeXpub(version, depth, parentFingerprint, index, chainCode, pubKey) {\n const indexBuffer = asBufferUInt32BE(index);\n indexBuffer[0] |= 0x80;\n const extendedKeyBytes = Buffer.concat([\n asBufferUInt32BE(version),\n Buffer.from([depth]),\n parentFingerprint,\n indexBuffer,\n chainCode,\n pubKey,\n ]);\n const checksum = hash256(extendedKeyBytes).slice(0, 4);\n return bs58.encode(Buffer.concat([extendedKeyBytes, checksum]));\n}\nfunction sha256(buffer) {\n return sha(\"sha256\").update(buffer).digest();\n}\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nfunction ripemd160(buffer) {\n return new RIPEMD160().update(buffer).digest();\n}\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\n//# sourceMappingURL=BtcOld.js.map","import { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n/**\n * This implements \"Merkelized Maps\", documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md#merkleized-maps\n *\n * A merkelized map consist of two merkle trees, one for the keys of\n * a map and one for the values of the same map, thus the two merkle\n * trees have the same shape. The commitment is the number elements\n * in the map followed by the keys' merkle root followed by the\n * values' merkle root.\n */\nexport class MerkleMap {\n /**\n * @param keys Sorted list of (unhashed) keys\n * @param values values, in corresponding order as the keys, and of equal length\n */\n constructor(keys, values) {\n if (keys.length != values.length) {\n throw new Error(\"keys and values should have the same length\");\n }\n // Sanity check: verify that keys are actually sorted and with no duplicates\n for (let i = 0; i < keys.length - 1; i++) {\n if (keys[i].toString(\"hex\") >= keys[i + 1].toString(\"hex\")) {\n throw new Error(\"keys must be in strictly increasing order\");\n }\n }\n this.keys = keys;\n this.keysTree = new Merkle(keys.map(k => hashLeaf(k)));\n this.values = values;\n this.valuesTree = new Merkle(values.map(v => hashLeaf(v)));\n }\n commitment() {\n // returns a buffer between 65 and 73 (included) bytes long\n return Buffer.concat([\n createVarint(this.keys.length),\n this.keysTree.getRoot(),\n this.valuesTree.getRoot(),\n ]);\n }\n}\n//# sourceMappingURL=merkleMap.js.map","import { MerkleMap } from \"./merkleMap\";\nimport { PsbtV2 } from \"./psbtv2\";\n/**\n * This class merkelizes a PSBTv2, by merkelizing the different\n * maps of the psbt. This is used during the transaction signing process,\n * where the hardware app can request specific parts of the psbt from the\n * client code and be sure that the response data actually belong to the psbt.\n * The reason for this is the limited amount of memory available to the app,\n * so it can't always store the full psbt in memory.\n *\n * The signing process is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#sign_psbt\n */\nexport class MerkelizedPsbt extends PsbtV2 {\n constructor(psbt) {\n super();\n this.inputMerkleMaps = [];\n this.outputMerkleMaps = [];\n psbt.copy(this);\n this.globalMerkleMap = MerkelizedPsbt.createMerkleMap(this.globalMap);\n for (let i = 0; i < this.getGlobalInputCount(); i++) {\n this.inputMerkleMaps.push(MerkelizedPsbt.createMerkleMap(this.inputMaps[i]));\n }\n this.inputMapCommitments = [...this.inputMerkleMaps.values()].map(v => v.commitment());\n for (let i = 0; i < this.getGlobalOutputCount(); i++) {\n this.outputMerkleMaps.push(MerkelizedPsbt.createMerkleMap(this.outputMaps[i]));\n }\n this.outputMapCommitments = [...this.outputMerkleMaps.values()].map(v => v.commitment());\n }\n // These public functions are for MerkelizedPsbt.\n getGlobalSize() {\n return this.globalMap.size;\n }\n getGlobalKeysValuesRoot() {\n return this.globalMerkleMap.commitment();\n }\n static createMerkleMap(map) {\n const sortedKeysStrings = [...map.keys()].sort();\n const values = sortedKeysStrings.map(k => {\n const v = map.get(k);\n if (!v) {\n throw new Error(\"No value for key \" + k);\n }\n return v;\n });\n const sortedKeys = sortedKeysStrings.map(k => Buffer.from(k, \"hex\"));\n const merkleMap = new MerkleMap(sortedKeys, values);\n return merkleMap;\n }\n}\n//# sourceMappingURL=merkelizedPsbt.js.map","import { crypto } from \"bitcoinjs-lib\";\nimport { BufferReader } from \"../buffertools\";\nimport { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\nvar ClientCommandCode;\n(function (ClientCommandCode) {\n ClientCommandCode[ClientCommandCode[\"YIELD\"] = 16] = \"YIELD\";\n ClientCommandCode[ClientCommandCode[\"GET_PREIMAGE\"] = 64] = \"GET_PREIMAGE\";\n ClientCommandCode[ClientCommandCode[\"GET_MERKLE_LEAF_PROOF\"] = 65] = \"GET_MERKLE_LEAF_PROOF\";\n ClientCommandCode[ClientCommandCode[\"GET_MERKLE_LEAF_INDEX\"] = 66] = \"GET_MERKLE_LEAF_INDEX\";\n ClientCommandCode[ClientCommandCode[\"GET_MORE_ELEMENTS\"] = 160] = \"GET_MORE_ELEMENTS\";\n})(ClientCommandCode || (ClientCommandCode = {}));\nclass ClientCommand {\n}\nexport class YieldCommand extends ClientCommand {\n constructor(results, progressCallback) {\n super();\n this.progressCallback = progressCallback;\n this.code = ClientCommandCode.YIELD;\n this.results = results;\n }\n execute(request) {\n this.results.push(Buffer.from(request.subarray(1)));\n this.progressCallback();\n return Buffer.from(\"\");\n }\n}\nexport class GetPreimageCommand extends ClientCommand {\n constructor(known_preimages, queue) {\n super();\n this.code = ClientCommandCode.GET_PREIMAGE;\n this.known_preimages = known_preimages;\n this.queue = queue;\n }\n execute(request) {\n const req = Buffer.from(request.subarray(1));\n // we expect no more data to read\n if (req.length != 1 + 32) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n if (req[0] != 0) {\n throw new Error(\"Unsupported request, the first byte should be 0\");\n }\n // read the hash\n const hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n hash[i] = req[1 + i];\n }\n const req_hash_hex = hash.toString(\"hex\");\n const known_preimage = this.known_preimages.get(req_hash_hex);\n if (known_preimage != undefined) {\n const preimage_len_varint = createVarint(known_preimage.length);\n // We can send at most 255 - len(preimage_len_out) - 1 bytes in a single message;\n // the rest will be stored in the queue for GET_MORE_ELEMENTS\n const max_payload_size = 255 - preimage_len_varint.length - 1;\n const payload_size = Math.min(max_payload_size, known_preimage.length);\n if (payload_size < known_preimage.length) {\n for (let i = payload_size; i < known_preimage.length; i++) {\n this.queue.push(Buffer.from([known_preimage[i]]));\n }\n }\n return Buffer.concat([\n preimage_len_varint,\n Buffer.from([payload_size]),\n Buffer.from(known_preimage.subarray(0, payload_size)),\n ]);\n }\n throw Error(`Requested unknown preimage for: ${req_hash_hex}`);\n }\n}\nexport class GetMerkleLeafProofCommand extends ClientCommand {\n constructor(known_trees, queue) {\n super();\n this.code = ClientCommandCode.GET_MERKLE_LEAF_PROOF;\n this.known_trees = known_trees;\n this.queue = queue;\n }\n execute(request) {\n const req = Buffer.from(request.subarray(1));\n if (req.length < 32 + 1 + 1) {\n throw new Error(\"Invalid request, expected at least 34 bytes\");\n }\n const reqBuf = new BufferReader(req);\n const hash = reqBuf.readSlice(32);\n const hash_hex = hash.toString(\"hex\");\n let tree_size;\n let leaf_index;\n try {\n tree_size = reqBuf.readVarInt();\n leaf_index = reqBuf.readVarInt();\n }\n catch (e) {\n throw new Error(\"Invalid request, couldn't parse tree_size or leaf_index\");\n }\n const mt = this.known_trees.get(hash_hex);\n if (!mt) {\n throw Error(`Requested Merkle leaf proof for unknown tree: ${hash_hex}`);\n }\n if (leaf_index >= tree_size || mt.size() != tree_size) {\n throw Error(\"Invalid index or tree size.\");\n }\n if (this.queue.length != 0) {\n throw Error(\"This command should not execute when the queue is not empty.\");\n }\n const proof = mt.getProof(leaf_index);\n const n_response_elements = Math.min(Math.floor((255 - 32 - 1 - 1) / 32), proof.length);\n const n_leftover_elements = proof.length - n_response_elements;\n // Add to the queue any proof elements that do not fit the response\n if (n_leftover_elements > 0) {\n this.queue.push(...proof.slice(-n_leftover_elements));\n }\n return Buffer.concat([\n mt.getLeafHash(leaf_index),\n Buffer.from([proof.length]),\n Buffer.from([n_response_elements]),\n ...proof.slice(0, n_response_elements),\n ]);\n }\n}\nexport class GetMerkleLeafIndexCommand extends ClientCommand {\n constructor(known_trees) {\n super();\n this.code = ClientCommandCode.GET_MERKLE_LEAF_INDEX;\n this.known_trees = known_trees;\n }\n execute(request) {\n const req = Buffer.from(request.subarray(1));\n if (req.length != 32 + 32) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n // read the root hash\n const root_hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n root_hash[i] = req.readUInt8(i);\n }\n const root_hash_hex = root_hash.toString(\"hex\");\n // read the leaf hash\n const leef_hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n leef_hash[i] = req.readUInt8(32 + i);\n }\n const leef_hash_hex = leef_hash.toString(\"hex\");\n const mt = this.known_trees.get(root_hash_hex);\n if (!mt) {\n throw Error(`Requested Merkle leaf index for unknown root: ${root_hash_hex}`);\n }\n let leaf_index = 0;\n let found = 0;\n for (let i = 0; i < mt.size(); i++) {\n if (mt.getLeafHash(i).toString(\"hex\") == leef_hash_hex) {\n found = 1;\n leaf_index = i;\n break;\n }\n }\n return Buffer.concat([Buffer.from([found]), createVarint(leaf_index)]);\n }\n}\nexport class GetMoreElementsCommand extends ClientCommand {\n constructor(queue) {\n super();\n this.code = ClientCommandCode.GET_MORE_ELEMENTS;\n this.queue = queue;\n }\n execute(request) {\n if (request.length != 1) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n if (this.queue.length === 0) {\n throw new Error(\"No elements to get\");\n }\n // all elements should have the same length\n const element_len = this.queue[0].length;\n if (this.queue.some(el => el.length != element_len)) {\n throw new Error(\"The queue contains elements with different byte length, which is not expected\");\n }\n const max_elements = Math.floor(253 / element_len);\n const n_returned_elements = Math.min(max_elements, this.queue.length);\n const returned_elements = this.queue.splice(0, n_returned_elements);\n return Buffer.concat([\n Buffer.from([n_returned_elements]),\n Buffer.from([element_len]),\n ...returned_elements,\n ]);\n }\n}\n/**\n * This class will dispatch a client command coming from the hardware device to\n * the appropriate client command implementation. Those client commands\n * typically requests data from a merkle tree or merkelized maps.\n *\n * A ClientCommandInterpreter is prepared by adding the merkle trees and\n * merkelized maps it should be able to serve to the hardware device. This class\n * doesn't know anything about the semantics of the data it holds, it just\n * serves merkle data. It doesn't even know in what context it is being\n * executed, ie SignPsbt, getWalletAddress, etc.\n *\n * If the command yelds results to the client, as signPsbt does, the yielded\n * data will be accessible after the command completed by calling getYielded(),\n * which will return the yields in the same order as they came in.\n */\nexport class ClientCommandInterpreter {\n constructor(progressCallback) {\n this.roots = new Map();\n this.preimages = new Map();\n this.yielded = [];\n this.queue = [];\n this.commands = new Map();\n const commands = [\n new YieldCommand(this.yielded, progressCallback),\n new GetPreimageCommand(this.preimages, this.queue),\n new GetMerkleLeafIndexCommand(this.roots),\n new GetMerkleLeafProofCommand(this.roots, this.queue),\n new GetMoreElementsCommand(this.queue),\n ];\n for (const cmd of commands) {\n if (this.commands.has(cmd.code)) {\n throw new Error(`Multiple commands with code ${cmd.code}`);\n }\n this.commands.set(cmd.code, cmd);\n }\n }\n getYielded() {\n return this.yielded;\n }\n addKnownPreimage(preimage) {\n this.preimages.set(crypto.sha256(preimage).toString(\"hex\"), preimage);\n }\n addKnownList(elements) {\n for (const el of elements) {\n const preimage = Buffer.concat([Buffer.from([0]), el]);\n this.addKnownPreimage(preimage);\n }\n const mt = new Merkle(elements.map(el => hashLeaf(el)));\n this.roots.set(mt.getRoot().toString(\"hex\"), mt);\n }\n addKnownMapping(mm) {\n this.addKnownList(mm.keys);\n this.addKnownList(mm.values);\n }\n execute(request) {\n if (request.length == 0) {\n throw new Error(\"Unexpected empty command\");\n }\n const cmdCode = request[0];\n const cmd = this.commands.get(cmdCode);\n if (!cmd) {\n throw new Error(`Unexpected command code ${cmdCode}`);\n }\n return cmd.execute(request);\n }\n}\n//# sourceMappingURL=clientCommands.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { pathElementsToBuffer } from \"../bip32\";\nimport { MerkelizedPsbt } from \"./merkelizedPsbt\";\nimport { ClientCommandInterpreter } from \"./clientCommands\";\nimport { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\nconst CLA_BTC = 0xe1;\nconst CLA_FRAMEWORK = 0xf8;\nvar BitcoinIns;\n(function (BitcoinIns) {\n BitcoinIns[BitcoinIns[\"GET_PUBKEY\"] = 0] = \"GET_PUBKEY\";\n // GET_ADDRESS = 0x01, // Removed from app\n BitcoinIns[BitcoinIns[\"REGISTER_WALLET\"] = 2] = \"REGISTER_WALLET\";\n BitcoinIns[BitcoinIns[\"GET_WALLET_ADDRESS\"] = 3] = \"GET_WALLET_ADDRESS\";\n BitcoinIns[BitcoinIns[\"SIGN_PSBT\"] = 4] = \"SIGN_PSBT\";\n BitcoinIns[BitcoinIns[\"GET_MASTER_FINGERPRINT\"] = 5] = \"GET_MASTER_FINGERPRINT\";\n BitcoinIns[BitcoinIns[\"SIGN_MESSAGE\"] = 16] = \"SIGN_MESSAGE\";\n})(BitcoinIns || (BitcoinIns = {}));\nvar FrameworkIns;\n(function (FrameworkIns) {\n FrameworkIns[FrameworkIns[\"CONTINUE_INTERRUPTED\"] = 1] = \"CONTINUE_INTERRUPTED\";\n})(FrameworkIns || (FrameworkIns = {}));\n/**\n * This class encapsulates the APDU protocol documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md\n */\nexport class AppClient {\n constructor(transport) {\n this.transport = transport;\n }\n makeRequest(ins, data, cci) {\n return __awaiter(this, void 0, void 0, function* () {\n let response = yield this.transport.send(CLA_BTC, ins, 0, 0, data, [0x9000, 0xe000]);\n while (response.readUInt16BE(response.length - 2) === 0xe000) {\n if (!cci) {\n throw new Error(\"Unexpected SW_INTERRUPTED_EXECUTION\");\n }\n const hwRequest = response.slice(0, -2);\n const commandResponse = cci.execute(hwRequest);\n response = yield this.transport.send(CLA_FRAMEWORK, FrameworkIns.CONTINUE_INTERRUPTED, 0, 0, commandResponse, [0x9000, 0xe000]);\n }\n return response.slice(0, -2); // drop the status word (can only be 0x9000 at this point)\n });\n }\n getExtendedPubkey(display, pathElements) {\n return __awaiter(this, void 0, void 0, function* () {\n if (pathElements.length > 6) {\n throw new Error(\"Path too long. At most 6 levels allowed.\");\n }\n const response = yield this.makeRequest(BitcoinIns.GET_PUBKEY, Buffer.concat([Buffer.from(display ? [1] : [0]), pathElementsToBuffer(pathElements)]));\n return response.toString(\"ascii\");\n });\n }\n getWalletAddress(walletPolicy, walletHMAC, change, addressIndex, display) {\n return __awaiter(this, void 0, void 0, function* () {\n if (change !== 0 && change !== 1)\n throw new Error(\"Change can only be 0 or 1\");\n if (addressIndex < 0 || !Number.isInteger(addressIndex))\n throw new Error(\"Invalid address index\");\n if (walletHMAC != null && walletHMAC.length != 32) {\n throw new Error(\"Invalid HMAC length\");\n }\n const clientInterpreter = new ClientCommandInterpreter(() => { });\n clientInterpreter.addKnownList(walletPolicy.keys.map(k => Buffer.from(k, \"ascii\")));\n clientInterpreter.addKnownPreimage(walletPolicy.serialize());\n const addressIndexBuffer = Buffer.alloc(4);\n addressIndexBuffer.writeUInt32BE(addressIndex, 0);\n const response = yield this.makeRequest(BitcoinIns.GET_WALLET_ADDRESS, Buffer.concat([\n Buffer.from(display ? [1] : [0]),\n walletPolicy.getWalletId(),\n walletHMAC || Buffer.alloc(32, 0),\n Buffer.from([change]),\n addressIndexBuffer,\n ]), clientInterpreter);\n return response.toString(\"ascii\");\n });\n }\n signPsbt(psbt, walletPolicy, walletHMAC, progressCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const merkelizedPsbt = new MerkelizedPsbt(psbt);\n if (walletHMAC != null && walletHMAC.length != 32) {\n throw new Error(\"Invalid HMAC length\");\n }\n const clientInterpreter = new ClientCommandInterpreter(progressCallback);\n // prepare ClientCommandInterpreter\n clientInterpreter.addKnownList(walletPolicy.keys.map(k => Buffer.from(k, \"ascii\")));\n clientInterpreter.addKnownPreimage(walletPolicy.serialize());\n clientInterpreter.addKnownMapping(merkelizedPsbt.globalMerkleMap);\n for (const map of merkelizedPsbt.inputMerkleMaps) {\n clientInterpreter.addKnownMapping(map);\n }\n for (const map of merkelizedPsbt.outputMerkleMaps) {\n clientInterpreter.addKnownMapping(map);\n }\n clientInterpreter.addKnownList(merkelizedPsbt.inputMapCommitments);\n const inputMapsRoot = new Merkle(merkelizedPsbt.inputMapCommitments.map(m => hashLeaf(m))).getRoot();\n clientInterpreter.addKnownList(merkelizedPsbt.outputMapCommitments);\n const outputMapsRoot = new Merkle(merkelizedPsbt.outputMapCommitments.map(m => hashLeaf(m))).getRoot();\n yield this.makeRequest(BitcoinIns.SIGN_PSBT, Buffer.concat([\n merkelizedPsbt.getGlobalKeysValuesRoot(),\n createVarint(merkelizedPsbt.getGlobalInputCount()),\n inputMapsRoot,\n createVarint(merkelizedPsbt.getGlobalOutputCount()),\n outputMapsRoot,\n walletPolicy.getWalletId(),\n walletHMAC || Buffer.alloc(32, 0),\n ]), clientInterpreter);\n const yielded = clientInterpreter.getYielded();\n const ret = new Map();\n for (const inputAndSig of yielded) {\n ret.set(inputAndSig[0], inputAndSig.slice(1));\n }\n return ret;\n });\n }\n getMasterFingerprint() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.makeRequest(BitcoinIns.GET_MASTER_FINGERPRINT, Buffer.from([]));\n });\n }\n signMessage(message, pathElements) {\n return __awaiter(this, void 0, void 0, function* () {\n if (pathElements.length > 6) {\n throw new Error(\"Path too long. At most 6 levels allowed.\");\n }\n const clientInterpreter = new ClientCommandInterpreter(() => { });\n // prepare ClientCommandInterpreter\n const nChunks = Math.ceil(message.length / 64);\n const chunks = [];\n for (let i = 0; i < nChunks; i++) {\n chunks.push(message.subarray(64 * i, 64 * i + 64));\n }\n clientInterpreter.addKnownList(chunks);\n const chunksRoot = new Merkle(chunks.map(m => hashLeaf(m))).getRoot();\n const response = yield this.makeRequest(BitcoinIns.SIGN_MESSAGE, Buffer.concat([pathElementsToBuffer(pathElements), createVarint(message.length), chunksRoot]), clientInterpreter);\n return response.toString(\"base64\");\n });\n }\n}\n//# sourceMappingURL=appClient.js.map","export function formatTransactionDebug(transaction) {\n let str = \"TX\";\n str += \" version \" + transaction.version.toString(\"hex\");\n if (transaction.locktime) {\n str += \" locktime \" + transaction.locktime.toString(\"hex\");\n }\n if (transaction.witness) {\n str += \" witness \" + transaction.witness.toString(\"hex\");\n }\n if (transaction.timestamp) {\n str += \" timestamp \" + transaction.timestamp.toString(\"hex\");\n }\n if (transaction.nVersionGroupId) {\n str += \" nVersionGroupId \" + transaction.nVersionGroupId.toString(\"hex\");\n }\n if (transaction.nExpiryHeight) {\n str += \" nExpiryHeight \" + transaction.nExpiryHeight.toString(\"hex\");\n }\n if (transaction.extraData) {\n str += \" extraData \" + transaction.extraData.toString(\"hex\");\n }\n transaction.inputs.forEach(({ prevout, script, sequence }, i) => {\n str += `\\ninput ${i}:`;\n str += ` prevout ${prevout.toString(\"hex\")}`;\n str += ` script ${script.toString(\"hex\")}`;\n str += ` sequence ${sequence.toString(\"hex\")}`;\n });\n (transaction.outputs || []).forEach(({ amount, script }, i) => {\n str += `\\noutput ${i}:`;\n str += ` amount ${amount.toString(\"hex\")}`;\n str += ` script ${script.toString(\"hex\")}`;\n });\n return str;\n}\nexport function displayTransactionDebug(transaction) {\n console.log(formatTransactionDebug(transaction));\n}\n//# sourceMappingURL=debug.js.map","import { log } from \"@ledgerhq/logs\";\nimport { getVarint } from \"./varint\";\nimport { formatTransactionDebug } from \"./debug\";\nexport function splitTransaction(transactionHex, isSegwitSupported = false, hasTimestamp = false, hasExtraData = false, additionals = []) {\n const inputs = [];\n const outputs = [];\n let witness = false;\n let offset = 0;\n let timestamp = Buffer.alloc(0);\n let nExpiryHeight = Buffer.alloc(0);\n let nVersionGroupId = Buffer.alloc(0);\n let extraData = Buffer.alloc(0);\n let witnessScript, locktime;\n const isDecred = additionals.includes(\"decred\");\n const isZencash = additionals.includes(\"zencash\");\n const isZcash = additionals.includes(\"zcash\");\n const transaction = Buffer.from(transactionHex, \"hex\");\n const version = transaction.slice(offset, offset + 4);\n const overwinter = version.equals(Buffer.from([0x03, 0x00, 0x00, 0x80])) ||\n version.equals(Buffer.from([0x04, 0x00, 0x00, 0x80])) ||\n version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));\n const isZcashv5 = isZcash && version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));\n offset += 4;\n if (!hasTimestamp &&\n isSegwitSupported &&\n transaction[offset] === 0 &&\n transaction[offset + 1] !== 0 &&\n !isZencash) {\n offset += 2;\n witness = true;\n }\n if (hasTimestamp) {\n timestamp = transaction.slice(offset, 4 + offset);\n offset += 4;\n }\n if (overwinter) {\n nVersionGroupId = transaction.slice(offset, 4 + offset);\n offset += 4;\n }\n if (isZcashv5) {\n locktime = transaction.slice(offset + 4, offset + 8);\n nExpiryHeight = transaction.slice(offset + 8, offset + 12);\n offset += 12;\n }\n let varint = getVarint(transaction, offset);\n const numberInputs = varint[0];\n offset += varint[1];\n for (let i = 0; i < numberInputs; i++) {\n const prevout = transaction.slice(offset, offset + 36);\n offset += 36;\n let script = Buffer.alloc(0);\n let tree = Buffer.alloc(0);\n //No script for decred, it has a witness\n if (!isDecred) {\n varint = getVarint(transaction, offset);\n offset += varint[1];\n script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n }\n else {\n //Tree field\n tree = transaction.slice(offset, offset + 1);\n offset += 1;\n }\n const sequence = transaction.slice(offset, offset + 4);\n offset += 4;\n inputs.push({\n prevout,\n script,\n sequence,\n tree,\n });\n }\n varint = getVarint(transaction, offset);\n const numberOutputs = varint[0];\n offset += varint[1];\n for (let i = 0; i < numberOutputs; i++) {\n const amount = transaction.slice(offset, offset + 8);\n offset += 8;\n if (isDecred) {\n //Script version\n offset += 2;\n }\n varint = getVarint(transaction, offset);\n offset += varint[1];\n const script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n outputs.push({\n amount,\n script,\n });\n }\n if (witness) {\n witnessScript = transaction.slice(offset, -4);\n locktime = transaction.slice(transaction.length - 4);\n }\n else if (!isZcashv5) {\n locktime = transaction.slice(offset, offset + 4);\n }\n offset += 4;\n if ((overwinter || isDecred) && !isZcashv5) {\n nExpiryHeight = transaction.slice(offset, offset + 4);\n offset += 4;\n }\n if (hasExtraData) {\n extraData = transaction.slice(offset);\n }\n //Get witnesses for Decred\n if (isDecred) {\n varint = getVarint(transaction, offset);\n offset += varint[1];\n if (varint[0] !== numberInputs) {\n throw new Error(\"splitTransaction: incoherent number of witnesses\");\n }\n for (let i = 0; i < numberInputs; i++) {\n //amount\n offset += 8;\n //block height\n offset += 4;\n //block index\n offset += 4;\n //Script size\n varint = getVarint(transaction, offset);\n offset += varint[1];\n const script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n inputs[i].script = script;\n }\n }\n const t = {\n version,\n inputs,\n outputs,\n locktime,\n witness: witnessScript,\n timestamp,\n nVersionGroupId,\n nExpiryHeight,\n extraData,\n };\n log(\"btc\", `splitTransaction ${transactionHex}:\\n${formatTransactionDebug(t)}`);\n return t;\n}\n//# sourceMappingURL=splitTransaction.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { startUntrustedHashTransactionInput } from \"./startUntrustedHashTransactionInput\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { signTransaction } from \"./signTransaction\";\nimport { hashOutputFull } from \"./finalizeInput\";\nimport { DEFAULT_LOCKTIME, DEFAULT_VERSION, DEFAULT_SEQUENCE, SIGHASH_ALL } from \"./constants\";\nconst defaultArg = {\n lockTime: DEFAULT_LOCKTIME,\n sigHashType: SIGHASH_ALL,\n segwit: false,\n transactionVersion: DEFAULT_VERSION,\n};\nexport function signP2SHTransaction(transport, arg) {\n return __awaiter(this, void 0, void 0, function* () {\n const { inputs, associatedKeysets, outputScriptHex, lockTime, sigHashType, segwit, transactionVersion, } = Object.assign(Object.assign({}, defaultArg), arg);\n // Inputs are provided as arrays of [transaction, output_index, redeem script, optional sequence]\n // associatedKeysets are provided as arrays of [path]\n const nullScript = Buffer.alloc(0);\n const nullPrevout = Buffer.alloc(0);\n const defaultVersion = Buffer.alloc(4);\n defaultVersion.writeUInt32LE(transactionVersion, 0);\n const trustedInputs = [];\n const regularOutputs = [];\n const signatures = [];\n let firstRun = true;\n const resuming = false;\n const targetTransaction = {\n inputs: [],\n version: defaultVersion,\n };\n const getTrustedInputCall = segwit ? getTrustedInputBIP143 : getTrustedInput;\n const outputScript = Buffer.from(outputScriptHex, \"hex\");\n for (const input of inputs) {\n if (!resuming) {\n const trustedInput = yield getTrustedInputCall(transport, input[1], input[0]);\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(input.length >= 4 && typeof input[3] === \"number\" ? input[3] : DEFAULT_SEQUENCE, 0);\n trustedInputs.push({\n trustedInput: false,\n value: segwit\n ? Buffer.from(trustedInput, \"hex\")\n : Buffer.from(trustedInput, \"hex\").slice(4, 4 + 0x24),\n sequence,\n });\n }\n const { outputs } = input[0];\n const index = input[1];\n if (outputs && index <= outputs.length - 1) {\n regularOutputs.push(outputs[index]);\n }\n }\n // Pre-build the target transaction\n for (let i = 0; i < inputs.length; i++) {\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(inputs[i].length >= 4 && typeof inputs[i][3] === \"number\"\n ? inputs[i][3]\n : DEFAULT_SEQUENCE, 0);\n targetTransaction.inputs.push({\n script: nullScript,\n prevout: nullPrevout,\n sequence,\n });\n }\n if (segwit) {\n yield startUntrustedHashTransactionInput(transport, true, targetTransaction, trustedInputs, true);\n yield hashOutputFull(transport, outputScript);\n }\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const script = inputs[i].length >= 3 && typeof input[2] === \"string\"\n ? Buffer.from(input[2], \"hex\")\n : regularOutputs[i].script;\n const pseudoTX = Object.assign({}, targetTransaction);\n const pseudoTrustedInputs = segwit ? [trustedInputs[i]] : trustedInputs;\n if (segwit) {\n pseudoTX.inputs = [Object.assign(Object.assign({}, pseudoTX.inputs[i]), { script })];\n }\n else {\n pseudoTX.inputs[i].script = script;\n }\n yield startUntrustedHashTransactionInput(transport, !segwit && firstRun, pseudoTX, pseudoTrustedInputs, segwit);\n if (!segwit) {\n yield hashOutputFull(transport, outputScript);\n }\n const signature = yield signTransaction(transport, associatedKeysets[i], lockTime, sigHashType);\n signatures.push(segwit ? signature.toString(\"hex\") : signature.slice(0, signature.length - 1).toString(\"hex\"));\n targetTransaction.inputs[i].script = nullScript;\n if (firstRun) {\n firstRun = false;\n }\n }\n return signatures;\n });\n}\n//# sourceMappingURL=signP2SHTransaction.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport BtcNew from \"./BtcNew\";\nimport BtcOld from \"./BtcOld\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { AppClient } from \"./newops/appClient\";\nimport { serializeTransactionOutputs } from \"./serializeTransaction\";\nimport { splitTransaction } from \"./splitTransaction\";\nimport { signP2SHTransaction } from \"./signP2SHTransaction\";\nimport { checkIsBtcLegacy, getAppAndVersion } from \"./getAppAndVersion\";\n/**\n * Bitcoin API.\n *\n * @example\n * import Btc from \"@ledgerhq/hw-app-btc\";\n * const btc = new Btc({ transport, currency: \"bitcoin\" });\n */\nexport default class Btc {\n constructor({ transport, scrambleKey = \"BTC\", currency = \"bitcoin\", }) {\n this._transport = transport;\n this._transport.decorateAppAPIMethods(this, [\n \"getWalletXpub\",\n \"getWalletPublicKey\",\n \"signP2SHTransaction\",\n \"signMessage\",\n \"createPaymentTransaction\",\n \"getTrustedInput\",\n \"getTrustedInputBIP143\",\n ], scrambleKey);\n // new APDU (nano app API) for bitcoin and old APDU for altcoin\n if (currency === \"bitcoin\" || currency === \"bitcoin_testnet\") {\n this._impl = new BtcNew(new AppClient(this._transport));\n }\n else {\n this._impl = new BtcOld(this._transport);\n }\n }\n /**\n * Get an XPUB with a ledger device\n * @param arg derivation parameter\n * - path: a BIP 32 path of the account level. e.g. `84'/0'/0'`\n * - xpubVersion: the XPUBVersion of the coin used. (use @ledgerhq/currencies if needed)\n * @returns XPUB of the account\n */\n getWalletXpub(arg) {\n return this.changeImplIfNecessary().then(impl => {\n return impl.getWalletXpub(arg);\n });\n }\n /**\n * @param path a BIP 32 path\n * @param options an object with optional these fields:\n *\n * - verify (boolean) will ask user to confirm the address on the device\n *\n * - format (\"legacy\" | \"p2sh\" | \"bech32\" | \"bech32m\" | \"cashaddr\") to use different bitcoin address formatter.\n *\n * NB The normal usage is to use:\n *\n * - legacy format with 44' paths\n *\n * - p2sh format with 49' paths\n *\n * - bech32 format with 84' paths\n *\n * - cashaddr in case of Bitcoin Cash\n *\n * @example\n * btc.getWalletPublicKey(\"44'/0'/0'/0/0\").then(o => o.bitcoinAddress)\n * btc.getWalletPublicKey(\"49'/0'/0'/0/0\", { format: \"p2sh\" }).then(o => o.bitcoinAddress)\n */\n getWalletPublicKey(path, opts) {\n let options;\n if (arguments.length > 2 || typeof opts === \"boolean\") {\n console.warn(\"btc.getWalletPublicKey deprecated signature used. Please switch to getWalletPublicKey(path, { format, verify })\");\n options = {\n verify: !!opts,\n // eslint-disable-next-line prefer-rest-params\n format: arguments[2] ? \"p2sh\" : \"legacy\",\n };\n }\n else {\n options = opts || {};\n }\n return this.changeImplIfNecessary().then(impl => {\n return impl.getWalletPublicKey(path, options);\n });\n }\n /**\n * You can sign a message according to the Bitcoin Signature format and retrieve v, r, s given the message and the BIP 32 path of the account to sign.\n * @example\n btc.signMessage(\"44'/60'/0'/0'/0\", Buffer.from(\"test\").toString(\"hex\")).then(function(result) {\n var v = result['v'] + 27 + 4;\n var signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64');\n console.log(\"Signature : \" + signature);\n }).catch(function(ex) {console.log(ex);});\n */\n signMessage(path, messageHex) {\n return this.changeImplIfNecessary().then(impl => {\n return impl.signMessage({\n path,\n messageHex,\n });\n });\n }\n /**\n * To sign a transaction involving standard (P2PKH) inputs, call createTransaction with the following parameters\n * @param inputs is an array of [ transaction, output_index, optional redeem script, optional sequence ] where\n *\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the optional redeem script to use when consuming a Segregated Witness input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign, including leading vararg voutCount\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @param segwit is an optional boolean indicating wether to use segwit or not. This includes wrapped segwit.\n * @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)\n * @param additionals list of additionnal options\n *\n * - \"bech32\" for spending native segwit outputs\n * - \"bech32m\" for spending segwit v1+ outputs\n * - \"abc\" for bch\n * - \"gold\" for btg\n * - \"bipxxx\" for using BIPxxx\n * - \"sapling\" to indicate a zec transaction is supporting sapling (to be set over block 419200)\n * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs\n * @param useTrustedInputForSegwit trust inputs for segwit transactions. If app version >= 1.4.0 this should be true.\n * @return the signed transaction ready to be broadcast\n * @example\n btc.createTransaction({\n inputs: [ [tx1, 1] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(res => ...);\n */\n createPaymentTransaction(arg) {\n if (arguments.length > 1) {\n throw new Error(\"@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.\");\n }\n return this.changeImplIfNecessary().then(impl => {\n return impl.createPaymentTransaction(arg);\n });\n }\n /**\n * To obtain the signature of multisignature (P2SH) inputs, call signP2SHTransaction_async with the folowing parameters\n * @param inputs is an array of [ transaction, output_index, redeem script, optional sequence ] where\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the mandatory redeem script associated to the current P2SH input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @return the signed transaction ready to be broadcast\n * @example\n btc.signP2SHTransaction({\n inputs: [ [tx, 1, \"52210289b4a3ad52a919abd2bdd6920d8a6879b1e788c38aa76f0440a6f32a9f1996d02103a3393b1439d1693b063482c04bd40142db97bdf139eedd1b51ffb7070a37eac321030b9a409a1e476b0d5d17b804fcdb81cf30f9b99c6f3ae1178206e08bc500639853ae\"] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(result => ...);\n */\n signP2SHTransaction(arg) {\n return signP2SHTransaction(this._transport, arg);\n }\n /**\n * For each UTXO included in your transaction, create a transaction object from the raw serialized version of the transaction used in this UTXO.\n * @example\n const tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\n */\n splitTransaction(transactionHex, isSegwitSupported = false, hasTimestamp = false, hasExtraData = false, additionals = []) {\n return splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasExtraData, additionals);\n }\n /**\n @example\n const tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\n const outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');\n */\n serializeTransactionOutputs(t) {\n return serializeTransactionOutputs(t);\n }\n getTrustedInput(indexLookup, transaction, additionals = []) {\n return getTrustedInput(this._transport, indexLookup, transaction, additionals);\n }\n getTrustedInputBIP143(indexLookup, transaction, additionals = []) {\n return getTrustedInputBIP143(this._transport, indexLookup, transaction, additionals);\n }\n changeImplIfNecessary() {\n return __awaiter(this, void 0, void 0, function* () {\n // if BtcOld was instantiated, stick with it\n if (this._impl instanceof BtcOld)\n return this._impl;\n const appAndVersion = yield getAppAndVersion(this._transport);\n let isBtcLegacy = true; // default for all altcoins\n if (appAndVersion.name === \"Bitcoin\" || appAndVersion.name === \"Bitcoin Test\") {\n const [major, minor] = appAndVersion.version.split(\".\");\n // we use the legacy protocol for versions below 2.1.0 of the Bitcoin app.\n isBtcLegacy = parseInt(major) <= 1 || (parseInt(major) == 2 && parseInt(minor) == 0);\n }\n else if (appAndVersion.name === \"Bitcoin Legacy\" ||\n appAndVersion.name === \"Bitcoin Test Legacy\") {\n // the \"Bitcoin Legacy\" and \"Bitcoin Testnet Legacy\" app use the legacy protocol, regardless of the version\n isBtcLegacy = true;\n }\n else if (appAndVersion.name === \"Exchange\") {\n // We can't query the version of the Bitcoin app if we're coming from Exchange;\n // therefore, we use a workaround to distinguish legacy and new versions.\n // This can be removed once Ledger Live enforces minimum bitcoin version >= 2.1.0.\n isBtcLegacy = yield checkIsBtcLegacy(this._transport);\n }\n if (isBtcLegacy) {\n this._impl = new BtcOld(this._transport);\n }\n return this._impl;\n });\n }\n}\n//# sourceMappingURL=Btc.js.map","import AppBtc from '@ledgerhq/hw-app-btc'\nimport { Transaction } from '@ledgerhq/hw-app-btc/lib/types'\nimport { FeeOption, FeeRate, TxHash, TxParams } from '@xchainjs/xchain-client'\nimport { Address } from '@xchainjs/xchain-util'\nimport { UtxoClientParams } from '@xchainjs/xchain-utxo'\n\nimport { Client } from './client'\n/**\n * Custom Ledger Bitcoin client\n */\nclass ClientLedger extends Client {\n // Reference to the Ledger transport object\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private transport: any // TODO: Parametrize\n private app: AppBtc | undefined\n\n // Constructor\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(params: UtxoClientParams & { transport: any }) {\n super(params)\n this.transport = params.transport\n }\n\n // Get the Ledger Doge application instance\n public async getApp(): Promise<AppBtc> {\n if (this.app) {\n return this.app\n }\n this.app = new AppBtc({ transport: this.transport, currency: 'dogecoin' })\n return this.app\n }\n\n // Get the current address synchronously\n getAddress(): string {\n throw Error('Sync method not supported for Ledger')\n }\n\n // Get the current address asynchronously\n async getAddressAsync(index = 0, verify = false): Promise<Address> {\n const app = await this.getApp()\n const result = await app.getWalletPublicKey(this.getFullDerivationPath(index), {\n format: 'legacy',\n verify,\n })\n return result.bitcoinAddress\n }\n\n // Transfer Doge from Ledger\n async transfer(params: TxParams & { feeRate?: FeeRate }): Promise<TxHash> {\n const app = await this.getApp()\n const fromAddressIndex = params?.walletIndex || 0\n const derivePath = this.getFullDerivationPath(fromAddressIndex)\n // Get fee rate\n const feeRate = params.feeRate || (await this.getFeeRates())[FeeOption.Fast]\n // Get sender address\n const sender = await this.getAddressAsync(fromAddressIndex)\n // Prepare transaction\n const { psbt, utxos } = await this.buildTx({\n ...params,\n feeRate,\n sender,\n })\n // Prepare Ledger inputs\n const inputs: Array<[Transaction, number, string | null, number | null]> = utxos.map(({ txHex, hash, index }) => {\n if (!txHex) {\n throw Error(`Missing 'txHex' for UTXO (txHash ${hash})`)\n }\n const splittedTx = app.splitTransaction(txHex, false /* no segwit support */)\n return [splittedTx, index, null, null]\n })\n\n const associatedKeysets: string[] = inputs.map((_) => derivePath)\n const newTxHex = psbt.data.globalMap.unsignedTx.toBuffer().toString('hex')\n const newTx: Transaction = app.splitTransaction(newTxHex, true)\n\n const outputScriptHex = app.serializeTransactionOutputs(newTx).toString('hex')\n\n const txHex = await app.createPaymentTransaction({\n inputs,\n associatedKeysets,\n outputScriptHex,\n // no additionals - similar to https://github.com/shapeshift/hdwallet/blob/a61234eb83081a4de54750b8965b873b15803a03/packages/hdwallet-ledger/src/bitcoin.ts#L222\n additionals: [],\n })\n\n const txHash = await this.broadcastTx(txHex)\n // Throw error if no transaction hash is received\n if (!txHash) {\n throw Error('No Tx hash')\n }\n\n return txHash\n }\n}\nexport { ClientLedger }\n","import { Network } from '@xchainjs/xchain-client'\n\n/**\n * Function to get the URL for sending a transaction based on the network and Blockcypher URL.\n * Throws an error if the network is 'testnet' since the testnet URL is not available for Blockcypher.\n * @param {object} params Object containing the Blockcypher URL and network type.\n * @param {string} params.blockcypherUrl The Blockcypher URL.\n * @param {Network} params.network The network type (Mainnet, Testnet, or Stagenet).\n * @returns {string} The URL for sending a transaction.\n */\nexport const getSendTxUrl = ({ blockcypherUrl, network }: { blockcypherUrl: string; network: Network }): string => {\n if (network === 'testnet') {\n // Check if the network is testnet\n throw new Error('Testnet URL is not available for Blockcypher') // Throw an error if testnet URL is requested\n } else {\n return `${blockcypherUrl}/doge/main/txs/push` // Return the mainnet URL for sending a transaction\n }\n}\n"],"names":["ExplorerProvider","Network","SochainProvider","SochainNetwork","BlockcypherProvider","BlockcypherNetwork","BitgoProvider","coininfo","Dogecoin","UTXOClient","__awaiter","accumulative","Utils.dogeNetwork","Utils.validateAddress","Utils.inputBytes","Utils.TX_EMPTY_SIZE","Utils.TX_OUTPUT_BASE","Utils.TX_OUTPUT_PUBKEYHASH","dogeNetwork","getSeed","FeeOption","checkFeeBounds","this","assert","require$$0","require$$1","require$$2","r","brorandModule","BN","utils","base","inherits_browserModule","inherits","Base","require$$3","Point","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","require$$4","RIPEMD160","K","Hmac","secp256k1","curve","hash","HmacDRBG","KeyPair","key","Signature","signature","curves","require$$5","require$$6","EC","parseBytes","cachedProperty","Buffer","Transform","ZEROS","HashBase","ARRAY16","MD5","rotl","md5","ripemd160","Hash","W","rotl5","rotl30","ft","Sha256","maj","sigma0","sigma1","sha256","exports","sha_jsModule","browser","deterministicGenerateK","bs58check","MAX_SAFE_INTEGER","crypto","pointAddScalar","createKey","pointCompress","invariant","shajs","MAX_LENGTH","constants","debug","parseOptions","compareIdentifiers","identifiers","re","t","SemVer","semver","parse","valid","clean","inc","diff","major","minor","patch","prerelease","compare","rcompare","compareLoose","compareBuild","sort","rsort","gt","lt","eq","neq","gte","lte","cmp","coerce","Range","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","Comparator","ANY","require$$7","outside","gtr","ltr","intersects","subset","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40","bs58","AppBtc"],"mappings":"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AE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,G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E,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE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jE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;MACF;IACF;AACH,GAAE,GAAG,EAAE;KACH,GAAG,EAAE,CAAC;AACV,KAAI,MAAM,EAAE;OACN;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,gEAAgE;AACxE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,iEAAiE;AACzE,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE;QACnE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,iEAAiE;QAClE;OACD;AACN,SAAQ,kEAAkE;AAC1E,SAAQ,kEAAkE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,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UA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,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAC;AACD;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EA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;AAChC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAC;AAChC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAC;AAChC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAC;AAChC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAC;AAChC;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACzD,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EA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"}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/coinselect/utils.js","../../../node_modules/coinselect/accumulative.js","../src/const.ts","../src/utils.ts","../src/client.ts","../src/clientKeystore.ts","../src/clientLedger.ts","../src/blockcypher-api.ts"],"sourcesContent":["// baseline estimates, used to improve performance\nvar TX_EMPTY_SIZE = 4 + 1 + 1 + 4\nvar TX_INPUT_BASE = 32 + 4 + 1 + 4\nvar TX_INPUT_PUBKEYHASH = 107\nvar TX_OUTPUT_BASE = 8 + 1\nvar TX_OUTPUT_PUBKEYHASH = 25\n\nfunction inputBytes (input) {\n return TX_INPUT_BASE + (input.script ? input.script.length : TX_INPUT_PUBKEYHASH)\n}\n\nfunction outputBytes (output) {\n return TX_OUTPUT_BASE + (output.script ? output.script.length : TX_OUTPUT_PUBKEYHASH)\n}\n\nfunction dustThreshold (output, feeRate) {\n /* ... classify the output for input estimate */\n return inputBytes({}) * feeRate\n}\n\nfunction transactionBytes (inputs, outputs) {\n return TX_EMPTY_SIZE +\n inputs.reduce(function (a, x) { return a + inputBytes(x) }, 0) +\n outputs.reduce(function (a, x) { return a + outputBytes(x) }, 0)\n}\n\nfunction uintOrNaN (v) {\n if (typeof v !== 'number') return NaN\n if (!isFinite(v)) return NaN\n if (Math.floor(v) !== v) return NaN\n if (v < 0) return NaN\n return v\n}\n\nfunction sumForgiving (range) {\n return range.reduce(function (a, x) { return a + (isFinite(x.value) ? x.value : 0) }, 0)\n}\n\nfunction sumOrNaN (range) {\n return range.reduce(function (a, x) { return a + uintOrNaN(x.value) }, 0)\n}\n\nvar BLANK_OUTPUT = outputBytes({})\n\nfunction finalize (inputs, outputs, feeRate) {\n var bytesAccum = transactionBytes(inputs, outputs)\n var feeAfterExtraOutput = feeRate * (bytesAccum + BLANK_OUTPUT)\n var remainderAfterExtraOutput = sumOrNaN(inputs) - (sumOrNaN(outputs) + feeAfterExtraOutput)\n\n // is it worth a change output?\n if (remainderAfterExtraOutput > dustThreshold({}, feeRate)) {\n outputs = outputs.concat({ value: remainderAfterExtraOutput })\n }\n\n var fee = sumOrNaN(inputs) - sumOrNaN(outputs)\n if (!isFinite(fee)) return { fee: feeRate * bytesAccum }\n\n return {\n inputs: inputs,\n outputs: outputs,\n fee: fee\n }\n}\n\nmodule.exports = {\n dustThreshold: dustThreshold,\n finalize: finalize,\n inputBytes: inputBytes,\n outputBytes: outputBytes,\n sumOrNaN: sumOrNaN,\n sumForgiving: sumForgiving,\n transactionBytes: transactionBytes,\n uintOrNaN: uintOrNaN\n}\n","var utils = require('./utils')\n\n// add inputs until we reach or surpass the target value (or deplete)\n// worst-case: O(n)\nmodule.exports = function accumulative (utxos, outputs, feeRate) {\n if (!isFinite(utils.uintOrNaN(feeRate))) return {}\n var bytesAccum = utils.transactionBytes([], outputs)\n\n var inAccum = 0\n var inputs = []\n var outAccum = utils.sumOrNaN(outputs)\n\n for (var i = 0; i < utxos.length; ++i) {\n var utxo = utxos[i]\n var utxoBytes = utils.inputBytes(utxo)\n var utxoFee = feeRate * utxoBytes\n var utxoValue = utils.uintOrNaN(utxo.value)\n\n // skip detrimental input\n if (utxoFee > utxo.value) {\n if (i === utxos.length - 1) return { fee: feeRate * (bytesAccum + utxoBytes) }\n continue\n }\n\n bytesAccum += utxoBytes\n inAccum += utxoValue\n inputs.push(utxo)\n\n var fee = feeRate * bytesAccum\n\n // go again?\n if (inAccum < outAccum + fee) continue\n\n return utils.finalize(inputs, outputs, feeRate)\n }\n\n return { fee: feeRate * bytesAccum }\n}\n","import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset } from '@xchainjs/xchain-util'\nimport {\n BitgoProvider,\n BlockcypherNetwork,\n BlockcypherProvider,\n SochainNetwork,\n SochainProvider,\n UtxoOnlineDataProviders,\n} from '@xchainjs/xchain-utxo-providers'\n/**\n * Minimum transaction fee for Dogecoin transactions.\n * Defined as 100000 satoshi/kB.\n * @see https://github.com/dogecoin/dogecoin/blob/master/src/validation.h#L58\n */\nexport const MIN_TX_FEE = 100000\n\n/**\n * Decimal places for Dogecoin.\n */\nexport const DOGE_DECIMAL = 8\n\n/**\n * Lower fee bound for Dogecoin transactions.\n * Referenced from Dogecoin fee recommendation documentation.\n * @see https://github.com/dogecoin/dogecoin/blob/master/doc/fee-recommendation.md\n */\nexport const LOWER_FEE_BOUND = 100\n\n/**\n * Upper fee bound for Dogecoin transactions.\n * Referenced from Dogecoin fee recommendation documentation.\n * @see https://github.com/dogecoin/dogecoin/blob/master/doc/fee-recommendation.md\n */\nexport const UPPER_FEE_BOUND = 20_000_000\n\n/**\n * Chain identifier for Dogecoin.\n */\nexport const DOGEChain = 'DOGE' as const\n\n/**\n * Base asset object for Dogecoin.\n * Represents the Dogecoin asset in various contexts.\n */\nexport const AssetDOGE: Asset = { chain: DOGEChain, symbol: 'DOGE', ticker: 'DOGE', synth: false }\n\n/**\n * Explorer provider for Dogecoin mainnet and testnet.\n * Provides URLs for exploring Dogecoin transactions and addresses.\n */\nconst DOGE_MAINNET_EXPLORER = new ExplorerProvider(\n 'https://blockchair.com/dogecoin',\n 'https://blockchair.com/dogecoin/address/%%ADDRESS%%',\n 'https://blockchair.com/dogecoin/transaction/%%TX_ID%%',\n)\nconst DOGE_TESTNET_EXPLORER = new ExplorerProvider(\n 'https://blockexplorer.one/dogecoin/testnet',\n 'https://blockexplorer.one/dogecoin/testnet/address/%%ADDRESS%%',\n 'https://blockexplorer.one/dogecoin/testnet/tx/%%TX_ID%%',\n)\nexport const blockstreamExplorerProviders = {\n [Network.Testnet]: DOGE_TESTNET_EXPLORER,\n [Network.Stagenet]: DOGE_MAINNET_EXPLORER,\n [Network.Mainnet]: DOGE_MAINNET_EXPLORER,\n}\n\n/**\n * Sochain data providers for Dogecoin mainnet and testnet.\n * Provides API access to Sochain for Dogecoin.\n */\nconst testnetSochainProvider = new SochainProvider(\n 'https://sochain.com/api/v3',\n process.env.SOCHAIN_API_KEY || '',\n DOGEChain,\n AssetDOGE,\n 8,\n SochainNetwork.DOGETEST,\n)\nconst mainnetSochainProvider = new SochainProvider(\n 'https://sochain.com/api/v3',\n process.env.SOCHAIN_API_KEY || '',\n DOGEChain,\n AssetDOGE,\n 8,\n SochainNetwork.DOGE,\n)\nexport const sochainDataProviders = {\n [Network.Testnet]: testnetSochainProvider,\n [Network.Stagenet]: mainnetSochainProvider,\n [Network.Mainnet]: mainnetSochainProvider,\n}\n\n/**\n * Blockcypher data providers for Dogecoin mainnet and stagenet.\n * Provides API access to Blockcypher for Dogecoin.\n */\nconst mainnetBlockcypherProvider = new BlockcypherProvider(\n 'https://api.blockcypher.com/v1',\n DOGEChain,\n AssetDOGE,\n 8,\n BlockcypherNetwork.DOGE,\n process.env.BLOCKCYPHER_API_KEY || '',\n)\nexport const blockcypherDataProviders = {\n [Network.Testnet]: undefined, //no provider here\n [Network.Stagenet]: mainnetBlockcypherProvider,\n [Network.Mainnet]: mainnetBlockcypherProvider,\n}\n\n/**\n * Bitgo data providers for Dogecoin mainnet and stagenet.\n * Provides API access to Bitgo for Dogecoin.\n */\nconst mainnetBitgoProvider = new BitgoProvider({\n baseUrl: 'https://app.bitgo.com',\n chain: DOGEChain,\n})\n\nexport const BitgoProviders: UtxoOnlineDataProviders = {\n [Network.Testnet]: undefined,\n [Network.Stagenet]: mainnetBitgoProvider,\n [Network.Mainnet]: mainnetBitgoProvider,\n}\n","/**\n * Import statements for required modules and types.\n */\nimport { Network } from '@xchainjs/xchain-client'\nimport { Address } from '@xchainjs/xchain-util'\nimport * as Dogecoin from 'bitcoinjs-lib' // Importing bitcoinjs-lib for Dogecoin operations\nimport coininfo from 'coininfo' // Importing coininfo for cryptocurrency information retrieval\n\n/**\n * Constant values representing transaction sizes and lengths.\n */\nexport const TX_EMPTY_SIZE = 4 + 1 + 1 + 4 // 10\nexport const TX_INPUT_BASE = 32 + 4 + 1 + 4 // 41\nexport const TX_INPUT_PUBKEYHASH = 107\nexport const TX_OUTPUT_BASE = 8 + 1 // 9\nexport const TX_OUTPUT_PUBKEYHASH = 25\n\n/**\n * Calculate the number of bytes required for an input.\n *\n * @returns {number} The number of bytes required for an input.\n */\nexport function inputBytes(): number {\n return TX_INPUT_BASE + TX_INPUT_PUBKEYHASH\n}\n\n/**\n * Calculate the average value of an array.\n *\n * @param {number[]} array - The array of numbers.\n * @returns {number} The average value of the array.\n */\nexport function arrayAverage(array: number[]): number {\n let sum = 0\n array.forEach((value) => (sum += value))\n return sum / array.length\n}\n\n/**\n * Get the Dogecoin network configuration to be used with bitcoinjs.\n *\n * @param {Network} network - The network type.\n * @returns {Dogecoin.networks.Network} The Dogecoin network configuration.\n */\nexport const dogeNetwork = (network: Network): Dogecoin.networks.Network => {\n switch (network) {\n case Network.Mainnet:\n return coininfo.dogecoin.main.toBitcoinJS()\n case Network.Stagenet:\n return coininfo.dogecoin.main.toBitcoinJS()\n case Network.Testnet: {\n // Latest coininfo on NPM doesn't contain dogetest config information\n const bip32 = {\n private: 0x04358394,\n public: 0x043587cf,\n }\n const test = coininfo.dogecoin.test\n test.versions.bip32 = bip32\n return test.toBitcoinJS()\n }\n }\n}\n\n/**\n * Validate a Dogecoin address.\n *\n * @param {Address} address - The Dogecoin address to validate.\n * @param {Network} network - The network type.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\nexport const validateAddress = (address: Address, network: Network): boolean => {\n try {\n Dogecoin.address.toOutputScript(address, dogeNetwork(network))\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * Get the address prefix based on the network.\n *\n * @param {Network} network - The network type.\n * @returns {string} The address prefix based on the network.\n */\nexport const getPrefix = (network: Network) => {\n switch (network) {\n case Network.Mainnet:\n case Network.Stagenet:\n return ''\n case Network.Testnet:\n return 'n'\n }\n}\n","import { AssetInfo, FeeRate, Network, PreparedTx, TxParams } from '@xchainjs/xchain-client'\nimport { Address } from '@xchainjs/xchain-util'\nimport { Client as UTXOClient, UTXO, UtxoClientParams } from '@xchainjs/xchain-utxo'\nimport * as Dogecoin from 'bitcoinjs-lib'\nimport accumulative from 'coinselect/accumulative'\n\nimport {\n AssetDOGE,\n BitgoProviders,\n DOGEChain,\n DOGE_DECIMAL,\n LOWER_FEE_BOUND,\n MIN_TX_FEE,\n UPPER_FEE_BOUND,\n blockcypherDataProviders,\n blockstreamExplorerProviders,\n} from './const'\nimport { LedgerTxInfo, LedgerTxInfoParams } from './types/ledger'\nimport * as Utils from './utils'\n/**\n * Default parameters for Dogecoin UTXO client.\n * Contains default values for network, phrase, explorer providers, data providers, root derivation paths, and fee bounds.\n */\nexport const defaultDogeParams: UtxoClientParams = {\n network: Network.Mainnet, // Default network is Mainnet\n phrase: '', // Default empty phrase\n explorerProviders: blockstreamExplorerProviders, // Default explorer providers\n dataProviders: [BitgoProviders, blockcypherDataProviders], // Default data providers\n rootDerivationPaths: {\n [Network.Mainnet]: `m/44'/3'/0'/0/`, // Default root derivation path for Mainnet\n [Network.Stagenet]: `m/44'/3'/0'/0/`, // Default root derivation path for Stagenet\n [Network.Testnet]: `m/44'/1'/0'/0/`, // Default root derivation path for Testnet\n },\n feeBounds: {\n lower: LOWER_FEE_BOUND, // Default lower fee bound\n upper: UPPER_FEE_BOUND, // Default upper fee bound\n },\n}\n/**\n * Custom Dogecoin client extending UTXOClient.\n * Implements methods for Dogecoin-specific functionality.\n */\nabstract class Client extends UTXOClient {\n /**\n * Constructor for initializing the Dogecoin client.\n * Initializes the client with the provided parameters.\n *\n * @param {DogecoinClientParams} params Parameters for initializing the Dogecoin client.\n */\n constructor(params = defaultDogeParams) {\n super(DOGEChain, {\n // Call the superclass constructor with DOGEChain identifier and provided parameters\n network: params.network,\n rootDerivationPaths: params.rootDerivationPaths,\n phrase: params.phrase,\n feeBounds: params.feeBounds,\n explorerProviders: params.explorerProviders,\n dataProviders: params.dataProviders,\n })\n }\n\n /**\n * Get Dogecoin asset information.\n *\n * @returns {AssetInfo} Dogecoin asset information.\n */\n getAssetInfo(): AssetInfo {\n const assetInfo: AssetInfo = {\n asset: AssetDOGE,\n decimal: DOGE_DECIMAL,\n }\n return assetInfo\n }\n\n /**\n * Validate the given address.\n *\n * @param {Address} address The Dogecoin address to validate.\n * @returns {boolean} `true` if the address is valid, otherwise `false`.\n */\n validateAddress(address: string): boolean {\n return Utils.validateAddress(address, this.network)\n }\n\n /**\n * Builds a Dogecoin transaction (PSBT).\n *\n * Builds a Partially Signed Bitcoin Transaction (PSBT) with the specified parameters.\n * @param {BuildParams} params The transaction build options including sender, recipient, amount, memo, and fee rate.\n * @returns {Transaction} A promise that resolves to the built PSBT and the unspent transaction outputs (UTXOs) used in the transaction.\n * @deprecated This method is deprecated. Use the `transfer` method instead.\n */\n public buildTx = async ({\n amount,\n recipient,\n memo,\n feeRate,\n sender,\n }: TxParams & {\n feeRate: FeeRate\n sender: Address\n }): Promise<{ psbt: Dogecoin.Psbt; utxos: UTXO[] }> => {\n // Validate the recipient address\n if (!this.validateAddress(recipient)) throw new Error('Invalid address')\n\n // Scan unspent transaction outputs (UTXOs) for the sender's address\n const utxos = await this.scanUTXOs(sender, false)\n // Throw an error if no UTXOs are found\n if (utxos.length === 0) throw new Error('No UTXOs to send')\n\n // Round the fee rate to the nearest whole number\n const feeRateWhole = Number(feeRate.toFixed(0))\n // Compile the memo if provided\n const compiledMemo = memo ? this.compileMemo(memo) : null\n\n const targetOutputs = []\n //1. Add output for the recipient\n targetOutputs.push({\n address: recipient,\n value: amount.amount().toNumber(),\n })\n //2. Add output for the memo (if provided)\n if (compiledMemo) {\n targetOutputs.push({ script: compiledMemo, value: 0 })\n }\n // Calculate the inputs and outputs for the transaction\n const { inputs, outputs } = accumulative(utxos, targetOutputs, feeRateWhole)\n\n // Throw an error if no solution was found for inputs and outputs\n if (!inputs || !outputs) throw new Error('Balance insufficient for transaction')\n\n // Create a new PSBT for building the transaction\n const psbt = new Dogecoin.Psbt({ network: Utils.dogeNetwork(this.network) })\n // Set the maximum fee rate for the PSBT\n psbt.setMaximumFeeRate(7500000)\n\n // Add inputs to the PSBT\n for (const utxo of inputs) {\n psbt.addInput({\n hash: utxo.hash,\n index: utxo.index,\n nonWitnessUtxo: Buffer.from(utxo.txHex, 'hex'),\n })\n }\n // Outputs\n outputs.forEach((output: Dogecoin.PsbtTxOutput) => {\n if (!output.address) {\n //an empty address means this is the change address\n output.address = sender\n }\n if (!output.script) {\n psbt.addOutput(output)\n } else {\n //we need to add the compiled memo this way to\n //avoid dust error tx when accumulating memo output with 0 value\n if (compiledMemo) {\n psbt.addOutput({ script: compiledMemo, value: 0 })\n }\n }\n })\n\n return { psbt, utxos }\n }\n\n /**\n * Asynchronously creates transaction information for ledger sign.\n *\n * Builds a transaction (PSBT) and prepares necessary information for ledger signing.\n *\n * @param {LedgerTxInfoParams} params The parameters for creating transaction information.\n * @returns {LedgerTxInfo} A promise that resolves to the transaction information used for ledger sign.\n */\n public async createTxInfo(params: LedgerTxInfoParams): Promise<LedgerTxInfo> {\n // Build the transaction (PSBT) and obtain the unspent transaction outputs (UTXOs)\n const { psbt, utxos } = await this.buildTx(params)\n // Construct the ledger transaction information object\n const ledgerTxInfo: LedgerTxInfo = {\n utxos,\n newTxHex: psbt.data.globalMap.unsignedTx.toBuffer().toString('hex'), // Convert unsigned transaction to hexadecimal string\n }\n return ledgerTxInfo\n }\n\n /**\n * Asynchronously prepares a transaction for transfer.\n *\n * Builds a transaction (PSBT) with the specified transfer options.\n * @param {TxParams & { sender: Address; feeRate: FeeRate; spendPendingUTXO?: boolean }} params The transfer options including sender address, fee rate, and optional flag for spending pending UTXOs.\n * @returns {Promise<PreparedTx>} A promise that resolves to the raw unsigned transaction (PSBT).\n */\n async prepareTx({\n sender,\n memo,\n amount,\n recipient,\n feeRate,\n }: TxParams & {\n sender: Address\n feeRate: FeeRate\n spendPendingUTXO?: boolean\n }): Promise<PreparedTx> {\n // Build the transaction (PSBT) with the specified transfer options\n const { psbt } = await this.buildTx({\n sender,\n recipient,\n amount,\n feeRate,\n memo,\n })\n\n // Return the raw unsigned transaction (PSBT)\n return { rawUnsignedTx: psbt.toBase64() }\n }\n\n /**\n * Compiles the memo into a buffer for inclusion in a Dogecoin transaction.\n *\n * @param {string} memo The memo to be compiled.\n * @returns {Buffer} The compiled memo as a buffer.\n */\n protected compileMemo(memo: string): Buffer {\n // Convert the memo to a buffer\n const data = Buffer.from(memo, 'utf8')\n // Compile the OP_RETURN script with the memo data\n return Dogecoin.script.compile([Dogecoin.opcodes.OP_RETURN, data])\n }\n\n /**\n * Calculates the transaction fee based on the provided UTXOs, fee rate, and optional data.\n *\n * @param {UTXO[]} inputs The unspent transaction outputs (UTXOs) used as inputs.\n * @param {FeeRate} feeRate The fee rate for the transaction.\n * @param {Buffer | null} data The compiled memo (optional).\n * @returns {number} The calculated transaction fee.\n */\n protected getFeeFromUtxos(inputs: UTXO[], feeRate: FeeRate, data: Buffer | null = null): number {\n // Calculate the size of the transaction\n const inputSizeBasedOnInputs =\n inputs.length > 0\n ? inputs.reduce((a) => a + Utils.inputBytes(), 0) + inputs.length // +1 byte for each input signature\n : 0\n // Calculate the sum of transaction size\n let sum =\n Utils.TX_EMPTY_SIZE +\n inputSizeBasedOnInputs +\n Utils.TX_OUTPUT_BASE +\n Utils.TX_OUTPUT_PUBKEYHASH +\n Utils.TX_OUTPUT_BASE +\n Utils.TX_OUTPUT_PUBKEYHASH\n\n // Add additional output size if data is provided\n if (data) {\n sum += Utils.TX_OUTPUT_BASE + data.length\n }\n // Calculate the fee based on the sum of transaction size and the fee rate\n const fee = sum * feeRate\n // Ensure the fee is not less than the minimum transaction fee\n return fee > MIN_TX_FEE ? fee : MIN_TX_FEE\n }\n}\n\nexport { Client }\n","import { FeeOption, FeeRate, TxHash, TxParams, checkFeeBounds } from '@xchainjs/xchain-client'\nimport { getSeed } from '@xchainjs/xchain-crypto'\nimport { Address } from '@xchainjs/xchain-util'\nimport * as Dogecoin from 'bitcoinjs-lib' // Importing the base Doge client\n\nimport { Client } from './client' // Importing utility functions\nimport * as Utils from './utils'\n/**\n * Custom Doge client extended to support keystore functionality\n */\nclass ClientKeystore extends Client {\n /**\n * Get the Dogecoin address.\n *\n * Generates a Dogecoin address using the provided phrase and index.\n * @param {number} index The index of the address to retrieve. Default is 0.\n * @returns {Address} The Dogecoin address.\n * @throws {\"index must be greater than zero\"} Thrown if the index is less than zero.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase is not provided.\n * @throws {\"Address not defined\"} Thrown if failed to create the address from the phrase.\n */\n getAddress(index = 0): Address {\n if (index < 0) {\n throw new Error('index must be greater than zero')\n }\n if (this.phrase) {\n // Get Dogecoin network and keys\n const dogeNetwork = Utils.dogeNetwork(this.network)\n const dogeKeys = this.getDogeKeys(this.phrase, index)\n // Generate Dogecoin address\n const { address } = Dogecoin.payments.p2pkh({\n pubkey: dogeKeys.publicKey,\n network: dogeNetwork,\n })\n if (!address) {\n throw new Error('Address not defined')\n }\n return address\n }\n throw new Error('Phrase must be provided')\n }\n /**\n * @private\n * Get private key.\n *\n * Private function to get keyPair from the this.phrase\n *\n * @param {string} phrase The phrase to be used for generating privkey\n * @returns {ECPairInterface} The privkey generated from the given phrase\n *\n * @throws {\"Could not get private key from phrase\"} Throws an error if failed creating Doge keys from the given phrase\n * */\n private getDogeKeys(phrase: string, index = 0): Dogecoin.ECPairInterface {\n const dogeNetwork = Utils.dogeNetwork(this.network)\n\n const seed = getSeed(phrase)\n const master = Dogecoin.bip32.fromSeed(seed, dogeNetwork).derivePath(this.getFullDerivationPath(index))\n\n if (!master.privateKey) {\n throw new Error('Could not get private key from phrase')\n }\n\n return Dogecoin.ECPair.fromPrivateKey(master.privateKey, { network: dogeNetwork })\n }\n\n /**\n * Get the current address.\n * Asynchronous version of getAddress method.\n * Generates a network-specific key-pair by first converting the buffer to a Wallet-Import-Format (WIF)\n * The address is then decoded into type P2WPKH and returned.\n * @returns {Address} The current address.\n *\n * @throws {\"Phrase must be provided\"} Thrown if phrase has not been set before.\n * @throws {\"Address not defined\"} Thrown if failed creating account from phrase.\n */\n async getAddressAsync(index = 0): Promise<string> {\n return this.getAddress(index)\n }\n\n /**\n * Asynchronously transfers Dogecoin.\n *\n * Builds, signs, and broadcasts a Dogecoin transaction with the specified parameters.\n * @param {TxParams & { feeRate?: FeeRate }} params The transfer parameters including transaction details and optional fee rate.\n * @returns {TxHash} A promise that resolves to the transaction hash once the transfer is completed.\n */\n async transfer(params: TxParams & { feeRate?: FeeRate }): Promise<TxHash> {\n // Determine the fee rate for the transaction, using provided fee rate or fetching it from the network\n const feeRate = params.feeRate || (await this.getFeeRates())[FeeOption.Fast]\n // Check if the fee rate is within the specified fee bounds\n checkFeeBounds(this.feeBounds, feeRate)\n\n // Get the index of the sender's address or use the default index (0)\n const fromAddressIndex = params?.walletIndex || 0\n // Prepare the transaction by building it with the specified parameters\n const { rawUnsignedTx } = await this.prepareTx({\n ...params,\n feeRate,\n sender: await this.getAddressAsync(fromAddressIndex),\n })\n // Get the Dogecoin keys for signing the transaction\n const dogeKeys = this.getDogeKeys(this.phrase, fromAddressIndex)\n // Create a Partially Signed Bitcoin Transaction (PSBT) from the raw unsigned transaction\n const psbt = Dogecoin.Psbt.fromBase64(rawUnsignedTx, { maximumFeeRate: 7500000 })\n // Sign all inputs of the transaction with the Dogecoin keys\n psbt.signAllInputs(dogeKeys)\n // Finalize all inputs of the transaction\n psbt.finalizeAllInputs()\n // Extract the signed transaction and format it to hexadecimal\n const txHex = psbt.extractTransaction().toHex()\n // Broadcast the signed transaction to the Dogecoin network and return the transaction hash\n return await this.roundRobinBroadcastTx(txHex)\n }\n}\nexport { ClientKeystore }\n","import AppBtc from '@ledgerhq/hw-app-btc'\nimport { Transaction } from '@ledgerhq/hw-app-btc/lib/types'\nimport { FeeOption, FeeRate, TxHash, TxParams } from '@xchainjs/xchain-client'\nimport { Address } from '@xchainjs/xchain-util'\nimport { UtxoClientParams } from '@xchainjs/xchain-utxo'\n\nimport { Client } from './client'\n/**\n * Custom Ledger Bitcoin client\n */\nclass ClientLedger extends Client {\n // Reference to the Ledger transport object\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private transport: any // TODO: Parametrize\n private app: AppBtc | undefined\n\n // Constructor\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(params: UtxoClientParams & { transport: any }) {\n super(params)\n this.transport = params.transport\n }\n\n // Get the Ledger Doge application instance\n public async getApp(): Promise<AppBtc> {\n if (this.app) {\n return this.app\n }\n this.app = new AppBtc({ transport: this.transport, currency: 'dogecoin' })\n return this.app\n }\n\n // Get the current address synchronously\n getAddress(): string {\n throw Error('Sync method not supported for Ledger')\n }\n\n // Get the current address asynchronously\n async getAddressAsync(index = 0, verify = false): Promise<Address> {\n const app = await this.getApp()\n const result = await app.getWalletPublicKey(this.getFullDerivationPath(index), {\n format: 'legacy',\n verify,\n })\n return result.bitcoinAddress\n }\n\n // Transfer Doge from Ledger\n async transfer(params: TxParams & { feeRate?: FeeRate }): Promise<TxHash> {\n const app = await this.getApp()\n const fromAddressIndex = params?.walletIndex || 0\n const derivePath = this.getFullDerivationPath(fromAddressIndex)\n // Get fee rate\n const feeRate = params.feeRate || (await this.getFeeRates())[FeeOption.Fast]\n // Get sender address\n const sender = await this.getAddressAsync(fromAddressIndex)\n // Prepare transaction\n const { psbt, utxos } = await this.buildTx({\n ...params,\n feeRate,\n sender,\n })\n // Prepare Ledger inputs\n const inputs: Array<[Transaction, number, string | null, number | null]> = utxos.map(({ txHex, hash, index }) => {\n if (!txHex) {\n throw Error(`Missing 'txHex' for UTXO (txHash ${hash})`)\n }\n const splittedTx = app.splitTransaction(txHex, false /* no segwit support */)\n return [splittedTx, index, null, null]\n })\n\n const associatedKeysets: string[] = inputs.map((_) => derivePath)\n const newTxHex = psbt.data.globalMap.unsignedTx.toBuffer().toString('hex')\n const newTx: Transaction = app.splitTransaction(newTxHex, true)\n\n const outputScriptHex = app.serializeTransactionOutputs(newTx).toString('hex')\n\n const txHex = await app.createPaymentTransaction({\n inputs,\n associatedKeysets,\n outputScriptHex,\n // no additionals - similar to https://github.com/shapeshift/hdwallet/blob/a61234eb83081a4de54750b8965b873b15803a03/packages/hdwallet-ledger/src/bitcoin.ts#L222\n additionals: [],\n })\n\n const txHash = await this.broadcastTx(txHex)\n // Throw error if no transaction hash is received\n if (!txHash) {\n throw Error('No Tx hash')\n }\n\n return txHash\n }\n}\nexport { ClientLedger }\n","import { Network } from '@xchainjs/xchain-client'\n\n/**\n * Function to get the URL for sending a transaction based on the network and Blockcypher URL.\n * Throws an error if the network is 'testnet' since the testnet URL is not available for Blockcypher.\n * @param {object} params Object containing the Blockcypher URL and network type.\n * @param {string} params.blockcypherUrl The Blockcypher URL.\n * @param {Network} params.network The network type (Mainnet, Testnet, or Stagenet).\n * @returns {string} The URL for sending a transaction.\n */\nexport const getSendTxUrl = ({ blockcypherUrl, network }: { blockcypherUrl: string; network: Network }): string => {\n if (network === 'testnet') {\n // Check if the network is testnet\n throw new Error('Testnet URL is not available for Blockcypher') // Throw an error if testnet URL is requested\n } else {\n return `${blockcypherUrl}/doge/main/txs/push` // Return the mainnet URL for sending a transaction\n }\n}\n"],"names":["TX_EMPTY_SIZE","TX_INPUT_BASE","TX_INPUT_PUBKEYHASH","TX_OUTPUT_BASE","TX_OUTPUT_PUBKEYHASH","inputBytes","utils","require$$0","ExplorerProvider","Network","SochainProvider","SochainNetwork","BlockcypherProvider","BlockcypherNetwork","BitgoProvider","coininfo","Dogecoin","UTXOClient","accumulative","Utils.dogeNetwork","Utils.validateAddress","Utils.inputBytes","Utils.TX_EMPTY_SIZE","Utils.TX_OUTPUT_BASE","Utils.TX_OUTPUT_PUBKEYHASH","dogeNetwork","getSeed","FeeOption","checkFeeBounds","AppBtc"],"mappings":"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"}